New Upstream Release - kodi-peripheral-joystick

Ready changes

Summary

Merged new upstream version: 20.1.11+ds (was: 20.1.3+ds).

Resulting package

Built on 2023-08-17T15:23 (took 6m39s)

The resulting binary packages can be installed (if you have the apt repository enabled) by running one of:

apt install -t fresh-releases kodi-peripheral-joystick-dbgsymapt install -t fresh-releases kodi-peripheral-joystick

Lintian Result

Diff

diff --git a/.github/workflows/sync-addon-metadata-translations.yml b/.github/workflows/sync-addon-metadata-translations.yml
new file mode 100644
index 0000000..6758824
--- /dev/null
+++ b/.github/workflows/sync-addon-metadata-translations.yml
@@ -0,0 +1,58 @@
+name: Sync addon metadata translations
+
+on:
+  push:
+    branches: [ Matrix, Nexus ]
+    paths:
+      - '**addon.xml.in'
+      - '**resource.language.**strings.po'
+
+jobs:
+  default:
+    if: github.repository == 'xbmc/peripheral.joystick'
+    runs-on: ubuntu-latest
+
+    strategy:
+
+      fail-fast: false
+      matrix:
+        python-version: [ 3.9 ]
+
+    steps:
+
+      - name: Checkout repository
+        uses: actions/checkout@v2
+        with:
+          path: project
+
+      - name: Checkout sync_addon_metadata_translations repository
+        uses: actions/checkout@v2
+        with:
+          repository: xbmc/sync_addon_metadata_translations
+          path: sync_addon_metadata_translations
+
+      - name: Set up Python ${{ matrix.python-version }}
+        uses: actions/setup-python@v2
+        with:
+          python-version: ${{ matrix.python-version }}
+
+      - name: Install dependencies
+        run: |
+          python -m pip install --upgrade pip
+          python -m pip install sync_addon_metadata_translations/
+
+      - name: Run sync-addon-metadata-translations
+        run: |
+          sync-addon-metadata-translations
+        working-directory: ./project
+
+      - name: Create PR for sync-addon-metadata-translations changes
+        uses: peter-evans/create-pull-request@v3.10.0
+        with:
+          commit-message: Sync of addon metadata translations
+          title: Sync of addon metadata translations
+          body: Sync of addon metadata translations triggered by ${{ github.sha }}
+          branch: amt-sync
+          delete-branch: true
+          path: ./project
+          reviewers: gade01
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..01cbcd0
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,51 @@
+# build artifacts
+build/
+peripheral.*/addon.xml
+peripheral.*/resources/settings.xml
+
+# Debian build files
+debian/changelog
+debian/files
+debian/*.log
+debian/*.substvars
+debian/.debhelper/
+debian/tmp/
+debian/kodi-peripheral-*/
+obj-x86_64-linux-gnu/
+
+# commonly used editors
+# vim
+*.swp
+
+# Eclipse
+*.project
+*.cproject
+.classpath
+*.sublime-*
+.settings/
+
+# KDevelop 4
+*.kdev4
+
+# gedit
+*~
+
+# CLion
+/.idea
+
+# clion
+.idea/
+
+# to prevent add after a "git format-patch VALUE" and "git add ." call
+/*.patch
+
+# Visual Studio Code
+.vscode
+
+# to prevent add if project code opened by Visual Studio over CMake file
+.vs/
+
+# General MacOS
+.DS_Store
+.AppleDouble
+.LSOverride
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0bb74ba..7289951 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,6 +5,8 @@ list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
 
 include(CheckIncludeFiles)
 
+find_package(PkgConfig)
+
 # --- Add-on Dependencies ------------------------------------------------------
 
 find_package(Kodi REQUIRED)
@@ -200,13 +202,13 @@ endif()
 # --- udev ---------------------------------------------------------------------
 
 if(CORE_SYSTEM_NAME STREQUAL linux)
-  find_package(udev REQUIRED)
+  find_package(UDEV REQUIRED)
 endif()
 
 if(UDEV_FOUND)
   include_directories(${UDEV_INCLUDE_DIRS})
 
-  add_definitions(-DHAVE_UDEV)
+  add_definitions(${UDEV_DEFINITIONS})
 
   list(APPEND JOYSTICK_SOURCES src/api/udev/JoystickInterfaceUdev.cpp
                                src/api/udev/JoystickUdev.cpp)
diff --git a/cmake/FindUDEV.cmake b/cmake/FindUDEV.cmake
new file mode 100644
index 0000000..a884025
--- /dev/null
+++ b/cmake/FindUDEV.cmake
@@ -0,0 +1,47 @@
+#.rst:
+# FindUDEV
+# -------
+# Finds the UDEV library
+#
+# This will define the following variables::
+#
+# UDEV_FOUND - system has UDEV
+# UDEV_INCLUDE_DIRS - the UDEV include directory
+# UDEV_LIBRARIES - the UDEV libraries
+# UDEV_DEFINITIONS - the UDEV definitions
+#
+# and the following imported targets::
+#
+#   UDEV::UDEV   - The UDEV library
+
+if(PKG_CONFIG_FOUND)
+  pkg_check_modules(PC_UDEV libudev QUIET)
+endif()
+
+find_path(UDEV_INCLUDE_DIR NAMES libudev.h
+                           PATHS ${PC_UDEV_INCLUDEDIR})
+find_library(UDEV_LIBRARY NAMES udev
+                          PATHS ${PC_UDEV_LIBDIR})
+
+set(UDEV_VERSION ${PC_UDEV_VERSION})
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(UDEV
+                                  REQUIRED_VARS UDEV_LIBRARY UDEV_INCLUDE_DIR
+                                  VERSION_VAR UDEV_VERSION)
+
+if(UDEV_FOUND)
+  set(UDEV_LIBRARIES ${UDEV_LIBRARY})
+  set(UDEV_INCLUDE_DIRS ${UDEV_INCLUDE_DIR})
+  set(UDEV_DEFINITIONS -DHAVE_LIBUDEV=1)
+
+  if(NOT TARGET UDEV::UDEV)
+    add_library(UDEV::UDEV UNKNOWN IMPORTED)
+    set_target_properties(UDEV::UDEV PROPERTIES
+                                   IMPORTED_LOCATION "${UDEV_LIBRARY}"
+                                   INTERFACE_INCLUDE_DIRECTORIES "${UDEV_INCLUDE_DIR}"
+                                   INTERFACE_COMPILE_DEFINITIONS HAVE_LIBUDEV=1)
+  endif()
+endif()
+
+mark_as_advanced(UDEV_INCLUDE_DIR UDEV_LIBRARY)
diff --git a/cmake/Findudev.cmake b/cmake/Findudev.cmake
deleted file mode 100644
index 89d5312..0000000
--- a/cmake/Findudev.cmake
+++ /dev/null
@@ -1,77 +0,0 @@
-# - try to find the udev library
-#
-# Cache Variables: (probably not for direct use in your scripts)
-#  UDEV_INCLUDE_DIR
-#  UDEV_SOURCE_DIR
-#  UDEV_LIBRARY
-#
-# Non-cache variables you might use in your CMakeLists.txt:
-#  UDEV_FOUND
-#  UDEV_INCLUDE_DIRS
-#  UDEV_LIBRARIES
-#
-# Requires these CMake modules:
-#  FindPackageHandleStandardArgs (known included with CMake >=2.6.2)
-#
-# Original Author:
-# 2014 Kevin M. Godby <kevin@godby.org>
-#
-# Distributed under the Boost Software License, Version 1.0.
-# (See accompanying file LICENSE_1_0.txt or copy at
-# http://www.boost.org/LICENSE_1_0.txt)
-
-set(UDEV_ROOT_DIR
-    "${UDEV_ROOT_DIR}"
-	CACHE
-	PATH
-    "Directory to search for udev")
-
-find_package(PkgConfig QUIET)
-if(PKG_CONFIG_FOUND)
-	pkg_check_modules(PC_LIBUDEV libudev)
-endif()
-
-find_library(UDEV_LIBRARY
-	NAMES
-	udev
-	PATHS
-	${PC_LIBUDEV_LIBRARY_DIRS}
-	${PC_LIBUDEV_LIBDIR}
-	HINTS
-	"${UDEV_ROOT_DIR}"
-	PATH_SUFFIXES
-	lib
-	)
-
-get_filename_component(_libdir "${UDEV_LIBRARY}" PATH)
-
-find_path(UDEV_INCLUDE_DIR
-	NAMES
-	libudev.h
-	PATHS
-	${PC_LIBUDEV_INCLUDE_DIRS}
-	${PC_LIBUDEV_INCLUDEDIR}
-	HINTS
-	"${_libdir}"
-	"${_libdir}/.."
-	"${UDEV_ROOT_DIR}"
-	PATH_SUFFIXES
-	include
-	)
-
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(udev
-	DEFAULT_MSG
-	UDEV_LIBRARY
-	UDEV_INCLUDE_DIR
-	)
-
-if(UDEV_FOUND)
-	list(APPEND UDEV_LIBRARIES ${UDEV_LIBRARY})
-	list(APPEND UDEV_INCLUDE_DIRS ${UDEV_INCLUDE_DIR})
-	mark_as_advanced(UDEV_ROOT_DIR)
-endif()
-
-mark_as_advanced(UDEV_INCLUDE_DIR
-	UDEV_LIBRARY)
-
diff --git a/debian/changelog b/debian/changelog
index bb8833c..e08318c 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+kodi-peripheral-joystick (20.1.11+ds-1) UNRELEASED; urgency=low
+
+  * New upstream release.
+
+ -- Debian Janitor <janitor@jelmer.uk>  Thu, 17 Aug 2023 15:17:58 -0000
+
 kodi-peripheral-joystick (20.1.3+ds-1) unstable; urgency=medium
 
   * New upstream version 20.1.3+ds
diff --git a/peripheral.joystick/addon.xml.in b/peripheral.joystick/addon.xml.in
index 61575c8..84e7d42 100644
--- a/peripheral.joystick/addon.xml.in
+++ b/peripheral.joystick/addon.xml.in
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <addon
   id="peripheral.joystick"
-  version="20.1.3"
+  version="20.1.11"
   name="Joystick Support"
   provider-name="Team Kodi">
   <requires>@ADDON_DEPENDS@</requires>
@@ -39,14 +39,14 @@
     <summary lang="zh_CN">Kodi 游戏杆库</summary>
     <description lang="ca_ES">Aquesta llibreria proporciona controladors de joystick i mapes de botons. S&apos;admeten diverses API de joystick, incloses DirectX, XInput, SDL i l&apos;API Joystick de Linux.</description>
     <description lang="da_DK">Dette bibliotek indeholder joystick-drivere og knapgrupperinger. Flere joystick-API&apos;er understøttes, herunder DirectX, XInput, SDL og Linux Joystick API.</description>
-    <description lang="de_DE">Diese Bibliothek enthält Joystick-Treiber und Schaltflächenzuordnungen. Es werden mehrere Joystick-APIs unterstützt, darunter DirectX, XInput, SDL und die Linux-Joystick-API.</description>
+    <description lang="de_DE">Diese Bibliothek enthält Joysticktreiber und Schaltflächenzuordnungen. Es werden mehrere Joystick-APIs unterstützt, darunter DirectX, XInput, SDL und die Linux-Joystick-API.</description>
     <description lang="en_GB">This library provides joystick drivers and button maps. Multiple joystick APIs are supported, including DirectX, XInput, SDL and the Linux Joystick API.</description>
     <description lang="es_ES">Esta librería otorga drivers de joystick y mapeo de botones. Soporta múltiples APIs de joystick, incluyendo DirectX, XInput, SDL y la API de Joystick de Linux.</description>
     <description lang="es_MX">Esta biblioteca provee controladores de joysticks y mapas de botones. Múltiples APIs de joystick están soportadas, incluyendo DirectX, XInput, SDL y la Linux Joystick API.</description>
     <description lang="fi_FI">Tämä kirjasto sisältää peliohjaimien ajureita ja painikemäärtiyksiä. Useita ohjainrajapintoja tuetaan, kuten mm. DirectX, XInput, SDL ja Linux Joystick API.</description>
     <description lang="fr_FR">Cette bibliothèque fournit des pilotes de joystick et les maps de boutons. Plusieurs API de joystick sont prises en charge, notamment DirectX, XInput, SDL et l’API Linux Joystick.</description>
     <description lang="hr_HR">Ova biblioteka omogućuje upravljačke programe igračih palica i mapiranje tipki. Više API igračih palica je podržano, uključujući DirectX, XInput, SDL i Linux Joystick API.</description>
-    <description lang="it_IT">Questa libreria fornisce i driver del joystick e le mappe dei pulsanti. Sono supportate più API joystick, tra cui DirectX, XInput, SDL e l&apos;API Joystick Linux.</description>
+    <description lang="it_IT">Questa libreria fornisce i driver del joystick e le mappe dei pulsanti. Sono supportate più API per joystick, tra cui DirectX, XInput, SDL e Linux Joystick API.</description>
     <description lang="ko_KR">이 라이브러리는 조이스틱 드라이버와 버튼 맵을 제공합니다. DirectX, XInput, SDL 및 Linux Joystick API를 비롯한 여러 조이스틱 API가 지원됩니다.</description>
     <description lang="lv_LV">Šajā katalogā ir pieejami kursorsviras draiveri un pogu izkārtojuma kartes. Tiek atbalstītas vairākas kursorsviras API, tostarp DirectX, XInput, SDL un Linux kursorsviras API.</description>
     <description lang="nb_NO">Dette biblioteket inneholder joystick-drivere og knappkartlegging. Flere joystick-APIer støttes, blant annet DirectX, XInput, SDL og Linux Joystick API.</description>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/GCController/Micro_Gamepad_6b.xml b/peripheral.joystick/resources/buttonmaps/xml/GCController/Micro_Gamepad_6b.xml
deleted file mode 100644
index 1fb6171..0000000
--- a/peripheral.joystick/resources/buttonmaps/xml/GCController/Micro_Gamepad_6b.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" ?>
-<buttonmap>
-    <device name="Micro Gamepad" provider="GCController" buttoncount="6">
-        <controller id="game.controller.default">
-            <feature name="up" button="0" />
-            <feature name="down" button="1" />
-            <feature name="left" button="2" />
-            <feature name="right" button="3" />
-            <feature name="start" button="4" />
-            <feature name="a" button="5" />
-            <feature name="x" button="6" />
-        </controller>
-    </device>
-</buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/android/OUYA_Game_Controller_v2836_p0001_23b_6a.xml b/peripheral.joystick/resources/buttonmaps/xml/android/OUYA_Game_Controller_v2836_p0001_23b_6a.xml
index f5db048..c0e8cf5 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/android/OUYA_Game_Controller_v2836_p0001_23b_6a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/android/OUYA_Game_Controller_v2836_p0001_23b_6a.xml
@@ -2,6 +2,7 @@
 <buttonmap>
     <device name="OUYA Game Controller" provider="android" vid="2836" pid="0001" buttoncount="23" axiscount="6">
         <configuration>
+            <appearance id="game.controller.ouya" />
             <axis index="2" center="-1" range="2" />
             <axis index="5" center="-1" range="2" />
         </configuration>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/android/Xbox_360_Wireless_Receiver_v045E_p02A1_23b_6a.xml b/peripheral.joystick/resources/buttonmaps/xml/android/Xbox_360_Wireless_Receiver_v045E_p02A1_23b_6a.xml
index d32d9e3..896728a 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/android/Xbox_360_Wireless_Receiver_v045E_p02A1_23b_6a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/android/Xbox_360_Wireless_Receiver_v045E_p02A1_23b_6a.xml
@@ -1,7 +1,9 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="Xbox 360 Wireless Receiver" provider="android" vid="045E" pid="02A1" buttoncount="23" axiscount="6">
-        <configuration />
+        <configuration>
+            <appearance id="game.controller.default" />
+        </configuration>
         <controller id="game.controller.default">
             <feature name="a" button="0" />
             <feature name="b" button="1" />
diff --git a/peripheral.joystick/resources/buttonmaps/xml/android/Xbox_360_Wireless_Receiver_v045E_p0719_23b_6a.xml b/peripheral.joystick/resources/buttonmaps/xml/android/Xbox_360_Wireless_Receiver_v045E_p0719_23b_6a.xml
index ed11567..2621668 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/android/Xbox_360_Wireless_Receiver_v045E_p0719_23b_6a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/android/Xbox_360_Wireless_Receiver_v045E_p0719_23b_6a.xml
@@ -1,6 +1,9 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="Xbox 360 Wireless Receiver" provider="android" vid="045E" pid="0719" buttoncount="23" axiscount="6">
+        <configuration>
+            <appearance id="game.controller.default" />
+        </configuration>
         <controller id="game.controller.default">
             <feature name="a" button="0" />
             <feature name="b" button="1" />
diff --git a/peripheral.joystick/resources/buttonmaps/xml/android/virtual-remote_16b.xml b/peripheral.joystick/resources/buttonmaps/xml/android/virtual-remote_16b.xml
index 25d94ad..7a03177 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/android/virtual-remote_16b.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/android/virtual-remote_16b.xml
@@ -1,9 +1,6 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="virtual-remote" provider="android" buttoncount="23">
-        <controller id="game.controller.default">
-            <feature name="b" button="6" />
-        </controller>
         <controller id="game.controller.remote">
             <feature name="back" button="6" />
         </controller>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/cocoa/8Bitdo_Zero_GamePad_v05A0_p3232_16b_4a.xml b/peripheral.joystick/resources/buttonmaps/xml/cocoa/8Bitdo_Zero_GamePad_v05A0_p3232_16b_4a.xml
index 83e728f..86ce98a 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/cocoa/8Bitdo_Zero_GamePad_v05A0_p3232_16b_4a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/cocoa/8Bitdo_Zero_GamePad_v05A0_p3232_16b_4a.xml
@@ -1,21 +1,9 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="8Bitdo Zero GamePad" provider="cocoa" vid="05A0" pid="3232" buttoncount="16" axiscount="4">
-        <configuration />
-        <controller id="game.controller.default">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="back" button="10" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="leftbumper" button="6" />
-            <feature name="right" axis="+0" />
-            <feature name="rightbumper" button="7" />
-            <feature name="start" button="11" />
-            <feature name="up" axis="-1" />
-            <feature name="x" button="3" />
-            <feature name="y" button="4" />
-        </controller>
+        <configuration>
+            <appearance id="game.controller.snes" />
+        </configuration>
         <controller id="game.controller.snes">
             <feature name="a" button="0" />
             <feature name="b" button="1" />
diff --git a/peripheral.joystick/resources/buttonmaps/xml/cocoa/DUALSHOCK_4_Wireless_Controller_v054C_p09CC_14b_6a.xml b/peripheral.joystick/resources/buttonmaps/xml/cocoa/DUALSHOCK_4_Wireless_Controller_v054C_p09CC_14b_6a.xml
index fc7ceca..1524b9d 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/cocoa/DUALSHOCK_4_Wireless_Controller_v054C_p09CC_14b_6a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/cocoa/DUALSHOCK_4_Wireless_Controller_v054C_p09CC_14b_6a.xml
@@ -2,6 +2,7 @@
 <buttonmap>
     <device name="DUALSHOCK 4 Wireless Controller" provider="cocoa" vid="054C" pid="09CC" buttoncount="14" axiscount="6">
         <configuration>
+            <appearance id="game.controller.ps.dualshock" />
             <axis index="4" center="-1" range="2" />
             <axis index="5" center="-1" range="2" />
             <button index="6" ignore="true" />
diff --git a/peripheral.joystick/resources/buttonmaps/xml/cocoa/GamePad_Pro_USB_v0428_p4001_10b_2a.xml b/peripheral.joystick/resources/buttonmaps/xml/cocoa/GamePad_Pro_USB_v0428_p4001_10b_2a.xml
index b5b776f..a97ebd3 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/cocoa/GamePad_Pro_USB_v0428_p4001_10b_2a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/cocoa/GamePad_Pro_USB_v0428_p4001_10b_2a.xml
@@ -17,98 +17,5 @@
             <feature name="x" button="0" />
             <feature name="y" button="3" />
         </controller>
-        <controller id="game.controller.dreamcast">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="lefttrigger" button="6" />
-            <feature name="right" axis="+0" />
-            <feature name="righttrigger" button="7" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-1" />
-            <feature name="x" button="0" />
-            <feature name="y" button="3" />
-        </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+0" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-1" />
-        </controller>
-        <controller id="game.controller.genesis">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="c" button="5" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="mode" button="8" />
-            <feature name="right" axis="+0" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-1" />
-            <feature name="x" button="0" />
-            <feature name="y" button="3" />
-            <feature name="z" button="4" />
-        </controller>
-        <controller id="game.controller.n64">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="cdown" button="0" />
-            <feature name="cright" button="3" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+0" />
-            <feature name="rightbumper" button="5" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-1" />
-            <feature name="z" button="7" />
-        </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="2" />
-            <feature name="b" button="1" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="right" axis="+0" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-1" />
-        </controller>
-        <controller id="game.controller.ps">
-            <feature name="circle" button="2" />
-            <feature name="cross" button="1" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="leftbumper" button="4" />
-            <feature name="lefttrigger" button="6" />
-            <feature name="right" axis="+0" />
-            <feature name="rightbumper" button="5" />
-            <feature name="righttrigger" button="7" />
-            <feature name="select" button="8" />
-            <feature name="square" button="0" />
-            <feature name="start" button="9" />
-            <feature name="triangle" button="3" />
-            <feature name="up" axis="-1" />
-        </controller>
-        <controller id="game.controller.snes">
-            <feature name="a" button="2" />
-            <feature name="b" button="1" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+0" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-1" />
-            <feature name="x" button="3" />
-            <feature name="y" button="0" />
-        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/cocoa/Gamepad_F310_v046D_pC21D_15b_6a.xml b/peripheral.joystick/resources/buttonmaps/xml/cocoa/Gamepad_F310_v046D_pC21D_15b_6a.xml
index 8b3dc43..943550b 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/cocoa/Gamepad_F310_v046D_pC21D_15b_6a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/cocoa/Gamepad_F310_v046D_pC21D_15b_6a.xml
@@ -36,126 +36,5 @@
             <feature name="x" button="2" />
             <feature name="y" button="3" />
         </controller>
-        <controller id="game.controller.dreamcast">
-            <feature name="a" button="0" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="1" />
-            <feature name="down" button="12" />
-            <feature name="left" button="13" />
-            <feature name="lefttrigger" axis="+4" />
-            <feature name="right" button="14" />
-            <feature name="righttrigger" axis="+5" />
-            <feature name="start" button="8" />
-            <feature name="up" button="11" />
-            <feature name="x" button="2" />
-            <feature name="y" button="3" />
-        </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="down" button="12" />
-            <feature name="left" button="13" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" button="14" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="9" />
-            <feature name="start" button="8" />
-            <feature name="up" button="11" />
-        </controller>
-        <controller id="game.controller.genesis">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="c" button="5" />
-            <feature name="down" button="12" />
-            <feature name="left" button="13" />
-            <feature name="mode" button="9" />
-            <feature name="right" button="14" />
-            <feature name="start" button="8" />
-            <feature name="up" button="11" />
-            <feature name="x" button="2" />
-            <feature name="y" button="3" />
-            <feature name="z" button="4" />
-        </controller>
-        <controller id="game.controller.n64">
-            <feature name="a" button="0" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="1" />
-            <feature name="cdown" axis="+3" />
-            <feature name="cleft" axis="-2" />
-            <feature name="cright" axis="+2" />
-            <feature name="cup" axis="-3" />
-            <feature name="down" button="12" />
-            <feature name="left" button="13" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" button="14" />
-            <feature name="rightbumper" button="5" />
-            <feature name="start" button="8" />
-            <feature name="up" button="11" />
-            <feature name="z" axis="+5" />
-        </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="1" />
-            <feature name="b" button="0" />
-            <feature name="down" button="12" />
-            <feature name="left" button="13" />
-            <feature name="right" button="14" />
-            <feature name="select" button="9" />
-            <feature name="start" button="8" />
-            <feature name="up" button="11" />
-        </controller>
-        <controller id="game.controller.ps">
-            <feature name="circle" button="1" />
-            <feature name="cross" button="0" />
-            <feature name="down" button="12" />
-            <feature name="l3" button="6" />
-            <feature name="left" button="13" />
-            <feature name="leftbumper" button="4" />
-            <feature name="leftstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="lefttrigger" axis="+4" />
-            <feature name="r3" button="7" />
-            <feature name="right" button="14" />
-            <feature name="rightbumper" button="5" />
-            <feature name="rightstick">
-                <up axis="-3" />
-                <down axis="+3" />
-                <right axis="+2" />
-                <left axis="-2" />
-            </feature>
-            <feature name="righttrigger" axis="+5" />
-            <feature name="select" button="9" />
-            <feature name="square" button="2" />
-            <feature name="start" button="8" />
-            <feature name="triangle" button="3" />
-            <feature name="up" button="11" />
-        </controller>
-        <controller id="game.controller.snes">
-            <feature name="a" button="1" />
-            <feature name="b" button="0" />
-            <feature name="down" button="12" />
-            <feature name="left" button="13" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" button="14" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="9" />
-            <feature name="start" button="8" />
-            <feature name="up" button="11" />
-            <feature name="x" button="3" />
-            <feature name="y" button="2" />
-        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/cocoa/Generic_USB_Joystick_v0079_p0006_12b_6a.xml b/peripheral.joystick/resources/buttonmaps/xml/cocoa/Generic_USB_Joystick_v0079_p0006_12b_6a.xml
index f792dd3..be5b15a 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/cocoa/Generic_USB_Joystick_v0079_p0006_12b_6a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/cocoa/Generic_USB_Joystick_v0079_p0006_12b_6a.xml
@@ -1,21 +1,9 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="Generic   USB  Joystick" provider="cocoa" vid="0079" pid="0006" buttoncount="12" axiscount="6">
-        <configuration />
-        <controller id="game.controller.default">
-            <feature name="a" button="6" />
-            <feature name="b" button="8" />
-            <feature name="leftbumper" button="4" />
-            <feature name="leftstick">
-                <up axis="-2" />
-                <down axis="+2" />
-                <right axis="+1" />
-                <left axis="-1" />
-            </feature>
-            <feature name="lefttrigger" button="7" />
-            <feature name="rightbumper" button="5" />
-            <feature name="start" button="9" />
-        </controller>
+        <configuration>
+            <appearance id="game.controller.n64" />
+        </configuration>
         <controller id="game.controller.n64">
             <feature name="a" button="6" />
             <feature name="analogstick">
diff --git a/peripheral.joystick/resources/buttonmaps/xml/cocoa/Logitech_Dual_Action_v046D_pC216_12b_5a.xml b/peripheral.joystick/resources/buttonmaps/xml/cocoa/Logitech_Dual_Action_v046D_pC216_12b_5a.xml
index 9556b5c..c582ee4 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/cocoa/Logitech_Dual_Action_v046D_pC216_12b_5a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/cocoa/Logitech_Dual_Action_v046D_pC216_12b_5a.xml
@@ -27,112 +27,5 @@
             <feature name="start" button="9" />
             <feature name="y" button="3" />
         </controller>
-        <controller id="game.controller.dreamcast">
-            <feature name="a" button="1" />
-            <feature name="analogstick">
-                <up axis="-2" />
-                <down axis="+2" />
-                <right axis="+1" />
-                <left axis="-1" />
-            </feature>
-            <feature name="b" button="2" />
-            <feature name="lefttrigger" button="6" />
-            <feature name="righttrigger" button="7" />
-            <feature name="start" button="9" />
-            <feature name="y" button="3" />
-        </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="down" axis="+2" />
-            <feature name="left" axis="-1" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+1" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-2" />
-        </controller>
-        <controller id="game.controller.genesis">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="c" button="5" />
-            <feature name="down" axis="+2" />
-            <feature name="left" axis="-1" />
-            <feature name="mode" button="8" />
-            <feature name="right" axis="+1" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-2" />
-            <feature name="x" button="11" />
-            <feature name="y" button="3" />
-            <feature name="z" button="4" />
-        </controller>
-        <controller id="game.controller.n64">
-            <feature name="a" button="1" />
-            <feature name="analogstick">
-                <up axis="-2" />
-                <down axis="+2" />
-                <right axis="+1" />
-                <left axis="-1" />
-            </feature>
-            <feature name="b" button="2" />
-            <feature name="cdown" axis="+4" />
-            <feature name="cleft" axis="-3" />
-            <feature name="cright" axis="+3" />
-            <feature name="cup" axis="-4" />
-            <feature name="leftbumper" button="4" />
-            <feature name="rightbumper" button="5" />
-            <feature name="start" button="9" />
-            <feature name="z" button="7" />
-        </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="down" axis="+2" />
-            <feature name="left" axis="-1" />
-            <feature name="right" axis="+1" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-2" />
-        </controller>
-        <controller id="game.controller.ps">
-            <feature name="circle" button="2" />
-            <feature name="cross" button="1" />
-            <feature name="l3" button="10" />
-            <feature name="leftbumper" button="4" />
-            <feature name="leftstick">
-                <up axis="-2" />
-                <down axis="+2" />
-                <right axis="+1" />
-                <left axis="-1" />
-            </feature>
-            <feature name="lefttrigger" button="6" />
-            <feature name="r3" button="11" />
-            <feature name="rightbumper" button="5" />
-            <feature name="rightstick">
-                <up axis="-4" />
-                <down axis="+4" />
-                <right axis="+3" />
-                <left axis="-3" />
-            </feature>
-            <feature name="righttrigger" button="7" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="triangle" button="3" />
-        </controller>
-        <controller id="game.controller.snes">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="down" axis="+2" />
-            <feature name="left" axis="-1" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+1" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-2" />
-            <feature name="x" button="11" />
-            <feature name="y" button="3" />
-        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/cocoa/PC_USB_Wired_Stick_8838_v0738_p8838_13b_4a.xml b/peripheral.joystick/resources/buttonmaps/xml/cocoa/PC_USB_Wired_Stick_8838_v0738_p8838_13b_4a.xml
index 7195cb3..ba73c54 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/cocoa/PC_USB_Wired_Stick_8838_v0738_p8838_13b_4a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/cocoa/PC_USB_Wired_Stick_8838_v0738_p8838_13b_4a.xml
@@ -24,111 +24,5 @@
             <feature name="x" button="0" />
             <feature name="y" button="3" />
         </controller>
-        <controller id="game.controller.dreamcast">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="lefttrigger" button="5" />
-            <feature name="right" axis="+0" />
-            <feature name="righttrigger" button="7" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-1" />
-            <feature name="x" button="0" />
-            <feature name="y" button="3" />
-        </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="leftbumper" button="5" />
-            <feature name="right" axis="+0" />
-            <feature name="rightbumper" button="7" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-1" />
-        </controller>
-        <controller id="game.controller.genesis">
-            <feature name="a" button="0" />
-            <feature name="b" button="3" />
-            <feature name="c" button="5" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="mode" button="8" />
-            <feature name="right" axis="+0" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-1" />
-            <feature name="x" button="1" />
-            <feature name="y" button="2" />
-            <feature name="z" button="7" />
-        </controller>
-        <controller id="game.controller.n64">
-            <feature name="a" button="1" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="0" />
-            <feature name="cdown" button="2" />
-            <feature name="cleft" button="3" />
-            <feature name="cup" button="5" />
-            <feature name="down" axis="+3" />
-            <feature name="left" axis="-2" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+2" />
-            <feature name="rightbumper" button="6" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-3" />
-            <feature name="z" button="7" />
-        </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="1" />
-            <feature name="b" button="0" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="right" axis="+0" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-1" />
-        </controller>
-        <controller id="game.controller.ps">
-            <feature name="circle" button="2" />
-            <feature name="cross" button="1" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="leftbumper" button="4" />
-            <feature name="leftstick">
-                <up axis="-3" />
-                <down axis="+3" />
-                <right axis="+2" />
-                <left axis="-2" />
-            </feature>
-            <feature name="lefttrigger" button="6" />
-            <feature name="right" axis="+0" />
-            <feature name="rightbumper" button="5" />
-            <feature name="righttrigger" button="7" />
-            <feature name="select" button="8" />
-            <feature name="square" button="0" />
-            <feature name="start" button="9" />
-            <feature name="triangle" button="3" />
-            <feature name="up" axis="-1" />
-        </controller>
-        <controller id="game.controller.snes">
-            <feature name="a" button="2" />
-            <feature name="b" button="1" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+0" />
-            <feature name="rightbumper" button="6" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-1" />
-            <feature name="x" button="3" />
-            <feature name="y" button="0" />
-        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/cocoa/PLAYSTATION_R_3_Controller_v054C_p0268_19b_4a.xml b/peripheral.joystick/resources/buttonmaps/xml/cocoa/PLAYSTATION_R_3_Controller_v054C_p0268_19b_4a.xml
index ee229b0..4b312d1 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/cocoa/PLAYSTATION_R_3_Controller_v054C_p0268_19b_4a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/cocoa/PLAYSTATION_R_3_Controller_v054C_p0268_19b_4a.xml
@@ -1,6 +1,9 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="PLAYSTATION(R)3 Controller" provider="cocoa" vid="054C" pid="0268" buttoncount="19" axiscount="4">
+        <configuration>
+            <appearance id="game.controller.ps.dualanalog" />
+        </configuration>
         <controller id="game.controller.default">
             <feature name="a" button="14" />
             <feature name="b" button="13" />
@@ -32,126 +35,5 @@
             <feature name="x" button="15" />
             <feature name="y" button="12" />
         </controller>
-        <controller id="game.controller.dreamcast">
-            <feature name="a" button="14" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="13" />
-            <feature name="down" button="6" />
-            <feature name="left" button="7" />
-            <feature name="lefttrigger" button="8" />
-            <feature name="right" button="5" />
-            <feature name="righttrigger" button="9" />
-            <feature name="start" button="3" />
-            <feature name="up" button="4" />
-            <feature name="x" button="15" />
-            <feature name="y" button="12" />
-        </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="14" />
-            <feature name="b" button="13" />
-            <feature name="down" button="6" />
-            <feature name="left" button="7" />
-            <feature name="leftbumper" button="10" />
-            <feature name="right" button="5" />
-            <feature name="rightbumper" button="11" />
-            <feature name="select" button="0" />
-            <feature name="start" button="3" />
-            <feature name="up" button="4" />
-        </controller>
-        <controller id="game.controller.genesis">
-            <feature name="a" button="14" />
-            <feature name="b" button="13" />
-            <feature name="c" button="11" />
-            <feature name="down" button="6" />
-            <feature name="left" button="7" />
-            <feature name="mode" button="0" />
-            <feature name="right" button="5" />
-            <feature name="start" button="3" />
-            <feature name="up" button="4" />
-            <feature name="x" button="15" />
-            <feature name="y" button="12" />
-            <feature name="z" button="10" />
-        </controller>
-        <controller id="game.controller.n64">
-            <feature name="a" button="14" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="13" />
-            <feature name="cdown" axis="+3" />
-            <feature name="cleft" axis="-2" />
-            <feature name="cright" axis="+2" />
-            <feature name="cup" axis="-3" />
-            <feature name="down" button="6" />
-            <feature name="left" button="7" />
-            <feature name="leftbumper" button="10" />
-            <feature name="right" button="5" />
-            <feature name="rightbumper" button="11" />
-            <feature name="start" button="3" />
-            <feature name="up" button="4" />
-            <feature name="z" button="9" />
-        </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="13" />
-            <feature name="b" button="14" />
-            <feature name="down" button="6" />
-            <feature name="left" button="7" />
-            <feature name="right" button="5" />
-            <feature name="select" button="0" />
-            <feature name="start" button="3" />
-            <feature name="up" button="4" />
-        </controller>
-        <controller id="game.controller.ps">
-            <feature name="circle" button="13" />
-            <feature name="cross" button="14" />
-            <feature name="down" button="6" />
-            <feature name="l3" button="1" />
-            <feature name="left" button="7" />
-            <feature name="leftbumper" button="10" />
-            <feature name="leftstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="lefttrigger" button="8" />
-            <feature name="r3" button="2" />
-            <feature name="right" button="5" />
-            <feature name="rightbumper" button="11" />
-            <feature name="rightstick">
-                <up axis="-3" />
-                <down axis="+3" />
-                <right axis="+2" />
-                <left axis="-2" />
-            </feature>
-            <feature name="righttrigger" button="9" />
-            <feature name="select" button="0" />
-            <feature name="square" button="15" />
-            <feature name="start" button="3" />
-            <feature name="triangle" button="12" />
-            <feature name="up" button="4" />
-        </controller>
-        <controller id="game.controller.snes">
-            <feature name="a" button="13" />
-            <feature name="b" button="14" />
-            <feature name="down" button="6" />
-            <feature name="left" button="7" />
-            <feature name="leftbumper" button="10" />
-            <feature name="right" button="5" />
-            <feature name="rightbumper" button="11" />
-            <feature name="select" button="0" />
-            <feature name="start" button="3" />
-            <feature name="up" button="4" />
-            <feature name="x" button="12" />
-            <feature name="y" button="15" />
-        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/cocoa/PS_R__Ga_epad_v054C_p0268_19b_4a.xml b/peripheral.joystick/resources/buttonmaps/xml/cocoa/PS_R__Ga_epad_v054C_p0268_19b_4a.xml
index 08b0812..efa57df 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/cocoa/PS_R__Ga_epad_v054C_p0268_19b_4a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/cocoa/PS_R__Ga_epad_v054C_p0268_19b_4a.xml
@@ -1,7 +1,9 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="PS(R) Ga`epad" provider="cocoa" vid="054C" pid="0268" buttoncount="19" axiscount="4">
-        <configuration />
+        <configuration>
+            <appearance id="game.controller.ps.dualanalog" />
+        </configuration>
         <controller id="game.controller.default">
             <feature name="a" button="14" />
             <feature name="b" button="13" />
diff --git a/peripheral.joystick/resources/buttonmaps/xml/cocoa/USB_GamePad_v0E8F_p3013_16b_10a.xml b/peripheral.joystick/resources/buttonmaps/xml/cocoa/USB_GamePad_v0E8F_p3013_16b_10a.xml
index d308ff2..ef7b57e 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/cocoa/USB_GamePad_v0E8F_p3013_16b_10a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/cocoa/USB_GamePad_v0E8F_p3013_16b_10a.xml
@@ -1,21 +1,9 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="USB GamePad" provider="cocoa" vid="0E8F" pid="3013" buttoncount="16" axiscount="10">
-        <configuration />
-        <controller id="game.controller.default">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="back" button="8" />
-            <feature name="down" axis="+9" />
-            <feature name="left" axis="-8" />
-            <feature name="leftbumper" button="6" />
-            <feature name="right" axis="+8" />
-            <feature name="rightbumper" button="7" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-9" />
-            <feature name="x" button="0" />
-            <feature name="y" button="3" />
-        </controller>
+        <configuration>
+            <appearance id="game.controller.snes" />
+        </configuration>
         <controller id="game.controller.snes">
             <feature name="a" button="1" />
             <feature name="b" button="2" />
diff --git a/peripheral.joystick/resources/buttonmaps/xml/cocoa/USB_Gamepad_v0079_p0011_10b_6a.xml b/peripheral.joystick/resources/buttonmaps/xml/cocoa/USB_Gamepad_v0079_p0011_10b_6a.xml
index 9cc3a71..876934e 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/cocoa/USB_Gamepad_v0079_p0011_10b_6a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/cocoa/USB_Gamepad_v0079_p0011_10b_6a.xml
@@ -1,21 +1,9 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="USB Gamepad" provider="cocoa" vid="0079" pid="0011" buttoncount="10" axiscount="6">
-        <configuration />
-        <controller id="game.controller.default">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="back" button="8" />
-            <feature name="down" axis="+5" />
-            <feature name="left" axis="-4" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+4" />
-            <feature name="rightbumper" button="5" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-5" />
-            <feature name="x" button="0" />
-            <feature name="y" button="3" />
-        </controller>
+        <configuration>
+            <appearance id="game.controller.snes" />
+        </configuration>
         <controller id="game.controller.snes">
             <feature name="a" button="1" />
             <feature name="b" button="2" />
diff --git a/peripheral.joystick/resources/buttonmaps/xml/cocoa/USB_Joystick_v0E8F_p0003_12b_5a.xml b/peripheral.joystick/resources/buttonmaps/xml/cocoa/USB_Joystick_v0E8F_p0003_12b_5a.xml
index 6ba7328..5798ae9 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/cocoa/USB_Joystick_v0E8F_p0003_12b_5a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/cocoa/USB_Joystick_v0E8F_p0003_12b_5a.xml
@@ -27,116 +27,5 @@
             <feature name="x" button="0" />
             <feature name="y" button="1" />
         </controller>
-        <controller id="game.controller.dreamcast">
-            <feature name="a" button="2" />
-            <feature name="analogstick">
-                <up axis="-4" />
-                <down axis="+4" />
-                <right axis="+3" />
-                <left axis="-3" />
-            </feature>
-            <feature name="b" button="3" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-2" />
-            <feature name="lefttrigger" button="6" />
-            <feature name="right" axis="+2" />
-            <feature name="righttrigger" button="7" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-1" />
-            <feature name="x" button="0" />
-            <feature name="y" button="1" />
-        </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="2" />
-            <feature name="b" button="3" />
-            <feature name="down" axis="+4" />
-            <feature name="left" axis="-3" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+3" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-4" />
-        </controller>
-        <controller id="game.controller.genesis">
-            <feature name="a" button="2" />
-            <feature name="b" button="3" />
-            <feature name="c" button="5" />
-            <feature name="down" axis="+4" />
-            <feature name="left" axis="-3" />
-            <feature name="mode" button="8" />
-            <feature name="right" axis="+3" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-4" />
-            <feature name="x" button="0" />
-            <feature name="y" button="1" />
-            <feature name="z" button="4" />
-        </controller>
-        <controller id="game.controller.n64">
-            <feature name="a" button="2" />
-            <feature name="analogstick">
-                <up axis="-4" />
-                <down axis="+4" />
-                <right axis="+3" />
-                <left axis="-3" />
-            </feature>
-            <feature name="b" button="3" />
-            <feature name="cdown" axis="+1" />
-            <feature name="cleft" axis="-2" />
-            <feature name="cright" axis="+2" />
-            <feature name="cup" axis="-1" />
-            <feature name="leftbumper" button="4" />
-            <feature name="rightbumper" button="5" />
-            <feature name="start" button="9" />
-            <feature name="z" button="7" />
-        </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="3" />
-            <feature name="b" button="2" />
-            <feature name="down" axis="+4" />
-            <feature name="left" axis="-3" />
-            <feature name="right" axis="+3" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-4" />
-        </controller>
-        <controller id="game.controller.ps">
-            <feature name="circle" button="3" />
-            <feature name="cross" button="2" />
-            <feature name="down" axis="+4" />
-            <feature name="l3" button="10" />
-            <feature name="left" axis="-3" />
-            <feature name="leftbumper" button="4" />
-            <feature name="lefttrigger" button="6" />
-            <feature name="r3" button="11" />
-            <feature name="right" axis="+3" />
-            <feature name="rightbumper" button="5" />
-            <feature name="rightstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+2" />
-                <left axis="-2" />
-            </feature>
-            <feature name="righttrigger" button="7" />
-            <feature name="select" button="8" />
-            <feature name="square" button="0" />
-            <feature name="start" button="9" />
-            <feature name="triangle" button="1" />
-            <feature name="up" axis="-4" />
-        </controller>
-        <controller id="game.controller.snes">
-            <feature name="a" button="3" />
-            <feature name="b" button="2" />
-            <feature name="down" axis="+4" />
-            <feature name="left" axis="-3" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+3" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-4" />
-            <feature name="x" button="1" />
-            <feature name="y" button="0" />
-        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/cocoa/Wireless_360_Controller_v045E_p028E_15b_6a.xml b/peripheral.joystick/resources/buttonmaps/xml/cocoa/Wireless_360_Controller_v045E_p028E_15b_6a.xml
index 1438116..11dcc20 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/cocoa/Wireless_360_Controller_v045E_p028E_15b_6a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/cocoa/Wireless_360_Controller_v045E_p028E_15b_6a.xml
@@ -2,126 +2,10 @@
 <buttonmap>
     <device name="Wireless 360 Controller" provider="cocoa" vid="045E" pid="028E" buttoncount="15" axiscount="6">
         <configuration>
+            <appearance id="game.controller.default" />
             <axis index="4" center="-1" range="2" />
             <axis index="5" center="-1" range="2" />
         </configuration>
-        <controller id="game.controller.3do">
-            <feature name="a" button="2" />
-            <feature name="b" button="0" />
-            <feature name="c" button="1" />
-            <feature name="down" button="12" />
-            <feature name="left" button="13" />
-            <feature name="leftbumper" button="4" />
-            <feature name="play" button="8" />
-            <feature name="right" button="14" />
-            <feature name="rightbumper" button="5" />
-            <feature name="stop" button="9" />
-            <feature name="up" button="11" />
-        </controller>
-        <controller id="game.controller.3do.gamegun">
-            <feature name="crosshair">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="trigger" axis="+5" />
-        </controller>
-        <controller id="game.controller.amstrad.joystick">
-            <feature name="button1" button="1" />
-            <feature name="button2" button="3" />
-            <feature name="cat" button="5" />
-            <feature name="down" button="12" />
-            <feature name="left" button="13" />
-            <feature name="mousetoggle" button="9" />
-            <feature name="reset" axis="+5" />
-            <feature name="return" button="2" />
-            <feature name="right" button="14" />
-            <feature name="run" button="0" />
-            <feature name="stat" button="4" />
-            <feature name="tape" axis="+4" />
-            <feature name="up" button="11" />
-            <feature name="vkbtoggle" button="8" />
-        </controller>
-        <controller id="game.controller.atari.2600">
-            <feature name="bw" button="7" />
-            <feature name="color" button="6" />
-            <feature name="down" button="12" />
-            <feature name="fire" button="1" />
-            <feature name="left" button="13" />
-            <feature name="leftdifficultya" button="4" />
-            <feature name="leftdifficultyb" axis="+4" />
-            <feature name="reset" button="8" />
-            <feature name="right" button="14" />
-            <feature name="rightdifficultya" button="5" />
-            <feature name="rightdifficultyb" axis="+5" />
-            <feature name="select" button="9" />
-            <feature name="up" button="11" />
-        </controller>
-        <controller id="game.controller.atari.7800.gamepad">
-            <feature name="button1" button="0" />
-            <feature name="button2" button="1" />
-            <feature name="down" button="12" />
-            <feature name="left" button="13" />
-            <feature name="leftdifficulty" button="4" />
-            <feature name="pause" button="8" />
-            <feature name="reset" button="3" />
-            <feature name="right" button="14" />
-            <feature name="rightdifficulty" button="5" />
-            <feature name="select" button="9" />
-            <feature name="up" button="11" />
-        </controller>
-        <controller id="game.controller.atari.7800.proline">
-            <feature name="button1" button="0" />
-            <feature name="button2" button="1" />
-            <feature name="down" button="12" />
-            <feature name="left" button="13" />
-            <feature name="leftdifficulty" button="4" />
-            <feature name="pause" button="8" />
-            <feature name="reset" button="3" />
-            <feature name="right" button="14" />
-            <feature name="rightdifficulty" button="5" />
-            <feature name="select" button="9" />
-            <feature name="up" button="11" />
-        </controller>
-        <controller id="game.controller.atari.lynx">
-            <feature name="a" button="1" />
-            <feature name="b" button="0" />
-            <feature name="down" button="12" />
-            <feature name="left" button="13" />
-            <feature name="option1" button="5" />
-            <feature name="option2" button="4" />
-            <feature name="pause" button="8" />
-            <feature name="right" button="14" />
-            <feature name="up" button="11" />
-        </controller>
-        <controller id="game.controller.atari.xges.xg1">
-            <feature name="crosshair">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="trigger" axis="+5" />
-        </controller>
-        <controller id="game.controller.colecovision">
-            <feature name="button1" button="1" />
-            <feature name="button2" button="0" />
-            <feature name="down" button="12" />
-            <feature name="keypad1" button="3" />
-            <feature name="keypad2" button="2" />
-            <feature name="keypad3" button="5" />
-            <feature name="keypad4" button="4" />
-            <feature name="keypad5" axis="+5" />
-            <feature name="keypad6" axis="+4" />
-            <feature name="keypad7" button="7" />
-            <feature name="keypad8" button="6" />
-            <feature name="left" button="13" />
-            <feature name="pound" button="8" />
-            <feature name="right" button="14" />
-            <feature name="star" button="9" />
-            <feature name="up" button="11" />
-        </controller>
         <controller id="game.controller.default">
             <feature name="a" button="0" />
             <feature name="b" button="1" />
@@ -153,693 +37,5 @@
             <feature name="x" button="2" />
             <feature name="y" button="3" />
         </controller>
-        <controller id="game.controller.dreamcast">
-            <feature name="a" button="0" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="1" />
-            <feature name="down" button="12" />
-            <feature name="left" button="13" />
-            <feature name="lefttrigger" axis="+4" />
-            <feature name="right" button="14" />
-            <feature name="righttrigger" axis="+5" />
-            <feature name="start" button="8" />
-            <feature name="up" button="11" />
-            <feature name="x" button="2" />
-            <feature name="y" button="3" />
-        </controller>
-        <controller id="game.controller.gameboy">
-            <feature name="a" button="1" />
-            <feature name="b" button="0" />
-            <feature name="down" button="12" />
-            <feature name="left" button="13" />
-            <feature name="right" button="14" />
-            <feature name="select" button="9" />
-            <feature name="start" button="8" />
-            <feature name="up" button="11" />
-        </controller>
-        <controller id="game.controller.gamegear">
-            <feature name="button1" button="1" />
-            <feature name="button2" button="0" />
-            <feature name="down" button="12" />
-            <feature name="left" button="13" />
-            <feature name="right" button="14" />
-            <feature name="start" button="8" />
-            <feature name="up" button="11" />
-        </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="1" />
-            <feature name="b" button="0" />
-            <feature name="down" button="12" />
-            <feature name="left" button="13" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" button="14" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="9" />
-            <feature name="start" button="8" />
-            <feature name="up" button="11" />
-        </controller>
-        <controller id="game.controller.genesis.6button">
-            <feature name="a" button="2" />
-            <feature name="b" button="0" />
-            <feature name="c" button="1" />
-            <feature name="down" button="12" />
-            <feature name="left" button="13" />
-            <feature name="mode" button="9" />
-            <feature name="right" button="14" />
-            <feature name="start" button="8" />
-            <feature name="up" button="11" />
-            <feature name="x" button="4" />
-            <feature name="y" button="3" />
-            <feature name="z" button="5" />
-        </controller>
-        <controller id="game.controller.genesis.mouse">
-            <feature name="left" button="0" />
-            <feature name="middle" button="2" />
-            <feature name="pointer">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="right" button="1" />
-            <feature name="start" button="8" />
-        </controller>
-        <controller id="game.controller.gravis.gamepad">
-            <feature name="blue" button="2" />
-            <feature name="down" button="12" />
-            <feature name="green" button="0" />
-            <feature name="left" button="13" />
-            <feature name="red" button="3" />
-            <feature name="right" button="14" />
-            <feature name="up" button="11" />
-            <feature name="yellow" button="1" />
-        </controller>
-        <controller id="game.controller.joystick.2button">
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="button1" button="0" />
-            <feature name="button2" button="2" />
-        </controller>
-        <controller id="game.controller.joystick.4button">
-            <feature name="button1" button="1" />
-            <feature name="button2" button="0" />
-            <feature name="button3" button="3" />
-            <feature name="button4" button="2" />
-            <feature name="leftstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="rightstick">
-                <up axis="-3" />
-                <down axis="+3" />
-                <right axis="+2" />
-                <left axis="-2" />
-            </feature>
-        </controller>
-        <controller id="game.controller.konami.justifier.player2">
-            <feature name="crosshair">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="offscreen" button="1" />
-            <feature name="start" button="8" />
-            <feature name="trigger" axis="+5" />
-        </controller>
-        <controller id="game.controller.konami.justifier.ps">
-            <feature name="aux" button="9" />
-            <feature name="crosshair">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="offscreen" button="1" />
-            <feature name="start" button="8" />
-            <feature name="trigger" axis="+5" />
-        </controller>
-        <controller id="game.controller.konami.justifier.snes">
-            <feature name="crosshair">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="offscreen" button="1" />
-            <feature name="start" button="8" />
-            <feature name="trigger" axis="+5" />
-        </controller>
-        <controller id="game.controller.mouse">
-            <feature name="button4" button="3" />
-            <feature name="button5" button="5" />
-            <feature name="horizwheelleft" axis="-2" />
-            <feature name="horizwheelright" axis="+2" />
-            <feature name="left" button="0" />
-            <feature name="middle" button="2" />
-            <feature name="pointer">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="right" button="1" />
-            <feature name="wheeldown" axis="+3" />
-            <feature name="wheelup" axis="-3" />
-        </controller>
-        <controller id="game.controller.msx.joystick">
-            <feature name="button1" button="1" />
-            <feature name="button2" button="0" />
-            <feature name="down" button="12" />
-            <feature name="left" button="13" />
-            <feature name="right" button="14" />
-            <feature name="up" button="11" />
-        </controller>
-        <controller id="game.controller.n64">
-            <feature name="a" button="1" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="2" />
-            <feature name="cdown" axis="+3" />
-            <feature name="cleft" axis="-2" />
-            <feature name="cright" axis="+2" />
-            <feature name="cup" axis="-3" />
-            <feature name="down" button="12" />
-            <feature name="left" button="13" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" button="14" />
-            <feature name="rightbumper" button="5" />
-            <feature name="start" button="8" />
-            <feature name="up" button="11" />
-            <feature name="z" axis="+4" />
-        </controller>
-        <controller id="game.controller.nds">
-            <feature name="a" button="1" />
-            <feature name="b" button="0" />
-            <feature name="down" button="12" />
-            <feature name="layout" button="7" />
-            <feature name="left" button="13" />
-            <feature name="leftbumper" button="4" />
-            <feature name="lid" axis="+4" />
-            <feature name="microphone" button="6" />
-            <feature name="right" button="14" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="9" />
-            <feature name="start" button="8" />
-            <feature name="up" button="11" />
-            <feature name="x" button="3" />
-            <feature name="y" button="2" />
-        </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="1" />
-            <feature name="b" button="0" />
-            <feature name="down" button="12" />
-            <feature name="left" button="13" />
-            <feature name="right" button="14" />
-            <feature name="select" button="9" />
-            <feature name="start" button="8" />
-            <feature name="up" button="11" />
-        </controller>
-        <controller id="game.controller.ngp">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="down" button="12" />
-            <feature name="left" button="13" />
-            <feature name="option" button="8" />
-            <feature name="right" button="14" />
-            <feature name="up" button="11" />
-        </controller>
-        <controller id="game.controller.odyssey2">
-            <feature name="action" button="1" />
-            <feature name="down" button="12" />
-            <feature name="left" button="13" />
-            <feature name="right" button="14" />
-            <feature name="up" button="11" />
-        </controller>
-        <controller id="game.controller.pce">
-            <feature name="down" button="12" />
-            <feature name="i" button="1" />
-            <feature name="ii" button="0" />
-            <feature name="iii" button="3" />
-            <feature name="iv" button="2" />
-            <feature name="left" button="13" />
-            <feature name="mode" axis="+4" />
-            <feature name="right" button="14" />
-            <feature name="run" button="8" />
-            <feature name="select" button="9" />
-            <feature name="up" button="11" />
-            <feature name="v" button="4" />
-            <feature name="vi" button="5" />
-        </controller>
-        <controller id="game.controller.pcfx">
-            <feature name="down" button="12" />
-            <feature name="i" button="1" />
-            <feature name="ii" button="0" />
-            <feature name="iii" button="3" />
-            <feature name="iv" button="2" />
-            <feature name="left" button="13" />
-            <feature name="mode1" axis="+4" />
-            <feature name="mode2" axis="+5" />
-            <feature name="right" button="14" />
-            <feature name="run" button="8" />
-            <feature name="select" button="9" />
-            <feature name="up" button="11" />
-            <feature name="v" button="4" />
-            <feature name="vi" button="5" />
-        </controller>
-        <controller id="game.controller.pcfx.mouse">
-            <feature name="left" button="1" />
-            <feature name="pointer">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="right" button="0" />
-        </controller>
-        <controller id="game.controller.ps.dualanalog">
-            <feature name="circle" button="1" />
-            <feature name="cross" button="0" />
-            <feature name="down" button="12" />
-            <feature name="l3" button="6" />
-            <feature name="left" button="13" />
-            <feature name="leftbumper" button="4" />
-            <feature name="leftstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="lefttrigger" axis="+4" />
-            <feature name="r3" button="7" />
-            <feature name="right" button="14" />
-            <feature name="rightbumper" button="5" />
-            <feature name="rightstick">
-                <up axis="-3" />
-                <down axis="+3" />
-                <right axis="+2" />
-                <left axis="-2" />
-            </feature>
-            <feature name="righttrigger" axis="+5" />
-            <feature name="select" button="9" />
-            <feature name="square" button="2" />
-            <feature name="start" button="8" />
-            <feature name="triangle" button="3" />
-            <feature name="up" button="11" />
-        </controller>
-        <controller id="game.controller.ps.dualshock">
-            <feature name="circle" button="1" />
-            <feature name="cross" button="0" />
-            <feature name="down" button="12" />
-            <feature name="l3" button="6" />
-            <feature name="left" button="13" />
-            <feature name="leftbumper" button="4" />
-            <feature name="leftstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="lefttrigger" axis="+4" />
-            <feature name="r3" button="7" />
-            <feature name="right" button="14" />
-            <feature name="rightbumper" button="5" />
-            <feature name="rightstick">
-                <up axis="-3" />
-                <down axis="+3" />
-                <right axis="+2" />
-                <left axis="-2" />
-            </feature>
-            <feature name="righttrigger" axis="+5" />
-            <feature name="select" button="9" />
-            <feature name="square" button="2" />
-            <feature name="start" button="8" />
-            <feature name="triangle" button="3" />
-            <feature name="up" button="11" />
-        </controller>
-        <controller id="game.controller.ps.gamepad">
-            <feature name="circle" button="1" />
-            <feature name="cross" button="0" />
-            <feature name="down" button="12" />
-            <feature name="l3" button="6" />
-            <feature name="left" button="13" />
-            <feature name="leftbumper" button="4" />
-            <feature name="lefttrigger" axis="+4" />
-            <feature name="r3" button="7" />
-            <feature name="right" button="14" />
-            <feature name="rightbumper" button="5" />
-            <feature name="righttrigger" axis="+5" />
-            <feature name="select" button="9" />
-            <feature name="square" button="2" />
-            <feature name="start" button="8" />
-            <feature name="triangle" button="3" />
-            <feature name="up" button="11" />
-        </controller>
-        <controller id="game.controller.ps.guncon.japan">
-            <feature name="a" button="1" />
-            <feature name="b" button="0" />
-            <feature name="crosshair">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="offscreen" button="2" />
-            <feature name="trigger" axis="+5" />
-        </controller>
-        <controller id="game.controller.ps.guncon.western">
-            <feature name="a" button="1" />
-            <feature name="b" button="0" />
-            <feature name="crosshair">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="offscreen" button="2" />
-            <feature name="trigger" axis="+5" />
-        </controller>
-        <controller id="game.controller.ps.mouse">
-            <feature name="left" button="1" />
-            <feature name="pointer">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="right" button="0" />
-        </controller>
-        <controller id="game.controller.psp">
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="circle" button="1" />
-            <feature name="cross" button="0" />
-            <feature name="down" button="12" />
-            <feature name="l" button="4" />
-            <feature name="left" button="13" />
-            <feature name="r" button="5" />
-            <feature name="right" button="14" />
-            <feature name="select" button="9" />
-            <feature name="square" button="2" />
-            <feature name="start" button="8" />
-            <feature name="triangle" button="3" />
-            <feature name="up" button="11" />
-        </controller>
-        <controller id="game.controller.remote">
-            <feature name="back" button="0" />
-            <feature name="down" button="12" />
-            <feature name="home" button="10" />
-            <feature name="left" button="13" />
-            <feature name="right" button="14" />
-            <feature name="select" button="1" />
-            <feature name="up" button="11" />
-        </controller>
-        <controller id="game.controller.saturn">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="c" button="5" />
-            <feature name="down" button="12" />
-            <feature name="left" button="13" />
-            <feature name="leftbumper" axis="+4" />
-            <feature name="right" button="14" />
-            <feature name="rightbumper" axis="+5" />
-            <feature name="start" button="8" />
-            <feature name="up" button="11" />
-            <feature name="x" button="2" />
-            <feature name="y" button="3" />
-            <feature name="z" button="4" />
-        </controller>
-        <controller id="game.controller.saturn.3d.japan">
-            <feature name="a" button="0" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="1" />
-            <feature name="c" button="5" />
-            <feature name="down" button="12" />
-            <feature name="left" button="13" />
-            <feature name="lefttrigger" axis="+4" />
-            <feature name="right" button="14" />
-            <feature name="righttrigger" axis="+5" />
-            <feature name="start" button="8" />
-            <feature name="up" button="11" />
-            <feature name="x" button="2" />
-            <feature name="y" button="3" />
-            <feature name="z" button="4" />
-        </controller>
-        <controller id="game.controller.saturn.3d.western">
-            <feature name="a" button="0" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="1" />
-            <feature name="c" button="5" />
-            <feature name="down" button="12" />
-            <feature name="left" button="13" />
-            <feature name="lefttrigger" axis="+4" />
-            <feature name="right" button="14" />
-            <feature name="righttrigger" axis="+5" />
-            <feature name="start" button="8" />
-            <feature name="up" button="11" />
-            <feature name="x" button="2" />
-            <feature name="y" button="3" />
-            <feature name="z" button="4" />
-        </controller>
-        <controller id="game.controller.saturn.arcade.racer">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="c" button="5" />
-            <feature name="leftshift" axis="+4" />
-            <feature name="rightshift" axis="+5" />
-            <feature name="start" button="8" />
-            <feature name="wheel">
-                <left axis="-0" />
-                <right axis="+0" />
-            </feature>
-            <feature name="x" button="2" />
-            <feature name="y" button="3" />
-            <feature name="z" button="4" />
-        </controller>
-        <controller id="game.controller.saturn.mission.stick">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="c" button="5" />
-            <feature name="joystick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="l" axis="+4" />
-            <feature name="r" axis="+5" />
-            <feature name="start" button="8" />
-            <feature name="throttle">
-                <up axis="-3" />
-                <down axis="+3" />
-            </feature>
-            <feature name="throttlelatch" button="7" />
-            <feature name="x" button="2" />
-            <feature name="y" button="3" />
-            <feature name="z" button="4" />
-        </controller>
-        <controller id="game.controller.saturn.mission.sticks">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="c" button="5" />
-            <feature name="l" axis="+4" />
-            <feature name="leftjoystick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="r" axis="+5" />
-            <feature name="rightjoystick">
-                <up axis="-3" />
-                <down axis="+3" />
-                <right axis="+2" />
-                <left axis="-2" />
-            </feature>
-            <feature name="start" button="8" />
-            <feature name="x" button="2" />
-            <feature name="y" button="3" />
-            <feature name="z" button="4" />
-        </controller>
-        <controller id="game.controller.saturn.mouse">
-            <feature name="left" button="0" />
-            <feature name="middle" button="2" />
-            <feature name="pointer">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="right" button="1" />
-            <feature name="start" button="8" />
-        </controller>
-        <controller id="game.controller.saturn.twin.stick">
-            <feature name="leftbutton" button="4" />
-            <feature name="leftstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="lefttrigger" axis="+4" />
-            <feature name="rightbutton" button="5" />
-            <feature name="rightstick">
-                <up axis="-3" />
-                <down axis="+3" />
-                <right axis="+2" />
-                <left axis="-2" />
-            </feature>
-            <feature name="righttrigger" axis="+5" />
-            <feature name="start" button="8" />
-        </controller>
-        <controller id="game.controller.saturn.virtua.gun.eu">
-            <feature name="crosshair">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="offscreen" button="1" />
-            <feature name="reload" button="0" />
-            <feature name="start" button="8" />
-            <feature name="trigger" axis="+5" />
-        </controller>
-        <controller id="game.controller.saturn.virtua.gun.japan">
-            <feature name="crosshair">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="offscreen" button="1" />
-            <feature name="reload" button="0" />
-            <feature name="start" button="8" />
-            <feature name="trigger" axis="+5" />
-        </controller>
-        <controller id="game.controller.saturn.virtua.gun.us">
-            <feature name="crosshair">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="offscreen" button="1" />
-            <feature name="reload" button="0" />
-            <feature name="start" button="8" />
-            <feature name="trigger" axis="+5" />
-        </controller>
-        <controller id="game.controller.sms">
-            <feature name="button1" button="1" />
-            <feature name="button2" button="0" />
-            <feature name="down" button="12" />
-            <feature name="left" button="13" />
-            <feature name="right" button="14" />
-            <feature name="up" button="11" />
-        </controller>
-        <controller id="game.controller.snes">
-            <feature name="a" button="1" />
-            <feature name="b" button="0" />
-            <feature name="down" button="12" />
-            <feature name="left" button="13" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" button="14" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="9" />
-            <feature name="start" button="8" />
-            <feature name="up" button="11" />
-            <feature name="x" button="3" />
-            <feature name="y" button="2" />
-        </controller>
-        <controller id="game.controller.snes.mouse">
-            <feature name="left" button="0" />
-            <feature name="pointer">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="right" button="1" />
-        </controller>
-        <controller id="game.controller.snes.super.scope">
-            <feature name="crosshair">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="cursor" button="0" />
-            <feature name="offscreen" button="2" />
-            <feature name="pause" button="8" />
-            <feature name="trigger" axis="+5" />
-            <feature name="turbo" button="1" />
-        </controller>
-        <controller id="game.controller.vb">
-            <feature name="a" button="1" />
-            <feature name="b" button="0" />
-            <feature name="leftbumper" button="4" />
-            <feature name="leftdown" button="12" />
-            <feature name="leftleft" button="13" />
-            <feature name="leftright" button="14" />
-            <feature name="leftup" button="11" />
-            <feature name="rightbumper" button="5" />
-            <feature name="rightdown" button="6" />
-            <feature name="rightleft" axis="+5" />
-            <feature name="rightright" button="7" />
-            <feature name="rightup" axis="+4" />
-            <feature name="select" button="9" />
-            <feature name="start" button="8" />
-        </controller>
-        <controller id="game.controller.vectrex">
-            <feature name="button1" button="1" />
-            <feature name="button2" button="0" />
-            <feature name="button3" button="3" />
-            <feature name="button4" button="2" />
-            <feature name="down" button="12" />
-            <feature name="left" button="13" />
-            <feature name="right" button="14" />
-            <feature name="up" button="11" />
-        </controller>
-        <controller id="game.controller.ws">
-            <feature name="a" button="1" />
-            <feature name="b" button="0" />
-            <feature name="start" button="8" />
-            <feature name="xdown" button="12" />
-            <feature name="xleft" button="13" />
-            <feature name="xright" button="14" />
-            <feature name="xup" button="11" />
-            <feature name="ydown" axis="+4" />
-            <feature name="yleft" button="4" />
-            <feature name="yright" button="5" />
-            <feature name="yup" axis="+5" />
-        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/cocoa/Wireless_Controller_v054C_p09CC_14b_6a.xml b/peripheral.joystick/resources/buttonmaps/xml/cocoa/Wireless_Controller_v054C_p09CC_14b_6a.xml
index 564763b..fd40e94 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/cocoa/Wireless_Controller_v054C_p09CC_14b_6a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/cocoa/Wireless_Controller_v054C_p09CC_14b_6a.xml
@@ -2,6 +2,7 @@
 <buttonmap>
     <device name="Wireless Controller" provider="cocoa" vid="054C" pid="09CC" buttoncount="14" axiscount="6">
         <configuration>
+            <appearance id="game.controller.ps.dualanalog" />
             <axis index="4" center="-1" range="2" />
             <axis index="5" center="-1" range="2" />
             <button index="6" ignore="true" />
diff --git a/peripheral.joystick/resources/buttonmaps/xml/cocoa/Xbox_360_Wired_Controller_v045E_p028E_15b_6a.xml b/peripheral.joystick/resources/buttonmaps/xml/cocoa/Xbox_360_Wired_Controller_v045E_p028E_15b_6a.xml
index 479257b..5dbba93 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/cocoa/Xbox_360_Wired_Controller_v045E_p028E_15b_6a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/cocoa/Xbox_360_Wired_Controller_v045E_p028E_15b_6a.xml
@@ -2,6 +2,7 @@
 <buttonmap>
     <device name="Xbox 360 Wired Controller" provider="cocoa" vid="045E" pid="028E" buttoncount="15" axiscount="6">
         <configuration>
+            <appearance id="game.controller.default" />
             <axis index="4" center="-1" range="2" />
             <axis index="5" center="-1" range="2" />
         </configuration>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/cocoa/Xbox_360_Wired_Controller_v046D_pC21D_15b_6a.xml b/peripheral.joystick/resources/buttonmaps/xml/cocoa/Xbox_360_Wired_Controller_v046D_pC21D_15b_6a.xml
index d2bc380..150101d 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/cocoa/Xbox_360_Wired_Controller_v046D_pC21D_15b_6a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/cocoa/Xbox_360_Wired_Controller_v046D_pC21D_15b_6a.xml
@@ -2,6 +2,7 @@
 <buttonmap>
     <device name="Xbox 360 Wired Controller" provider="cocoa" vid="046D" pid="C21D" buttoncount="15" axiscount="6">
         <configuration>
+            <appearance id="game.controller.default" />
             <axis index="4" center="-1" range="2" />
             <axis index="5" center="-1" range="2" />
         </configuration>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/cocoa/Xbox_One_Wired_Controller_v045E_p02DD_15b_6a.xml b/peripheral.joystick/resources/buttonmaps/xml/cocoa/Xbox_One_Wired_Controller_v045E_p02DD_15b_6a.xml
index 4046731..22a557f 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/cocoa/Xbox_One_Wired_Controller_v045E_p02DD_15b_6a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/cocoa/Xbox_One_Wired_Controller_v045E_p02DD_15b_6a.xml
@@ -2,6 +2,7 @@
 <buttonmap>
     <device name="Xbox One Wired Controller" provider="cocoa" vid="045E" pid="02DD" buttoncount="15" axiscount="6">
         <configuration>
+            <appearance id="game.controller.default" />
             <axis index="4" center="-1" range="2" />
             <axis index="5" center="-1" range="2" />
         </configuration>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/cocoa/usb_gamepad____________v0810_pE501_10b_3a.xml b/peripheral.joystick/resources/buttonmaps/xml/cocoa/usb_gamepad____________v0810_pE501_10b_3a.xml
index a6214d7..0ae6a33 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/cocoa/usb_gamepad____________v0810_pE501_10b_3a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/cocoa/usb_gamepad____________v0810_pE501_10b_3a.xml
@@ -1,7 +1,9 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="usb gamepad           " provider="cocoa" vid="0810" pid="E501" buttoncount="10" axiscount="3">
-        <configuration />
+        <configuration>
+            <appearance id="game.controller.snes" />
+        </configuration>
         <controller id="game.controller.snes">
             <feature name="a" button="1" />
             <feature name="b" button="2" />
diff --git a/peripheral.joystick/resources/buttonmaps/xml/cocoa/usb_gamepad_v0810_pE501_10b_3a.xml b/peripheral.joystick/resources/buttonmaps/xml/cocoa/usb_gamepad_v0810_pE501_10b_3a.xml
index fc82a6e..27885c4 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/cocoa/usb_gamepad_v0810_pE501_10b_3a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/cocoa/usb_gamepad_v0810_pE501_10b_3a.xml
@@ -1,21 +1,9 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="usb gamepad" provider="cocoa" vid="0810" pid="E501" buttoncount="10" axiscount="3">
-        <configuration />
-        <controller id="game.controller.default">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="back" button="8" />
-            <feature name="down" axis="+2" />
-            <feature name="left" axis="-1" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+1" />
-            <feature name="rightbumper" button="6" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-2" />
-            <feature name="x" button="0" />
-            <feature name="y" button="3" />
-        </controller>
+        <configuration>
+            <appearance id="game.controller.snes" />
+        </configuration>
         <controller id="game.controller.snes">
             <feature name="a" button="1" />
             <feature name="b" button="2" />
diff --git a/peripheral.joystick/resources/buttonmaps/xml/directinput/4-PLAY_PORT.1_v16D0_p0D04_24b_1h_8a.xml b/peripheral.joystick/resources/buttonmaps/xml/directinput/4-PLAY_PORT.1_v16D0_p0D04_24b_1h_8a.xml
new file mode 100644
index 0000000..d54cfbb
--- /dev/null
+++ b/peripheral.joystick/resources/buttonmaps/xml/directinput/4-PLAY_PORT.1_v16D0_p0D04_24b_1h_8a.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" ?>
+<buttonmap>
+    <device name="4-PLAY PORT.1" provider="directinput" vid="16D0" pid="0D04" buttoncount="24" hatcount="1" axiscount="8">
+        <configuration>
+            <appearance id="game.controller.genesis.6button" />
+        </configuration>
+        <controller id="game.controller.genesis.6button">
+            <feature name="a" button="0" />
+            <feature name="b" button="1" />
+            <feature name="c" button="9" />
+            <feature name="down" axis="+1" />
+            <feature name="left" axis="-0" />
+            <feature name="mode" button="4" />
+            <feature name="right" axis="+0" />
+            <feature name="start" button="5" />
+            <feature name="up" axis="-1" />
+            <feature name="x" button="2" />
+            <feature name="y" button="3" />
+            <feature name="z" button="8" />
+        </controller>
+    </device>
+</buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/directinput/4_axis_16_button_joystick_v6666_p0667_16b_4a.xml b/peripheral.joystick/resources/buttonmaps/xml/directinput/4_axis_16_button_joystick_v6666_p0667_16b_4a.xml
new file mode 100644
index 0000000..0b5e461
--- /dev/null
+++ b/peripheral.joystick/resources/buttonmaps/xml/directinput/4_axis_16_button_joystick_v6666_p0667_16b_4a.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" ?>
+<buttonmap>
+    <device name="4 axis 16 button joystick" provider="directinput" vid="6666" pid="0667" buttoncount="16" axiscount="4">
+        <configuration>
+            <appearance id="game.controller.ps.dualanalog" />
+        </configuration>
+    </device>
+</buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/directinput/Adaptoid_v06F7_p1_14b_2a.xml b/peripheral.joystick/resources/buttonmaps/xml/directinput/Adaptoid_v06F7_p1_14b_2a.xml
index 465a565..9e11a16 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/directinput/Adaptoid_v06F7_p1_14b_2a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/directinput/Adaptoid_v06F7_p1_14b_2a.xml
@@ -1,73 +1,6 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="Adaptoid" provider="directinput" vid="06F7" pid="0001" buttoncount="14" axiscount="2">
-        <controller id="game.controller.default">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="back" button="9" />
-            <feature name="down" button="11" />
-            <feature name="left" button="12" />
-            <feature name="leftbumper" button="6" />
-            <feature name="lefttrigger" button="5" />
-            <feature name="right" button="13" />
-            <feature name="rightbumper" button="7" />
-            <feature name="rightstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="righttrigger" button="2" />
-            <feature name="start" button="8" />
-            <feature name="up" button="10" />
-            <feature name="x" button="3" />
-            <feature name="y" button="4" />
-        </controller>
-        <controller id="game.controller.dreamcast">
-            <feature name="a" button="0" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="1" />
-            <feature name="down" button="11" />
-            <feature name="left" button="12" />
-            <feature name="lefttrigger" button="6" />
-            <feature name="right" button="13" />
-            <feature name="righttrigger" button="7" />
-            <feature name="start" button="8" />
-            <feature name="up" button="10" />
-            <feature name="x" button="3" />
-            <feature name="y" button="4" />
-        </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="0" />
-            <feature name="b" button="3" />
-            <feature name="down" button="11" />
-            <feature name="left" button="12" />
-            <feature name="leftbumper" button="6" />
-            <feature name="right" button="13" />
-            <feature name="rightbumper" button="7" />
-            <feature name="select" button="9" />
-            <feature name="start" button="8" />
-            <feature name="up" button="10" />
-        </controller>
-        <controller id="game.controller.genesis">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="c" button="2" />
-            <feature name="down" button="11" />
-            <feature name="left" button="12" />
-            <feature name="mode" button="9" />
-            <feature name="right" button="13" />
-            <feature name="start" button="8" />
-            <feature name="up" button="10" />
-            <feature name="x" button="3" />
-            <feature name="y" button="4" />
-            <feature name="z" button="5" />
-        </controller>
         <controller id="game.controller.n64">
             <feature name="a" button="0" />
             <feature name="analogstick">
@@ -90,45 +23,5 @@
             <feature name="up" button="10" />
             <feature name="z" button="9" />
         </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="0" />
-            <feature name="b" button="3" />
-            <feature name="down" button="11" />
-            <feature name="left" button="12" />
-            <feature name="right" button="13" />
-            <feature name="select" button="9" />
-            <feature name="start" button="8" />
-            <feature name="up" button="10" />
-        </controller>
-        <controller id="game.controller.ps">
-            <feature name="circle" button="1" />
-            <feature name="cross" button="0" />
-            <feature name="down" button="11" />
-            <feature name="left" button="12" />
-            <feature name="leftbumper" button="6" />
-            <feature name="lefttrigger" button="5" />
-            <feature name="right" button="13" />
-            <feature name="rightbumper" button="7" />
-            <feature name="righttrigger" button="2" />
-            <feature name="select" button="9" />
-            <feature name="square" button="3" />
-            <feature name="start" button="8" />
-            <feature name="triangle" button="4" />
-            <feature name="up" button="10" />
-        </controller>
-        <controller id="game.controller.snes">
-            <feature name="a" button="1" />
-            <feature name="b" button="0" />
-            <feature name="down" button="11" />
-            <feature name="left" button="12" />
-            <feature name="leftbumper" button="6" />
-            <feature name="right" button="13" />
-            <feature name="rightbumper" button="7" />
-            <feature name="select" button="9" />
-            <feature name="start" button="8" />
-            <feature name="up" button="10" />
-            <feature name="x" button="4" />
-            <feature name="y" button="3" />
-        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/directinput/Bluetooth_HID_Port_v05A0_p3232_16b_1h_6a.xml b/peripheral.joystick/resources/buttonmaps/xml/directinput/Bluetooth_HID_Port_v05A0_p3232_16b_1h_6a.xml
index 9387b49..76638d0 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/directinput/Bluetooth_HID_Port_v05A0_p3232_16b_1h_6a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/directinput/Bluetooth_HID_Port_v05A0_p3232_16b_1h_6a.xml
@@ -1,21 +1,9 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="Bluetooth HID Port" provider="directinput" vid="05A0" pid="3232" buttoncount="16" hatcount="1" axiscount="6">
-        <configuration />
-        <controller id="game.controller.default">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="back" button="10" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="leftbumper" button="6" />
-            <feature name="right" axis="+0" />
-            <feature name="rightbumper" button="7" />
-            <feature name="start" button="11" />
-            <feature name="up" axis="-1" />
-            <feature name="x" button="3" />
-            <feature name="y" button="4" />
-        </controller>
+        <configuration>
+            <appearance id="game.controller.snes" />
+        </configuration>
         <controller id="game.controller.snes">
             <feature name="a" button="0" />
             <feature name="b" button="1" />
diff --git a/peripheral.joystick/resources/buttonmaps/xml/directinput/GamePad_Pro_USB_v0428_p4001_10b_2a.xml b/peripheral.joystick/resources/buttonmaps/xml/directinput/GamePad_Pro_USB_v0428_p4001_10b_2a.xml
index 64ab90e..2e8c4e9 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/directinput/GamePad_Pro_USB_v0428_p4001_10b_2a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/directinput/GamePad_Pro_USB_v0428_p4001_10b_2a.xml
@@ -17,96 +17,5 @@
             <feature name="x" button="0" />
             <feature name="y" button="3" />
         </controller>
-        <controller id="game.controller.dreamcast">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="lefttrigger" button="6" />
-            <feature name="right" axis="+0" />
-            <feature name="righttrigger" button="7" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-1" />
-            <feature name="x" button="0" />
-            <feature name="y" button="3" />
-        </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+0" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-1" />
-        </controller>
-        <controller id="game.controller.genesis">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="c" button="5" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="mode" button="8" />
-            <feature name="right" axis="+0" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-1" />
-            <feature name="x" button="0" />
-            <feature name="y" button="3" />
-            <feature name="z" button="4" />
-        </controller>
-        <controller id="game.controller.n64">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+0" />
-            <feature name="rightbumper" button="5" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-1" />
-            <feature name="z" button="6" />
-        </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="right" axis="+0" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-1" />
-        </controller>
-        <controller id="game.controller.ps">
-            <feature name="circle" button="2" />
-            <feature name="cross" button="1" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="leftbumper" button="4" />
-            <feature name="lefttrigger" button="6" />
-            <feature name="right" axis="+0" />
-            <feature name="rightbumper" button="5" />
-            <feature name="righttrigger" button="7" />
-            <feature name="select" button="8" />
-            <feature name="square" button="0" />
-            <feature name="start" button="9" />
-            <feature name="triangle" button="3" />
-            <feature name="up" axis="-1" />
-        </controller>
-        <controller id="game.controller.snes">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+0" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-1" />
-            <feature name="x" button="0" />
-            <feature name="y" button="3" />
-        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/directinput/Generic_USB_Joystick_v0079_p0006_12b_1h_5a.xml b/peripheral.joystick/resources/buttonmaps/xml/directinput/Generic_USB_Joystick_v0079_p0006_12b_1h_5a.xml
index 5148592..bf6bc7e 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/directinput/Generic_USB_Joystick_v0079_p0006_12b_1h_5a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/directinput/Generic_USB_Joystick_v0079_p0006_12b_1h_5a.xml
@@ -31,126 +31,5 @@
             <feature name="x" button="3" />
             <feature name="y" button="0" />
         </controller>
-        <controller id="game.controller.dreamcast">
-            <feature name="a" button="2" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="1" />
-            <feature name="down" hat="h0down" />
-            <feature name="left" hat="h0left" />
-            <feature name="lefttrigger" button="4" />
-            <feature name="right" hat="h0right" />
-            <feature name="righttrigger" button="5" />
-            <feature name="start" button="9" />
-            <feature name="up" hat="h0up" />
-            <feature name="x" button="3" />
-            <feature name="y" button="0" />
-        </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="2" />
-            <feature name="b" button="3" />
-            <feature name="down" hat="h0down" />
-            <feature name="left" hat="h0left" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" hat="h0right" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" hat="h0up" />
-        </controller>
-        <controller id="game.controller.genesis">
-            <feature name="a" button="3" />
-            <feature name="b" button="2" />
-            <feature name="c" button="1" />
-            <feature name="down" hat="h0down" />
-            <feature name="left" hat="h0left" />
-            <feature name="mode" button="8" />
-            <feature name="right" hat="h0right" />
-            <feature name="start" button="9" />
-            <feature name="up" hat="h0up" />
-            <feature name="x" button="4" />
-            <feature name="y" button="0" />
-            <feature name="z" button="5" />
-        </controller>
-        <controller id="game.controller.n64">
-            <feature name="a" button="2" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="3" />
-            <feature name="cup" axis="-3" />
-            <feature name="cdown" axis="+3" />
-            <feature name="cleft" axis="-2" />
-            <feature name="cright" axis="+2" />
-            <feature name="down" hat="h0down" />
-            <feature name="left" hat="h0left" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" hat="h0right" />
-            <feature name="rightbumper" button="5" />
-            <feature name="start" button="9" />
-            <feature name="up" hat="h0up" />
-            <feature name="z" button="6" />
-        </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="2" />
-            <feature name="b" button="3" />
-            <feature name="down" hat="h0down" />
-            <feature name="left" hat="h0left" />
-            <feature name="right" hat="h0right" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" hat="h0up" />
-        </controller>
-        <controller id="game.controller.ps">
-            <feature name="circle" button="1" />
-            <feature name="cross" button="2" />
-            <feature name="down" hat="h0down" />
-            <feature name="l3" button="10" />
-            <feature name="left" hat="h0left" />
-            <feature name="leftbumper" button="4" />
-            <feature name="leftstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <left axis="-0" />
-                <right axis="+0" />
-            </feature>
-            <feature name="lefttrigger" button="6" />
-            <feature name="r3" button="11" />
-            <feature name="right" hat="h0right" />
-            <feature name="rightbumper" button="5" />
-            <feature name="rightstick">
-                <up axis="-3" />
-                <down axis="+3" />
-                <right axis="+2" />
-                <left axis="-2" />
-            </feature>
-            <feature name="righttrigger" button="7" />
-            <feature name="select" button="8" />
-            <feature name="square" button="3" />
-            <feature name="start" button="9" />
-            <feature name="triangle" button="0" />
-            <feature name="up" hat="h0up" />
-        </controller>
-        <controller id="game.controller.snes">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="down" hat="h0down" />
-            <feature name="left" hat="h0left" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" hat="h0right" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" hat="h0up" />
-            <feature name="x" button="0" />
-            <feature name="y" button="3" />
-        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/directinput/Generic___USB__Joystick___v0079_p0006_12b_1h_5a.xml b/peripheral.joystick/resources/buttonmaps/xml/directinput/Generic___USB__Joystick___v0079_p0006_12b_1h_5a.xml
new file mode 100644
index 0000000..36978cf
--- /dev/null
+++ b/peripheral.joystick/resources/buttonmaps/xml/directinput/Generic___USB__Joystick___v0079_p0006_12b_1h_5a.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" ?>
+<buttonmap>
+    <device name="Generic   USB  Joystick  " provider="directinput" vid="0079" pid="0006" buttoncount="12" hatcount="1" axiscount="5">
+        <configuration>
+            <appearance id="game.controller.n64" />
+        </configuration>
+        <controller id="game.controller.n64">
+            <feature name="a" button="6" />
+            <feature name="analogstick">
+                <up axis="-1" />
+                <down axis="+1" />
+                <right axis="+0" />
+                <left axis="-0" />
+            </feature>
+            <feature name="b" button="8" />
+            <feature name="cdown" button="2" />
+            <feature name="cleft" button="3" />
+            <feature name="cright" button="1" />
+            <feature name="cup" button="0" />
+            <feature name="down" hat="h0down" />
+            <feature name="left" hat="h0left" />
+            <feature name="leftbumper" button="4" />
+            <feature name="right" hat="h0right" />
+            <feature name="rightbumper" button="5" />
+            <feature name="start" button="9" />
+            <feature name="up" hat="h0up" />
+            <feature name="z" button="7" />
+        </controller>
+    </device>
+</buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/directinput/Logitech_RumblePad_2_USB_v046D_pC218_12b_1h_4a.xml b/peripheral.joystick/resources/buttonmaps/xml/directinput/Logitech_RumblePad_2_USB_v046D_pC218_12b_1h_4a.xml
index c9e0491..9b47ae0 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/directinput/Logitech_RumblePad_2_USB_v046D_pC218_12b_1h_4a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/directinput/Logitech_RumblePad_2_USB_v046D_pC218_12b_1h_4a.xml
@@ -31,126 +31,5 @@
             <feature name="x" button="0" />
             <feature name="y" button="3" />
         </controller>
-        <controller id="game.controller.dreamcast">
-            <feature name="a" button="1" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="2" />
-            <feature name="down" hat="h0down" />
-            <feature name="left" hat="h0left" />
-            <feature name="lefttrigger" button="4" />
-            <feature name="right" hat="h0right" />
-            <feature name="righttrigger" button="5" />
-            <feature name="start" button="9" />
-            <feature name="up" hat="h0up" />
-            <feature name="x" button="0" />
-            <feature name="y" button="3" />
-        </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="1" />
-            <feature name="b" button="0" />
-            <feature name="down" hat="h0down" />
-            <feature name="left" hat="h0left" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" hat="h0right" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" hat="h0up" />
-        </controller>
-        <controller id="game.controller.genesis">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="c" button="2" />
-            <feature name="down" hat="h0down" />
-            <feature name="left" hat="h0left" />
-            <feature name="mode" button="8" />
-            <feature name="right" hat="h0right" />
-            <feature name="start" button="9" />
-            <feature name="up" hat="h0up" />
-            <feature name="x" button="4" />
-            <feature name="y" button="3" />
-            <feature name="z" button="5" />
-        </controller>
-        <controller id="game.controller.n64">
-            <feature name="a" button="1" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="0" />
-            <feature name="cleft" axis="-2" />
-            <feature name="cright" axis="+2" />
-            <feature name="cup" axis="-3" />
-            <feature name="cdown" axis="+3" />
-            <feature name="down" hat="h0down" />
-            <feature name="left" hat="h0left" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" hat="h0right" />
-            <feature name="rightbumper" button="5" />
-            <feature name="start" button="9" />
-            <feature name="up" hat="h0up" />
-            <feature name="z" button="6" />
-        </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="1" />
-            <feature name="b" button="0" />
-            <feature name="down" hat="h0down" />
-            <feature name="left" hat="h0left" />
-            <feature name="right" hat="h0right" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" hat="h0up" />
-        </controller>
-        <controller id="game.controller.ps">
-            <feature name="circle" button="2" />
-            <feature name="cross" button="1" />
-            <feature name="down" hat="h0down" />
-            <feature name="l3" button="10" />
-            <feature name="left" hat="h0left" />
-            <feature name="leftbumper" button="4" />
-            <feature name="leftstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="lefttrigger" button="6" />
-            <feature name="r3" button="11" />
-            <feature name="right" hat="h0right" />
-            <feature name="rightbumper" button="5" />
-            <feature name="rightstick">
-                <up axis="-3" />
-                <down axis="+3" />
-                <right axis="+2" />
-                <left axis="-2" />
-            </feature>
-            <feature name="righttrigger" button="7" />
-            <feature name="select" button="8" />
-            <feature name="square" button="0" />
-            <feature name="start" button="9" />
-            <feature name="triangle" button="3" />
-            <feature name="up" hat="h0up" />
-        </controller>
-        <controller id="game.controller.snes">
-            <feature name="a" button="2" />
-            <feature name="b" button="1" />
-            <feature name="down" hat="h0down" />
-            <feature name="left" hat="h0left" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" hat="h0right" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" hat="h0up" />
-            <feature name="x" button="3" />
-            <feature name="y" button="0" />
-        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/directinput/MAYFLASH_GameCube_Controller_Adapter_v0079_p1844_16b_1h_6a.xml b/peripheral.joystick/resources/buttonmaps/xml/directinput/MAYFLASH_GameCube_Controller_Adapter_v0079_p1844_16b_1h_6a.xml
index 5ee837e..7e3c2a9 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/directinput/MAYFLASH_GameCube_Controller_Adapter_v0079_p1844_16b_1h_6a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/directinput/MAYFLASH_GameCube_Controller_Adapter_v0079_p1844_16b_1h_6a.xml
@@ -1,149 +1,37 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="MAYFLASH GameCube Controller Adapter" provider="directinput" vid="0079" pid="1844" buttoncount="16" hatcount="1" axiscount="6">
-        <configuration />
-        <controller id="game.controller.default">
+        <configuration>
+            <appearance id="game.controller.gamecube" />
+            <axis index="3" center="-1" range="1" />
+            <axis index="4" center="-1" range="2" />
+            <button index="4" ignore="true" />
+            <button index="5" ignore="true" />
+        </configuration>
+        <controller id="game.controller.gamecube">
             <feature name="a" button="1" />
             <feature name="b" button="2" />
-            <feature name="down" button="14" />
-            <feature name="left" button="15" />
-            <feature name="leftstick">
+            <feature name="controlstick">
                 <up axis="-1" />
                 <down axis="+1" />
                 <right axis="+0" />
                 <left axis="-0" />
             </feature>
-            <feature name="lefttrigger" axis="+3" />
-            <feature name="right" button="13" />
-            <feature name="rightbumper" button="7" />
-            <feature name="rightstick">
+            <feature name="cstick">
                 <up axis="-2" />
                 <down axis="+2" />
                 <right axis="+5" />
                 <left axis="-5" />
             </feature>
-            <feature name="righttrigger" axis="+4" />
-            <feature name="start" button="9" />
-            <feature name="up" button="12" />
-            <feature name="x" button="0" />
-            <feature name="y" button="3" />
-        </controller>
-        <controller id="game.controller.dreamcast">
-            <feature name="a" button="1" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="2" />
-            <feature name="down" button="14" />
-            <feature name="left" button="15" />
-            <feature name="lefttrigger" axis="+3" />
-            <feature name="right" button="13" />
-            <feature name="righttrigger" axis="+4" />
-            <feature name="start" button="9" />
-            <feature name="up" button="12" />
-            <feature name="x" button="0" />
-            <feature name="y" button="3" />
-        </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="down" button="14" />
-            <feature name="left" button="15" />
-            <feature name="leftbumper" axis="+3" />
-            <feature name="right" button="13" />
-            <feature name="rightbumper" axis="+4" />
-            <feature name="select" button="7" />
-            <feature name="start" button="9" />
-            <feature name="up" button="12" />
-        </controller>
-        <controller id="game.controller.genesis">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="c" axis="+4" />
             <feature name="down" button="14" />
+            <feature name="l" axis="+3" />
             <feature name="left" button="15" />
-            <feature name="mode" button="7" />
             <feature name="right" button="13" />
             <feature name="start" button="9" />
             <feature name="up" button="12" />
             <feature name="x" button="0" />
             <feature name="y" button="3" />
-            <feature name="z" axis="+3" />
-        </controller>
-        <controller id="game.controller.n64">
-            <feature name="a" button="1" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="2" />
-            <feature name="cdown" axis="+2" />
-            <feature name="cleft" axis="-5" />
-            <feature name="cright" axis="+5" />
-            <feature name="cup" axis="-2" />
-            <feature name="down" button="14" />
-            <feature name="left" button="15" />
-            <feature name="leftbumper" axis="+3" />
-            <feature name="right" button="13" />
-            <feature name="rightbumper" axis="+4" />
-            <feature name="start" button="9" />
-            <feature name="up" button="12" />
             <feature name="z" button="7" />
         </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="down" button="14" />
-            <feature name="left" button="15" />
-            <feature name="right" button="13" />
-            <feature name="select" button="7" />
-            <feature name="start" button="9" />
-            <feature name="up" button="12" />
-        </controller>
-        <controller id="game.controller.ps">
-            <feature name="circle" button="2" />
-            <feature name="cross" button="1" />
-            <feature name="down" button="14" />
-            <feature name="left" button="15" />
-            <feature name="leftstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="lefttrigger" axis="+3" />
-            <feature name="right" button="13" />
-            <feature name="rightstick">
-                <up axis="-2" />
-                <down axis="+2" />
-                <right axis="+5" />
-                <left axis="-5" />
-            </feature>
-            <feature name="righttrigger" axis="+4" />
-            <feature name="select" button="7" />
-            <feature name="square" button="0" />
-            <feature name="start" button="9" />
-            <feature name="triangle" button="3" />
-            <feature name="up" button="12" />
-        </controller>
-        <controller id="game.controller.snes">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="down" button="14" />
-            <feature name="left" button="15" />
-            <feature name="leftbumper" axis="+3" />
-            <feature name="right" button="13" />
-            <feature name="rightbumper" axis="+4" />
-            <feature name="select" button="7" />
-            <feature name="start" button="9" />
-            <feature name="up" button="12" />
-            <feature name="x" button="0" />
-            <feature name="y" button="3" />
-        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/directinput/PS_R__Ga_epad_v054C_p0268_19b_5a.xml b/peripheral.joystick/resources/buttonmaps/xml/directinput/PS_R__Ga_epad_v054C_p0268_19b_5a.xml
index fb84441..2786917 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/directinput/PS_R__Ga_epad_v054C_p0268_19b_5a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/directinput/PS_R__Ga_epad_v054C_p0268_19b_5a.xml
@@ -1,14 +1,16 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="PS(R) Ga`epad" provider="directinput" vid="054C" pid="0268" buttoncount="19" axiscount="5">
-        <configuration />
-        <controller id="game.controller.default">
-            <feature name="a" button="14" />
-            <feature name="b" button="13" />
-            <feature name="back" button="0" />
+        <configuration>
+            <appearance id="game.controller.ps.dualanalog" />
+        </configuration>
+        <controller id="game.controller.ps.dualanalog">
+            <feature name="analog" button="16" />
+            <feature name="circle" button="13" />
+            <feature name="cross" button="14" />
             <feature name="down" button="6" />
-            <feature name="guide" button="16" />
-            <feature name="left" button="17" />
+            <feature name="l3" button="1" />
+            <feature name="left" button="7" />
             <feature name="leftbumper" button="10" />
             <feature name="leftstick">
                 <up axis="-1" />
@@ -16,20 +18,20 @@
                 <right axis="+0" />
                 <left axis="-0" />
             </feature>
-            <feature name="leftthumb" button="1" />
             <feature name="lefttrigger" button="8" />
+            <feature name="r3" button="2" />
             <feature name="right" button="5" />
             <feature name="rightbumper" button="11" />
             <feature name="rightstick">
                 <right axis="+2" />
                 <left axis="-2" />
             </feature>
-            <feature name="rightthumb" button="2" />
             <feature name="righttrigger" button="9" />
+            <feature name="select" button="0" />
+            <feature name="square" button="15" />
             <feature name="start" button="3" />
+            <feature name="triangle" button="12" />
             <feature name="up" button="4" />
-            <feature name="x" button="15" />
-            <feature name="y" button="12" />
         </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/directinput/Twin_USB_Joystick_v0810_p0001_12b_1h_4a.xml b/peripheral.joystick/resources/buttonmaps/xml/directinput/Twin_USB_Joystick_v0810_p0001_12b_1h_4a.xml
index 2be446d..b9a75e9 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/directinput/Twin_USB_Joystick_v0810_p0001_12b_1h_4a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/directinput/Twin_USB_Joystick_v0810_p0001_12b_1h_4a.xml
@@ -29,123 +29,5 @@
             <feature name="x" button="3" />
             <feature name="y" button="0" />
         </controller>
-        <controller id="game.controller.dreamcast">
-            <feature name="a" button="2" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="1" />
-            <feature name="down" hat="h0down" />
-            <feature name="left" hat="h0left" />
-            <feature name="lefttrigger" button="4" />
-            <feature name="right" hat="h0right" />
-            <feature name="righttrigger" button="5" />
-            <feature name="start" button="9" />
-            <feature name="up" hat="h0up" />
-            <feature name="x" button="3" />
-            <feature name="y" button="0" />
-        </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="2" />
-            <feature name="b" button="1" />
-            <feature name="down" hat="h0down" />
-            <feature name="left" hat="h0left" />
-            <feature name="leftbumper" button="6" />
-            <feature name="right" hat="h0right" />
-            <feature name="rightbumper" button="7" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" hat="h0up" />
-        </controller>
-        <controller id="game.controller.genesis">
-            <feature name="a" button="3" />
-            <feature name="b" button="2" />
-            <feature name="c" button="1" />
-            <feature name="down" hat="h0down" />
-            <feature name="left" hat="h0left" />
-            <feature name="mode" button="8" />
-            <feature name="right" hat="h0right" />
-            <feature name="start" button="9" />
-            <feature name="up" hat="h0up" />
-            <feature name="x" button="0" />
-            <feature name="y" button="6" />
-            <feature name="z" button="7" />
-        </controller>
-        <controller id="game.controller.n64">
-            <feature name="a" button="2" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="1" />
-            <feature name="cdown" button="8" />
-            <feature name="cleft" button="6" />
-            <feature name="cright" button="7" />
-            <feature name="cup" button="3" />
-            <feature name="down" hat="h0down" />
-            <feature name="left" hat="h0left" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" hat="h0right" />
-            <feature name="rightbumper" button="5" />
-            <feature name="start" button="9" />
-            <feature name="up" hat="h0up" />
-            <feature name="z" button="0" />
-        </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="2" />
-            <feature name="b" button="1" />
-            <feature name="down" hat="h0down" />
-            <feature name="left" hat="h0left" />
-            <feature name="right" hat="h0right" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" hat="h0up" />
-        </controller>
-        <controller id="game.controller.ps">
-            <feature name="circle" button="1" />
-            <feature name="cross" button="2" />
-            <feature name="down" hat="h0down" />
-            <feature name="l3" button="10" />
-            <feature name="left" hat="h0left" />
-            <feature name="leftbumper" button="6" />
-            <feature name="leftstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="lefttrigger" button="4" />
-            <feature name="r3" button="11" />
-            <feature name="right" hat="h0right" />
-            <feature name="rightbumper" button="7" />
-            <feature name="rightstick">
-                <up axis="-2" />
-            </feature>
-            <feature name="righttrigger" button="5" />
-            <feature name="select" button="8" />
-            <feature name="square" button="3" />
-            <feature name="start" button="9" />
-            <feature name="triangle" button="0" />
-            <feature name="up" hat="h0up" />
-        </controller>
-        <controller id="game.controller.snes">
-            <feature name="a" button="2" />
-            <feature name="b" button="1" />
-            <feature name="down" hat="h0down" />
-            <feature name="left" hat="h0left" />
-            <feature name="leftbumper" button="6" />
-            <feature name="right" hat="h0right" />
-            <feature name="rightbumper" button="7" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" hat="h0up" />
-            <feature name="x" button="3" />
-            <feature name="y" button="0" />
-        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/directinput/USB_GamePad_v0E8F_p3013_16b_1h_4a.xml b/peripheral.joystick/resources/buttonmaps/xml/directinput/USB_GamePad_v0E8F_p3013_16b_1h_4a.xml
index e27eda1..325f1a6 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/directinput/USB_GamePad_v0E8F_p3013_16b_1h_4a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/directinput/USB_GamePad_v0E8F_p3013_16b_1h_4a.xml
@@ -1,7 +1,9 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="USB GamePad" provider="directinput" vid="0E8F" pid="3013" buttoncount="16" hatcount="1" axiscount="4">
-        <configuration />
+        <configuration>
+            <appearance id="game.controller.snes" />
+        </configuration>
         <controller id="game.controller.snes">
             <feature name="a" button="1" />
             <feature name="b" button="2" />
diff --git a/peripheral.joystick/resources/buttonmaps/xml/directinput/USB_Gamepad_v0079_p0011_10b_6a.xml b/peripheral.joystick/resources/buttonmaps/xml/directinput/USB_Gamepad_v0079_p0011_10b_6a.xml
index 20d953d..33e46b7 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/directinput/USB_Gamepad_v0079_p0011_10b_6a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/directinput/USB_Gamepad_v0079_p0011_10b_6a.xml
@@ -1,7 +1,9 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="USB Gamepad" provider="directinput" vid="0079" pid="0011" buttoncount="10" axiscount="6">
-        <configuration />
+        <configuration>
+            <appearance id="game.controller.snes" />
+        </configuration>
         <controller id="game.controller.snes">
             <feature name="a" button="1" />
             <feature name="b" button="2" />
diff --git a/peripheral.joystick/resources/buttonmaps/xml/directinput/USB_Joystick_v0E8F_p3_12b_1h_5a.xml b/peripheral.joystick/resources/buttonmaps/xml/directinput/USB_Joystick_v0E8F_p3_12b_1h_5a.xml
index fd4acb2..328dc26 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/directinput/USB_Joystick_v0E8F_p3_12b_1h_5a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/directinput/USB_Joystick_v0E8F_p3_12b_1h_5a.xml
@@ -31,126 +31,5 @@
             <feature name="x" button="0" />
             <feature name="y" button="1" />
         </controller>
-        <controller id="game.controller.dreamcast">
-            <feature name="a" button="2" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="3" />
-            <feature name="down" hat="h0down" />
-            <feature name="left" hat="h0left" />
-            <feature name="lefttrigger" button="4" />
-            <feature name="right" hat="h0right" />
-            <feature name="righttrigger" button="6" />
-            <feature name="start" button="9" />
-            <feature name="up" hat="h0up" />
-            <feature name="x" button="0" />
-            <feature name="y" button="1" />
-        </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="2" />
-            <feature name="b" button="0" />
-            <feature name="down" hat="h0down" />
-            <feature name="left" hat="h0left" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" hat="h0right" />
-            <feature name="rightbumper" button="6" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" hat="h0up" />
-        </controller>
-        <controller id="game.controller.genesis">
-            <feature name="a" button="0" />
-            <feature name="b" button="2" />
-            <feature name="c" button="3" />
-            <feature name="down" hat="h0down" />
-            <feature name="left" hat="h0left" />
-            <feature name="mode" button="8" />
-            <feature name="right" hat="h0right" />
-            <feature name="start" button="9" />
-            <feature name="up" hat="h0up" />
-            <feature name="x" button="4" />
-            <feature name="y" button="1" />
-            <feature name="z" button="6" />
-        </controller>
-        <controller id="game.controller.n64">
-            <feature name="a" button="2" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="0" />
-			<feature name="cleft" axis="-3" />
-			<feature name="cright" axis="+3" />
-			<feature name="cup" axis="-2" />
-            <feature name="cdown" axis="+2" />
-            <feature name="down" hat="h0down" />
-            <feature name="left" hat="h0left" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" hat="h0right" />
-            <feature name="rightbumper" button="6" />
-            <feature name="start" button="9" />
-            <feature name="up" hat="h0up" />
-            <feature name="z" button="5" />
-        </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="2" />
-            <feature name="b" button="0" />
-            <feature name="down" hat="h0down" />
-            <feature name="left" hat="h0left" />
-            <feature name="right" hat="h0right" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" hat="h0up" />
-        </controller>
-        <controller id="game.controller.ps">
-            <feature name="circle" button="3" />
-            <feature name="cross" button="2" />
-            <feature name="down" hat="h0down" />
-            <feature name="l3" button="10" />
-            <feature name="left" hat="h0left" />
-            <feature name="leftbumper" button="4" />
-            <feature name="leftstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="lefttrigger" button="5" />
-            <feature name="r3" button="11" />
-            <feature name="right" hat="h0right" />
-            <feature name="rightbumper" button="6" />
-            <feature name="rightstick">
-                <up axis="-2" />
-                <down axis="+2" />
-                <right axis="+3" />
-                <left axis="-3" />
-            </feature>
-            <feature name="righttrigger" button="7" />
-            <feature name="select" button="8" />
-            <feature name="square" button="0" />
-            <feature name="start" button="9" />
-            <feature name="triangle" button="1" />
-            <feature name="up" hat="h0up" />
-        </controller>
-        <controller id="game.controller.snes">
-            <feature name="a" button="3" />
-            <feature name="b" button="2" />
-            <feature name="down" hat="h0down" />
-            <feature name="left" hat="h0left" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" hat="h0right" />
-            <feature name="rightbumper" button="6" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" hat="h0up" />
-            <feature name="x" button="1" />
-            <feature name="y" button="0" />
-        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/directinput/Wireless_Controller_v054C_p09CC_14b_1h_6a.xml b/peripheral.joystick/resources/buttonmaps/xml/directinput/Wireless_Controller_v054C_p09CC_14b_1h_6a.xml
index ff30bb4..4ddef1d 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/directinput/Wireless_Controller_v054C_p09CC_14b_1h_6a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/directinput/Wireless_Controller_v054C_p09CC_14b_1h_6a.xml
@@ -2,17 +2,18 @@
 <buttonmap>
     <device name="Wireless Controller" provider="directinput" vid="054C" pid="09CC" buttoncount="14" hatcount="1" axiscount="6">
         <configuration>
+            <appearance id="game.controller.ps.dualanalog" />
             <axis index="3" center="-1" range="2" />
             <axis index="4" center="-1" range="2" />
             <button index="6" ignore="true" />
             <button index="7" ignore="true" />
         </configuration>
-        <controller id="game.controller.default">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="back" button="8" />
+        <controller id="game.controller.ps.dualanalog">
+            <feature name="analog" button="12" />
+            <feature name="circle" button="2" />
+            <feature name="cross" button="1" />
             <feature name="down" hat="h0down" />
-            <feature name="guide" button="12" />
+            <feature name="l3" button="10" />
             <feature name="left" hat="h0left" />
             <feature name="leftbumper" button="4" />
             <feature name="leftstick">
@@ -21,8 +22,8 @@
                 <right axis="+0" />
                 <left axis="-0" />
             </feature>
-            <feature name="leftthumb" button="10" />
             <feature name="lefttrigger" axis="+3" />
+            <feature name="r3" button="11" />
             <feature name="right" hat="h0right" />
             <feature name="rightbumper" button="5" />
             <feature name="rightstick">
@@ -31,12 +32,12 @@
                 <right axis="+2" />
                 <left axis="-2" />
             </feature>
-            <feature name="rightthumb" button="11" />
             <feature name="righttrigger" axis="+4" />
+            <feature name="select" button="8" />
+            <feature name="square" button="0" />
             <feature name="start" button="9" />
+            <feature name="triangle" button="3" />
             <feature name="up" hat="h0up" />
-            <feature name="x" button="0" />
-            <feature name="y" button="3" />
         </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/directinput/usb_gamepad____________v0810_pE501_10b_2a.xml b/peripheral.joystick/resources/buttonmaps/xml/directinput/usb_gamepad____________v0810_pE501_10b_2a.xml
index d175391..f418345 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/directinput/usb_gamepad____________v0810_pE501_10b_2a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/directinput/usb_gamepad____________v0810_pE501_10b_2a.xml
@@ -1,7 +1,9 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="usb gamepad           " provider="directinput" vid="0810" pid="E501" buttoncount="10" axiscount="2">
-        <configuration />
+        <configuration>
+            <appearance id="game.controller.snes" />
+        </configuration>
         <controller id="game.controller.snes">
             <feature name="a" button="1" />
             <feature name="b" button="2" />
diff --git a/peripheral.joystick/resources/buttonmaps/xml/directinput/usb_gamepad_v0810_pE501_10b_2a.xml b/peripheral.joystick/resources/buttonmaps/xml/directinput/usb_gamepad_v0810_pE501_10b_2a.xml
index 676e6f6..3f6d9ef 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/directinput/usb_gamepad_v0810_pE501_10b_2a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/directinput/usb_gamepad_v0810_pE501_10b_2a.xml
@@ -1,7 +1,9 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="usb gamepad" provider="directinput" vid="0810" pid="E501" buttoncount="10" axiscount="2">
-        <configuration />
+        <configuration>
+            <appearance id="game.controller.snes" />
+        </configuration>
         <controller id="game.controller.snes">
             <feature name="a" button="1" />
             <feature name="b" button="2" />
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/8Bitdo_NES30_Arcade_x__10b_8a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/8Bitdo_NES30_Arcade_x__10b_8a.xml
index 0b10bc8..15daa30 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/8Bitdo_NES30_Arcade_x__10b_8a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/8Bitdo_NES30_Arcade_x__10b_8a.xml
@@ -15,50 +15,11 @@
             <feature name="leftbumper" axis="+5" />
             <feature name="right" axis="+0" />
             <feature name="rightbumper" axis="+2" />
+            <feature name="select" button="6" />
             <feature name="start" button="5" />
             <feature name="up" axis="-1" />
             <feature name="x" button="2" />
             <feature name="y" button="3" />
         </controller>
-        <controller id="game.controller.genesis.6button">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="c" axis="+5" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="mode" button="6" />
-            <feature name="right" axis="+0" />
-            <feature name="start" button="7" />
-            <feature name="up" axis="-1" />
-            <feature name="x" button="2" />
-            <feature name="y" button="3" />
-            <feature name="z" button="5" />
-        </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="right" axis="+0" />
-            <feature name="select" button="3" />
-            <feature name="start" button="2" />
-            <feature name="up" axis="-1" />
-        </controller>
-        <controller id="game.controller.ps.gamepad">
-            <feature name="circle" button="0" />
-            <feature name="cross" button="1" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="leftbumper" button="5" />
-            <feature name="lefttrigger" axis="+5" />
-            <feature name="right" axis="+0" />
-            <feature name="rightbumper" button="4" />
-            <feature name="righttrigger" axis="+2" />
-            <feature name="select" button="6" />
-            <feature name="square" button="3" />
-            <feature name="start" button="7" />
-            <feature name="triangle" button="2" />
-            <feature name="up" axis="-1" />
-        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/8Bitdo_NES30_GamePad_16b_8a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/8Bitdo_NES30_GamePad_16b_8a.xml
index 9e1432c..d89f004 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/8Bitdo_NES30_GamePad_16b_8a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/8Bitdo_NES30_GamePad_16b_8a.xml
@@ -1,56 +1,9 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="8Bitdo NES30 GamePad" provider="linux" buttoncount="16" axiscount="8">
-        <controller id="game.controller.default">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="back" button="10" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="leftbumper" button="6" />
-            <feature name="right" axis="+0" />
-            <feature name="rightbumper" button="7" />
-            <feature name="start" button="11" />
-            <feature name="up" axis="-1" />
-            <feature name="x" button="3" />
-            <feature name="y" button="4" />
-        </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="leftbumper" button="6" />
-            <feature name="right" axis="+0" />
-            <feature name="rightbumper" button="7" />
-            <feature name="select" button="10" />
-            <feature name="start" button="11" />
-            <feature name="up" axis="-1" />
-        </controller>
-        <controller id="game.controller.genesis">
-            <feature name="a" button="4" />
-            <feature name="b" button="1" />
-            <feature name="c" button="0" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="mode" button="10" />
-            <feature name="right" axis="+0" />
-            <feature name="start" button="11" />
-            <feature name="up" axis="-1" />
-            <feature name="x" button="6" />
-            <feature name="y" button="3" />
-            <feature name="z" button="7" />
-        </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="right" axis="+0" />
-            <feature name="select" button="10" />
-            <feature name="start" button="11" />
-            <feature name="up" axis="-1" />
-        </controller>
+        <configuration>
+            <appearance id="game.controller.snes" />
+        </configuration>
         <controller id="game.controller.snes">
             <feature name="a" button="0" />
             <feature name="b" button="1" />
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/8Bitdo_NES30_GamePad_Joystick_22b_8a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/8Bitdo_NES30_GamePad_Joystick_22b_8a.xml
index efccb30..16bbe73 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/8Bitdo_NES30_GamePad_Joystick_22b_8a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/8Bitdo_NES30_GamePad_Joystick_22b_8a.xml
@@ -1,56 +1,9 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="8Bitdo NES30 GamePad Joystick" provider="linux" buttoncount="22" axiscount="8">
-        <controller id="game.controller.default">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="back" button="10" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="leftbumper" button="6" />
-            <feature name="right" axis="+0" />
-            <feature name="rightbumper" button="7" />
-            <feature name="start" button="11" />
-            <feature name="up" axis="-1" />
-            <feature name="x" button="3" />
-            <feature name="y" button="4" />
-        </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="leftbumper" button="6" />
-            <feature name="right" axis="+0" />
-            <feature name="rightbumper" button="7" />
-            <feature name="select" button="10" />
-            <feature name="start" button="11" />
-            <feature name="up" axis="-1" />
-        </controller>
-        <controller id="game.controller.genesis">
-            <feature name="a" button="4" />
-            <feature name="b" button="1" />
-            <feature name="c" button="0" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="mode" button="10" />
-            <feature name="right" axis="+0" />
-            <feature name="start" button="11" />
-            <feature name="up" axis="-1" />
-            <feature name="x" button="6" />
-            <feature name="y" button="3" />
-            <feature name="z" button="7" />
-        </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="right" axis="+0" />
-            <feature name="select" button="10" />
-            <feature name="start" button="11" />
-            <feature name="up" axis="-1" />
-        </controller>
+        <configuration>
+            <appearance id="game.controller.snes" />
+        </configuration>
         <controller id="game.controller.snes">
             <feature name="a" button="0" />
             <feature name="b" button="1" />
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/8Bitdo_SFC30_GamePad_Joystick_22b_8a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/8Bitdo_SFC30_GamePad_Joystick_22b_8a.xml
index b17cb60..4bb4bc1 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/8Bitdo_SFC30_GamePad_Joystick_22b_8a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/8Bitdo_SFC30_GamePad_Joystick_22b_8a.xml
@@ -1,56 +1,9 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="8Bitdo SFC30 GamePad Joystick" provider="linux" buttoncount="22" axiscount="8">
-        <controller id="game.controller.default">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="back" button="10" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="leftbumper" button="6" />
-            <feature name="right" axis="+0" />
-            <feature name="rightbumper" button="7" />
-            <feature name="start" button="11" />
-            <feature name="up" axis="-1" />
-            <feature name="x" button="3" />
-            <feature name="y" button="4" />
-        </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="leftbumper" button="6" />
-            <feature name="right" axis="+0" />
-            <feature name="rightbumper" button="7" />
-            <feature name="select" button="10" />
-            <feature name="start" button="11" />
-            <feature name="up" axis="-1" />
-        </controller>
-        <controller id="game.controller.genesis">
-            <feature name="a" button="4" />
-            <feature name="b" button="1" />
-            <feature name="c" button="0" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="mode" button="10" />
-            <feature name="right" axis="+0" />
-            <feature name="start" button="11" />
-            <feature name="up" axis="-1" />
-            <feature name="x" button="6" />
-            <feature name="y" button="3" />
-            <feature name="z" button="7" />
-        </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="right" axis="+0" />
-            <feature name="select" button="10" />
-            <feature name="start" button="11" />
-            <feature name="up" axis="-1" />
-        </controller>
+        <configuration>
+            <appearance id="game.controller.snes" />
+        </configuration>
         <controller id="game.controller.snes">
             <feature name="a" button="0" />
             <feature name="b" button="1" />
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/8Bitdo_Zero_GamePad_16b_8a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/8Bitdo_Zero_GamePad_16b_8a.xml
index 7e3298a..60fcb2d 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/8Bitdo_Zero_GamePad_16b_8a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/8Bitdo_Zero_GamePad_16b_8a.xml
@@ -1,21 +1,9 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="8Bitdo Zero GamePad" provider="linux" buttoncount="16" axiscount="8">
-        <configuration />
-        <controller id="game.controller.default">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="back" button="10" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="leftbumper" button="6" />
-            <feature name="right" axis="+0" />
-            <feature name="rightbumper" button="7" />
-            <feature name="start" button="11" />
-            <feature name="up" axis="-1" />
-            <feature name="x" button="3" />
-            <feature name="y" button="4" />
-        </controller>
+        <configuration>
+            <appearance id="game.controller.snes" />
+        </configuration>
         <controller id="game.controller.snes">
             <feature name="a" button="0" />
             <feature name="b" button="1" />
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/DragonRise_Inc._Generic_USB_Joystick_12b_6a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/DragonRise_Inc._Generic_USB_Joystick_12b_6a.xml
index 48d3261..c199e9f 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/DragonRise_Inc._Generic_USB_Joystick_12b_6a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/DragonRise_Inc._Generic_USB_Joystick_12b_6a.xml
@@ -31,125 +31,5 @@
             <feature name="x" button="0" />
             <feature name="y" button="1" />
         </controller>
-        <controller id="game.controller.dreamcast">
-            <feature name="a" button="2" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="3" />
-            <feature name="down" axis="+5" />
-            <feature name="left" axis="-4" />
-            <feature name="lefttrigger" button="6" />
-            <feature name="right" axis="+4" />
-            <feature name="righttrigger" button="7" />
-            <feature name="start" button="5" />
-            <feature name="up" axis="-5" />
-            <feature name="x" button="0" />
-            <feature name="y" button="1" />
-        </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="2" />
-            <feature name="b" button="3" />
-            <feature name="down" axis="+5" />
-            <feature name="left" axis="-4" />
-            <feature name="leftbumper" button="6" />
-            <feature name="right" axis="+4" />
-            <feature name="rightbumper" button="7" />
-            <feature name="select" button="1" />
-            <feature name="start" button="0" />
-            <feature name="up" axis="-5" />
-        </controller>
-        <controller id="game.controller.genesis">
-            <feature name="a" button="2" />
-            <feature name="b" button="3" />
-            <feature name="c" button="5" />
-            <feature name="down" axis="+5" />
-            <feature name="left" axis="-4" />
-            <feature name="mode" button="6" />
-            <feature name="right" axis="+4" />
-            <feature name="start" button="7" />
-            <feature name="up" axis="-5" />
-            <feature name="x" button="0" />
-            <feature name="y" button="1" />
-            <feature name="z" button="4" />
-        </controller>
-        <controller id="game.controller.n64">
-            <feature name="a" button="2" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="cdown" button="3" />
-            <feature name="cleft" button="1" />
-            <feature name="cright" button="5" />
-            <feature name="cup" button="4" />
-            <feature name="down" axis="+5" />
-            <feature name="left" axis="-4" />
-            <feature name="leftbumper" button="6" />
-            <feature name="right" axis="+4" />
-            <feature name="rightbumper" button="7" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-5" />
-            <feature name="z" button="8" />
-        </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="2" />
-            <feature name="b" button="3" />
-            <feature name="down" axis="+5" />
-            <feature name="left" axis="-4" />
-            <feature name="right" axis="+4" />
-            <feature name="select" button="1" />
-            <feature name="start" button="0" />
-            <feature name="up" axis="-5" />
-        </controller>
-        <controller id="game.controller.ps">
-            <feature name="circle" button="3" />
-            <feature name="cross" button="2" />
-            <feature name="down" axis="+5" />
-            <feature name="l3" button="10" />
-            <feature name="left" axis="-4" />
-            <feature name="leftbumper" button="6" />
-            <feature name="leftstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="lefttrigger" button="8" />
-            <feature name="r3" button="11" />
-            <feature name="right" axis="+4" />
-            <feature name="rightbumper" button="7" />
-            <feature name="rightstick">
-                <up axis="-3" />
-                <down axis="+3" />
-                <right axis="+2" />
-                <left axis="-2" />
-            </feature>
-            <feature name="righttrigger" button="9" />
-            <feature name="select" button="4" />
-            <feature name="square" button="0" />
-            <feature name="start" button="5" />
-            <feature name="triangle" button="1" />
-            <feature name="up" axis="-5" />
-        </controller>
-        <controller id="game.controller.snes">
-            <feature name="a" button="3" />
-            <feature name="b" button="2" />
-            <feature name="down" axis="+5" />
-            <feature name="left" axis="-4" />
-            <feature name="leftbumper" button="6" />
-            <feature name="right" axis="+4" />
-            <feature name="rightbumper" button="7" />
-            <feature name="select" button="4" />
-            <feature name="start" button="5" />
-            <feature name="up" axis="-5" />
-            <feature name="x" button="1" />
-            <feature name="y" button="0" />
-        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/Dual_PSX-USB_Adaptor_Dual_PSX-USB_Adaptor_16b_4a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/Dual_PSX-USB_Adaptor_Dual_PSX-USB_Adaptor_16b_4a.xml
index 85878e5..2825bc2 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/Dual_PSX-USB_Adaptor_Dual_PSX-USB_Adaptor_16b_4a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/Dual_PSX-USB_Adaptor_Dual_PSX-USB_Adaptor_16b_4a.xml
@@ -1,6 +1,9 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="Dual PSX-USB Adaptor  Dual PSX-USB Adaptor" provider="linux" buttoncount="16" axiscount="4">
+        <configuration>
+            <appearance id="game.controller.ps.dualanalog" />
+        </configuration>
         <controller id="game.controller.default">
             <feature name="b" button="1" />
             <feature name="back" button="8" />
@@ -30,93 +33,5 @@
             <feature name="x" button="3" />
             <feature name="y" button="0" />
         </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="2" />
-            <feature name="b" button="1" />
-            <feature name="down" button="14" />
-            <feature name="left" button="15" />
-            <feature name="leftbumper" button="6" />
-            <feature name="right" button="13" />
-            <feature name="rightbumper" button="7" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" button="12" />
-        </controller>
-        <controller id="game.controller.genesis">
-            <feature name="a" button="2" />
-            <feature name="b" button="1" />
-            <feature name="c" button="7" />
-            <feature name="down" button="14" />
-            <feature name="left" button="15" />
-            <feature name="mode" button="8" />
-            <feature name="right" button="13" />
-            <feature name="start" button="9" />
-            <feature name="up" button="12" />
-            <feature name="x" button="3" />
-            <feature name="y" button="0" />
-            <feature name="z" button="6" />
-        </controller>
-        <controller id="game.controller.n64">
-            <feature name="a" button="2" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="3" />
-            <feature name="cdown" axis="+2" />
-            <feature name="cleft" axis="-3" />
-            <feature name="cright" axis="+3" />
-            <feature name="cup" axis="-2" />
-            <feature name="down" button="14" />
-            <feature name="left" button="15" />
-            <feature name="leftbumper" button="6" />
-            <feature name="right" button="13" />
-            <feature name="rightbumper" button="7" />
-            <feature name="start" button="9" />
-            <feature name="up" button="12" />
-            <feature name="z" button="5" />
-        </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="2" />
-            <feature name="b" button="1" />
-            <feature name="down" button="14" />
-            <feature name="left" button="15" />
-            <feature name="right" button="13" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" button="12" />
-        </controller>
-        <controller id="game.controller.ps">
-            <feature name="circle" button="1" />
-            <feature name="cross" button="2" />
-            <feature name="down" button="14" />
-            <feature name="left" button="15" />
-            <feature name="leftbumper" button="6" />
-            <feature name="lefttrigger" button="4" />
-            <feature name="right" button="13" />
-            <feature name="rightbumper" button="7" />
-            <feature name="righttrigger" button="5" />
-            <feature name="select" button="8" />
-            <feature name="square" button="3" />
-            <feature name="start" button="9" />
-            <feature name="triangle" button="0" />
-            <feature name="up" button="12" />
-        </controller>
-        <controller id="game.controller.snes">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="down" button="14" />
-            <feature name="left" button="15" />
-            <feature name="leftbumper" button="6" />
-            <feature name="right" button="13" />
-            <feature name="rightbumper" button="7" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" button="12" />
-            <feature name="x" button="0" />
-            <feature name="y" button="3" />
-        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/GPIO_Controller_1_9b_2a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/GPIO_Controller_1_9b_2a.xml
index 6b0e9f1..0ab309d 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/GPIO_Controller_1_9b_2a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/GPIO_Controller_1_9b_2a.xml
@@ -16,55 +16,5 @@
             <feature name="x" button="2" />
             <feature name="y" button="3" />
         </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+0" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="6" />
-            <feature name="start" button="7" />
-            <feature name="up" axis="-1" />
-        </controller>
-        <controller id="game.controller.genesis">
-            <feature name="a" button="3" />
-            <feature name="b" button="1" />
-            <feature name="c" button="0" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="mode" button="6" />
-            <feature name="right" axis="+0" />
-            <feature name="start" button="7" />
-            <feature name="up" axis="-1" />
-            <feature name="x" button="4" />
-            <feature name="y" button="2" />
-            <feature name="z" button="5" />
-        </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="right" axis="+0" />
-            <feature name="select" button="6" />
-            <feature name="start" button="7" />
-            <feature name="up" axis="-1" />
-        </controller>
-        <controller id="game.controller.snes">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+0" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="6" />
-            <feature name="start" button="7" />
-            <feature name="up" axis="-1" />
-            <feature name="x" button="2" />
-            <feature name="y" button="3" />
-        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/GPIO_Controller_2_9b_2a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/GPIO_Controller_2_9b_2a.xml
index eea8eed..6f26ee4 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/GPIO_Controller_2_9b_2a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/GPIO_Controller_2_9b_2a.xml
@@ -16,55 +16,5 @@
             <feature name="x" button="2" />
             <feature name="y" button="3" />
         </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+0" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="6" />
-            <feature name="start" button="7" />
-            <feature name="up" axis="-1" />
-        </controller>
-        <controller id="game.controller.genesis">
-            <feature name="a" button="3" />
-            <feature name="b" button="1" />
-            <feature name="c" button="0" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="mode" button="6" />
-            <feature name="right" axis="+0" />
-            <feature name="start" button="7" />
-            <feature name="up" axis="-1" />
-            <feature name="x" button="4" />
-            <feature name="y" button="2" />
-            <feature name="z" button="5" />
-        </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="right" axis="+0" />
-            <feature name="select" button="6" />
-            <feature name="start" button="7" />
-            <feature name="up" axis="-1" />
-        </controller>
-        <controller id="game.controller.snes">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+0" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="6" />
-            <feature name="start" button="7" />
-            <feature name="up" axis="-1" />
-            <feature name="x" button="2" />
-            <feature name="y" button="3" />
-        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/Generic_USB_Joystick_12b_7a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/Generic_USB_Joystick_12b_7a.xml
index b5a8fe6..b136a3a 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/Generic_USB_Joystick_12b_7a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/Generic_USB_Joystick_12b_7a.xml
@@ -2,30 +2,6 @@
 <buttonmap>
     <device name="Generic   USB  Joystick" provider="linux" buttoncount="12" axiscount="7">
         <configuration />
-        <controller id="game.controller.default">
-            <feature name="a" button="6" />
-            <feature name="b" button="8" />
-            <feature name="down" axis="+6" />
-            <feature name="left" axis="-5" />
-            <feature name="leftbumper" button="4" />
-            <feature name="leftstick">
-                <up axis="-3" />
-                <down axis="+3" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="lefttrigger" button="7" />
-            <feature name="right" axis="+5" />
-            <feature name="rightbumper" button="5" />
-            <feature name="rightstick">
-                <up button="0" />
-                <down button="2" />
-                <right button="1" />
-                <left button="3" />
-            </feature>
-            <feature name="start" button="9" />
-            <feature name="up" axis="-6" />
-        </controller>
         <controller id="game.controller.n64">
             <feature name="a" button="6" />
             <feature name="analogstick">
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/Generic_X-Box_pad_11b_8a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/Generic_X-Box_pad_11b_8a.xml
index b46ce49..2d88dd3 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/Generic_X-Box_pad_11b_8a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/Generic_X-Box_pad_11b_8a.xml
@@ -2,6 +2,7 @@
 <buttonmap>
     <device name="Generic X-Box pad" provider="linux" buttoncount="11" axiscount="8">
         <configuration>
+            <appearance id="game.controller.default" />
             <axis index="2" center="-1" range="2" />
             <axis index="5" center="-1" range="2" />
         </configuration>
@@ -36,126 +37,5 @@
             <feature name="x" button="2" />
             <feature name="y" button="3" />
         </controller>
-        <controller id="game.controller.dreamcast">
-            <feature name="a" button="0" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="1" />
-            <feature name="down" axis="+7" />
-            <feature name="left" axis="-6" />
-            <feature name="lefttrigger" axis="+2" />
-            <feature name="right" axis="+6" />
-            <feature name="righttrigger" axis="+5" />
-            <feature name="start" button="7" />
-            <feature name="up" axis="-7" />
-            <feature name="x" button="2" />
-            <feature name="y" button="3" />
-        </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="down" axis="+7" />
-            <feature name="left" axis="-6" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+6" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="6" />
-            <feature name="start" button="7" />
-            <feature name="up" axis="-7" />
-        </controller>
-        <controller id="game.controller.genesis">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="c" button="5" />
-            <feature name="down" axis="+7" />
-            <feature name="left" axis="-6" />
-            <feature name="mode" button="6" />
-            <feature name="right" axis="+6" />
-            <feature name="start" button="7" />
-            <feature name="up" axis="-7" />
-            <feature name="x" button="2" />
-            <feature name="y" button="3" />
-            <feature name="z" button="4" />
-        </controller>
-        <controller id="game.controller.n64">
-            <feature name="a" button="0" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="1" />
-            <feature name="cdown" axis="+4" />
-            <feature name="cleft" axis="-3" />
-            <feature name="cright" axis="+3" />
-            <feature name="cup" axis="-4" />
-            <feature name="down" axis="+7" />
-            <feature name="left" axis="-6" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+6" />
-            <feature name="rightbumper" button="5" />
-            <feature name="start" button="7" />
-            <feature name="up" axis="-7" />
-            <feature name="z" axis="+5" />
-        </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="1" />
-            <feature name="b" button="0" />
-            <feature name="down" axis="+7" />
-            <feature name="left" axis="-6" />
-            <feature name="right" axis="+6" />
-            <feature name="select" button="6" />
-            <feature name="start" button="7" />
-            <feature name="up" axis="-7" />
-        </controller>
-        <controller id="game.controller.ps">
-            <feature name="circle" button="1" />
-            <feature name="cross" button="0" />
-            <feature name="down" axis="+7" />
-            <feature name="l3" button="9" />
-            <feature name="left" axis="-6" />
-            <feature name="leftbumper" button="4" />
-            <feature name="leftstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="lefttrigger" axis="+2" />
-            <feature name="r3" button="10" />
-            <feature name="right" axis="+6" />
-            <feature name="rightbumper" button="5" />
-            <feature name="rightstick">
-                <up axis="-4" />
-                <down axis="+4" />
-                <right axis="+3" />
-                <left axis="-3" />
-            </feature>
-            <feature name="righttrigger" axis="+5" />
-            <feature name="select" button="6" />
-            <feature name="square" button="2" />
-            <feature name="start" button="7" />
-            <feature name="triangle" button="3" />
-            <feature name="up" axis="-7" />
-        </controller>
-        <controller id="game.controller.snes">
-            <feature name="a" button="1" />
-            <feature name="b" button="0" />
-            <feature name="down" axis="+7" />
-            <feature name="left" axis="-6" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+6" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="6" />
-            <feature name="start" button="7" />
-            <feature name="up" axis="-7" />
-            <feature name="x" button="3" />
-            <feature name="y" button="2" />
-        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/Generic___USB__Joystick___12b_7a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/Generic___USB__Joystick___12b_7a.xml
new file mode 100644
index 0000000..e461d76
--- /dev/null
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/Generic___USB__Joystick___12b_7a.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" ?>
+<buttonmap>
+    <device name="Generic   USB  Joystick  " provider="linux" buttoncount="12" axiscount="7">
+        <configuration>
+            <appearance id="game.controller.n64" />
+        </configuration>
+        <controller id="game.controller.n64">
+            <feature name="a" button="6" />
+            <feature name="analogstick">
+                <up axis="-1" />
+                <down axis="+1" />
+                <right axis="+0" />
+                <left axis="-0" />
+            </feature>
+            <feature name="b" button="8" />
+            <feature name="cdown" button="2" />
+            <feature name="cleft" button="3" />
+            <feature name="cright" button="1" />
+            <feature name="cup" button="0" />
+            <feature name="down" axis="+6" />
+            <feature name="left" axis="-5" />
+            <feature name="leftbumper" button="4" />
+            <feature name="right" axis="+5" />
+            <feature name="rightbumper" button="5" />
+            <feature name="start" button="9" />
+            <feature name="up" axis="-6" />
+            <feature name="z" button="7" />
+        </controller>
+    </device>
+</buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/Gravis_GamePad_Pro_USB_10b_2a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/Gravis_GamePad_Pro_USB_10b_2a.xml
index b9b72c9..e4645fd 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/Gravis_GamePad_Pro_USB_10b_2a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/Gravis_GamePad_Pro_USB_10b_2a.xml
@@ -17,98 +17,5 @@
             <feature name="x" button="0" />
             <feature name="y" button="3" />
         </controller>
-        <controller id="game.controller.dreamcast">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="lefttrigger" button="6" />
-            <feature name="right" axis="+0" />
-            <feature name="righttrigger" button="7" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-1" />
-            <feature name="x" button="0" />
-            <feature name="y" button="3" />
-        </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+0" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-1" />
-        </controller>
-        <controller id="game.controller.genesis">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="c" button="5" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="mode" button="8" />
-            <feature name="right" axis="+0" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-1" />
-            <feature name="x" button="0" />
-            <feature name="y" button="3" />
-            <feature name="z" button="4" />
-        </controller>
-        <controller id="game.controller.n64">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="cleft" button="0" />
-            <feature name="cup" button="3" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+0" />
-            <feature name="rightbumper" button="5" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-1" />
-            <feature name="z" button="6" />
-        </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="right" axis="+0" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-1" />
-        </controller>
-        <controller id="game.controller.ps">
-            <feature name="circle" button="2" />
-            <feature name="cross" button="1" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="leftbumper" button="4" />
-            <feature name="lefttrigger" button="6" />
-            <feature name="right" axis="+0" />
-            <feature name="rightbumper" button="5" />
-            <feature name="righttrigger" button="7" />
-            <feature name="select" button="8" />
-            <feature name="square" button="0" />
-            <feature name="start" button="9" />
-            <feature name="triangle" button="3" />
-            <feature name="up" axis="-1" />
-        </controller>
-        <controller id="game.controller.snes">
-            <feature name="a" button="2" />
-            <feature name="b" button="1" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+0" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-1" />
-            <feature name="x" button="3" />
-            <feature name="y" button="0" />
-        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/GreenAsia_Inc._USB_Joystick_12b_7a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/GreenAsia_Inc._USB_Joystick_12b_7a.xml
index 43155c3..57a7470 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/GreenAsia_Inc._USB_Joystick_12b_7a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/GreenAsia_Inc._USB_Joystick_12b_7a.xml
@@ -31,126 +31,5 @@
             <feature name="x" button="0" />
             <feature name="y" button="1" />
         </controller>
-        <controller id="game.controller.dreamcast">
-            <feature name="a" button="2" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="3" />
-            <feature name="down" axis="+5" />
-            <feature name="left" axis="-4" />
-            <feature name="lefttrigger" button="4" />
-            <feature name="right" axis="+4" />
-            <feature name="righttrigger" button="5" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-5" />
-            <feature name="x" button="0" />
-            <feature name="y" button="1" />
-        </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="2" />
-            <feature name="b" button="3" />
-            <feature name="down" axis="+5" />
-            <feature name="left" axis="-4" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+4" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-5" />
-        </controller>
-        <controller id="game.controller.genesis">
-            <feature name="a" button="2" />
-            <feature name="b" button="3" />
-            <feature name="c" button="5" />
-            <feature name="down" axis="+5" />
-            <feature name="left" axis="-4" />
-            <feature name="mode" button="8" />
-            <feature name="right" axis="+4" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-5" />
-            <feature name="x" button="0" />
-            <feature name="y" button="1" />
-            <feature name="z" button="4" />
-        </controller>
-        <controller id="game.controller.n64">
-            <feature name="a" button="2" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="3" />
-            <feature name="cdown" axis="+2" />
-            <feature name="cleft" axis="-3" />
-            <feature name="cright" axis="+3" />
-            <feature name="cup" axis="-2" />
-            <feature name="down" axis="+5" />
-            <feature name="left" axis="-4" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+4" />
-            <feature name="rightbumper" button="5" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-5" />
-            <feature name="z" button="6" />
-        </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="2" />
-            <feature name="b" button="3" />
-            <feature name="down" axis="+5" />
-            <feature name="left" axis="-4" />
-            <feature name="right" axis="+4" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-5" />
-        </controller>
-        <controller id="game.controller.ps">
-            <feature name="circle" button="3" />
-            <feature name="cross" button="2" />
-            <feature name="down" axis="+5" />
-            <feature name="l3" button="10" />
-            <feature name="left" axis="-4" />
-            <feature name="leftbumper" button="4" />
-            <feature name="leftstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="lefttrigger" button="6" />
-            <feature name="r3" button="11" />
-            <feature name="right" axis="+4" />
-            <feature name="rightbumper" button="5" />
-            <feature name="rightstick">
-                <up axis="-2" />
-                <down axis="+2" />
-                <right axis="+3" />
-                <left axis="-3" />
-            </feature>
-            <feature name="righttrigger" button="7" />
-            <feature name="select" button="8" />
-            <feature name="square" button="0" />
-            <feature name="start" button="9" />
-            <feature name="triangle" button="1" />
-            <feature name="up" axis="-5" />
-        </controller>
-        <controller id="game.controller.snes">
-            <feature name="a" button="3" />
-            <feature name="b" button="2" />
-            <feature name="down" axis="+5" />
-            <feature name="left" axis="-4" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+4" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-5" />
-            <feature name="x" button="1" />
-            <feature name="y" button="0" />
-        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/HID_6666_0667_16b_4a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/HID_6666_0667_16b_4a.xml
new file mode 100644
index 0000000..d37e1f0
--- /dev/null
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/HID_6666_0667_16b_4a.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" ?>
+<buttonmap>
+    <device name="HID 6666:0667" provider="linux" buttoncount="16" axiscount="4">
+        <configuration>
+            <appearance id="game.controller.ps.dualanalog" />
+        </configuration>
+    </device>
+</buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/HuiJia_USB_GamePad_16b_6a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/HuiJia__USB_GamePad_16b_6a.xml
similarity index 54%
rename from peripheral.joystick/resources/buttonmaps/xml/linux/HuiJia_USB_GamePad_16b_6a.xml
rename to peripheral.joystick/resources/buttonmaps/xml/linux/HuiJia__USB_GamePad_16b_6a.xml
index 17ff7ef..a5d1dbd 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/HuiJia_USB_GamePad_16b_6a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/HuiJia__USB_GamePad_16b_6a.xml
@@ -1,21 +1,9 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="HuiJia  USB GamePad" provider="linux" buttoncount="16" axiscount="6">
-        <configuration />
-        <controller id="game.controller.default">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="back" button="8" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="leftbumper" button="6" />
-            <feature name="right" axis="+0" />
-            <feature name="rightbumper" button="7" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-1" />
-            <feature name="x" button="0" />
-            <feature name="y" button="3" />
-        </controller>
+        <configuration>
+            <appearance id="game.controller.snes" />
+        </configuration>
         <controller id="game.controller.snes">
             <feature name="a" button="1" />
             <feature name="b" button="2" />
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/Logitech_Logitech_RumblePad_2_USB_12b_6a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/Logitech_Logitech_RumblePad_2_USB_12b_6a.xml
index dd7eaff..bcdea88 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/Logitech_Logitech_RumblePad_2_USB_12b_6a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/Logitech_Logitech_RumblePad_2_USB_12b_6a.xml
@@ -31,114 +31,5 @@
             <feature name="x" button="0" />
             <feature name="y" button="3" />
         </controller>
-        <controller id="game.controller.dreamcast">
-            <feature name="a" button="1" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="2" />
-            <feature name="down" axis="+5" />
-            <feature name="left" axis="-4" />
-            <feature name="lefttrigger" button="4" />
-            <feature name="right" axis="+4" />
-            <feature name="righttrigger" button="5" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-5" />
-            <feature name="x" button="0" />
-            <feature name="y" button="3" />
-        </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="2" />
-            <feature name="b" button="1" />
-            <feature name="down" axis="+5" />
-            <feature name="left" axis="-4" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+4" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-5" />
-        </controller>
-        <controller id="game.controller.genesis">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="c" button="2" />
-            <feature name="down" axis="+5" />
-            <feature name="left" axis="-4" />
-            <feature name="mode" button="8" />
-            <feature name="right" axis="+4" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-5" />
-            <feature name="x" button="4" />
-            <feature name="y" button="3" />
-            <feature name="z" button="5" />
-        </controller>
-        <controller id="game.controller.n64">
-            <feature name="a" button="1" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="0" />
-            <feature name="cdown" axis="+3" />
-            <feature name="cleft" axis="-2" />
-            <feature name="cright" axis="+2" />
-            <feature name="cup" axis="-3" />
-            <feature name="down" axis="+5" />
-            <feature name="left" axis="-4" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+4" />
-            <feature name="rightbumper" button="5" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-5" />
-            <feature name="z" button="6" />
-        </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="1" />
-            <feature name="b" button="0" />
-            <feature name="down" axis="+5" />
-            <feature name="left" axis="-4" />
-            <feature name="right" axis="+4" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-5" />
-        </controller>
-        <controller id="game.controller.ps">
-            <feature name="circle" button="2" />
-            <feature name="cross" button="1" />
-            <feature name="down" axis="+5" />
-            <feature name="l3" button="10" />
-            <feature name="left" axis="-4" />
-            <feature name="leftbumper" button="4" />
-            <feature name="lefttrigger" button="6" />
-            <feature name="r3" button="11" />
-            <feature name="right" axis="+4" />
-            <feature name="rightbumper" button="5" />
-            <feature name="righttrigger" button="7" />
-            <feature name="select" button="8" />
-            <feature name="square" button="0" />
-            <feature name="start" button="9" />
-            <feature name="triangle" button="3" />
-            <feature name="up" axis="-5" />
-        </controller>
-        <controller id="game.controller.snes">
-            <feature name="a" button="2" />
-            <feature name="b" button="1" />
-            <feature name="down" axis="+5" />
-            <feature name="left" axis="-4" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+4" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-5" />
-            <feature name="x" button="3" />
-            <feature name="y" button="0" />
-        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/MY-POWER_CO._LTD._2In1_USB_Joystick_12b_7a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/MY-POWER_CO._LTD._2In1_USB_Joystick_12b_7a.xml
index 38baf8c..5492b73 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/MY-POWER_CO._LTD._2In1_USB_Joystick_12b_7a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/MY-POWER_CO._LTD._2In1_USB_Joystick_12b_7a.xml
@@ -31,126 +31,5 @@
             <feature name="x" button="3" />
             <feature name="y" button="0" />
         </controller>
-        <controller id="game.controller.dreamcast">
-            <feature name="a" button="2" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="1" />
-            <feature name="down" axis="+5" />
-            <feature name="left" axis="-4" />
-            <feature name="lefttrigger" button="6" />
-            <feature name="right" axis="+4" />
-            <feature name="righttrigger" button="7" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-5" />
-            <feature name="x" button="3" />
-            <feature name="y" button="0" />
-        </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="2" />
-            <feature name="b" button="1" />
-            <feature name="down" axis="+5" />
-            <feature name="left" axis="-4" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+4" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-5" />
-        </controller>
-        <controller id="game.controller.genesis">
-            <feature name="a" button="2" />
-            <feature name="b" button="1" />
-            <feature name="c" button="5" />
-            <feature name="down" axis="+5" />
-            <feature name="left" axis="-4" />
-            <feature name="mode" button="8" />
-            <feature name="right" axis="+4" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-5" />
-            <feature name="x" button="3" />
-            <feature name="y" button="0" />
-            <feature name="z" button="4" />
-        </controller>
-        <controller id="game.controller.n64">
-            <feature name="a" button="2" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="1" />
-            <feature name="cdown" axis="+3" />
-            <feature name="cleft" axis="-2" />
-            <feature name="cright" axis="+2" />
-            <feature name="cup" axis="-3" />
-            <feature name="down" axis="+5" />
-            <feature name="left" axis="-4" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+4" />
-            <feature name="rightbumper" button="5" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-5" />
-            <feature name="z" button="6" />
-        </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="2" />
-            <feature name="b" button="1" />
-            <feature name="down" axis="+5" />
-            <feature name="left" axis="-4" />
-            <feature name="right" axis="+4" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-5" />
-        </controller>
-        <controller id="game.controller.ps">
-            <feature name="circle" button="1" />
-            <feature name="cross" button="2" />
-            <feature name="down" axis="+5" />
-            <feature name="l3" button="10" />
-            <feature name="left" axis="-4" />
-            <feature name="leftbumper" button="4" />
-            <feature name="leftstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="lefttrigger" button="6" />
-            <feature name="r3" button="11" />
-            <feature name="right" axis="+4" />
-            <feature name="rightbumper" button="5" />
-            <feature name="rightstick">
-                <up axis="-3" />
-                <down axis="+3" />
-                <right axis="+2" />
-                <left axis="-2" />
-            </feature>
-            <feature name="righttrigger" button="7" />
-            <feature name="select" button="8" />
-            <feature name="square" button="3" />
-            <feature name="start" button="9" />
-            <feature name="triangle" button="0" />
-            <feature name="up" axis="-5" />
-        </controller>
-        <controller id="game.controller.snes">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="down" axis="+5" />
-            <feature name="left" axis="-4" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+4" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-5" />
-            <feature name="x" button="0" />
-            <feature name="y" button="3" />
-        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/Microsoft_X-Box_360_pad_0_11b_8a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/Microsoft_X-Box_360_pad_0_11b_8a.xml
index 4edce26..c5cb1f3 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/Microsoft_X-Box_360_pad_0_11b_8a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/Microsoft_X-Box_360_pad_0_11b_8a.xml
@@ -2,6 +2,7 @@
 <buttonmap>
     <device name="Microsoft X-Box 360 pad 0" provider="linux" buttoncount="11" axiscount="8">
         <configuration>
+            <appearance id="game.controller.default" />
             <axis index="2" center="-1" range="2" />
             <axis index="5" center="-1" range="2" />
         </configuration>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/Microsoft_X-Box_360_pad_11b_8a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/Microsoft_X-Box_360_pad_11b_8a.xml
index 37be14b..f7e9cf9 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/Microsoft_X-Box_360_pad_11b_8a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/Microsoft_X-Box_360_pad_11b_8a.xml
@@ -1,6 +1,9 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="Microsoft X-Box 360 pad" provider="linux" buttoncount="11" axiscount="8">
+        <configuration>
+            <appearance id="game.controller.default" />
+        </configuration>
         <controller id="game.controller.default">
             <feature name="a" button="0" />
             <feature name="b" button="1" />
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/Microsoft_X-Box_One_Elite_pad_15b_8a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/Microsoft_X-Box_One_Elite_pad_15b_8a.xml
new file mode 100644
index 0000000..1246703
--- /dev/null
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/Microsoft_X-Box_One_Elite_pad_15b_8a.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" ?>
+<buttonmap>
+    <device name="Microsoft X-Box One Elite pad" provider="linux" buttoncount="15" axiscount="8">
+        <configuration>
+            <appearance id="game.controller.default" />
+        </configuration>
+        <controller id="game.controller.default">
+            <feature name="a" button="0" />
+            <feature name="b" button="1" />
+            <feature name="back" button="6" />
+            <feature name="down" axis="+7" />
+            <feature name="guide" button="8" />
+            <feature name="left" axis="-6" />
+            <feature name="leftbumper" button="4" />
+            <feature name="leftstick">
+                <up axis="-1" />
+                <down axis="+1" />
+                <right axis="+0" />
+                <left axis="-0" />
+            </feature>
+            <feature name="leftthumb" button="9" />
+            <feature name="lefttrigger" axis="+2" />
+            <feature name="right" axis="+6" />
+            <feature name="rightbumper" button="5" />
+            <feature name="rightstick">
+                <up axis="-4" />
+                <down axis="+4" />
+                <right axis="+3" />
+                <left axis="-3" />
+            </feature>
+            <feature name="rightthumb" button="10" />
+            <feature name="righttrigger" axis="+5" />
+            <feature name="start" button="7" />
+            <feature name="up" axis="-7" />
+            <feature name="x" button="2" />
+            <feature name="y" button="3" />
+        </controller>
+    </device>
+</buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/Microsoft_X-Box_One_pad_11b_8a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/Microsoft_X-Box_One_pad_11b_8a.xml
index b1dbaf6..6f2896a 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/Microsoft_X-Box_One_pad_11b_8a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/Microsoft_X-Box_One_pad_11b_8a.xml
@@ -2,9 +2,90 @@
 <buttonmap>
     <device name="Microsoft X-Box One pad" provider="linux" buttoncount="11" axiscount="8">
         <configuration>
+            <appearance id="game.controller.default" />
             <axis index="2" center="-1" range="2" />
             <axis index="5" center="-1" range="2" />
         </configuration>
+        <controller id="game.controller.3do">
+            <feature name="a" button="2" />
+            <feature name="b" button="0" />
+            <feature name="c" button="1" />
+            <feature name="down" axis="+7" />
+            <feature name="left" axis="-6" />
+            <feature name="leftbumper" button="4" />
+            <feature name="play" button="7" />
+            <feature name="right" axis="+6" />
+            <feature name="rightbumper" button="5" />
+            <feature name="stop" button="6" />
+            <feature name="up" axis="-7" />
+        </controller>
+        <controller id="game.controller.amiga.cd32">
+            <feature name="blue" button="1" />
+            <feature name="down" axis="+7" />
+            <feature name="forward" button="5" />
+            <feature name="green" button="2" />
+            <feature name="left" axis="-6" />
+            <feature name="play" button="7" />
+            <feature name="red" button="0" />
+            <feature name="rewind" button="4" />
+            <feature name="right" axis="+6" />
+            <feature name="up" axis="-7" />
+            <feature name="yellow" button="3" />
+        </controller>
+        <controller id="game.controller.amstrad.joystick">
+            <feature name="button1" button="0" />
+            <feature name="button2" button="1" />
+            <feature name="down" axis="+7" />
+            <feature name="left" axis="-6" />
+            <feature name="right" axis="+6" />
+            <feature name="up" axis="-7" />
+        </controller>
+        <controller id="game.controller.arcade.neogeo">
+            <feature name="a" button="0" />
+            <feature name="b" button="1" />
+            <feature name="c" button="2" />
+            <feature name="d" button="3" />
+            <feature name="down" axis="+7" />
+            <feature name="left" axis="-6" />
+            <feature name="right" axis="+6" />
+            <feature name="select" button="6" />
+            <feature name="start" button="7" />
+            <feature name="up" axis="-7" />
+        </controller>
+        <controller id="game.controller.atari.2600">
+            <feature name="down" axis="+7" />
+            <feature name="fire" button="0" />
+            <feature name="left" axis="-6" />
+            <feature name="right" axis="+6" />
+            <feature name="up" axis="-7" />
+        </controller>
+        <controller id="game.controller.atari.7800.gamepad">
+            <feature name="button1" button="0" />
+            <feature name="button2" button="1" />
+            <feature name="down" axis="+7" />
+            <feature name="left" axis="-6" />
+            <feature name="right" axis="+6" />
+            <feature name="up" axis="-7" />
+        </controller>
+        <controller id="game.controller.atari.7800.proline">
+            <feature name="button1" button="0" />
+            <feature name="button2" button="1" />
+            <feature name="down" axis="+7" />
+            <feature name="left" axis="-6" />
+            <feature name="right" axis="+6" />
+            <feature name="up" axis="-7" />
+        </controller>
+        <controller id="game.controller.atari.lynx">
+            <feature name="a" button="1" />
+            <feature name="b" button="0" />
+            <feature name="down" axis="+7" />
+            <feature name="left" axis="-6" />
+            <feature name="option1" button="7" />
+            <feature name="option2" button="6" />
+            <feature name="pause" button="2" />
+            <feature name="right" axis="+6" />
+            <feature name="up" axis="-7" />
+        </controller>
         <controller id="game.controller.default">
             <feature name="a" button="0" />
             <feature name="b" button="1" />
@@ -36,5 +117,609 @@
             <feature name="x" button="2" />
             <feature name="y" button="3" />
         </controller>
+        <controller id="game.controller.dreamcast">
+            <feature name="a" button="0" />
+            <feature name="analogstick">
+                <up axis="-1" />
+                <down axis="+1" />
+                <right axis="+0" />
+                <left axis="-0" />
+            </feature>
+            <feature name="b" button="1" />
+            <feature name="down" axis="+7" />
+            <feature name="left" axis="-6" />
+            <feature name="lefttrigger" axis="+2" />
+            <feature name="right" axis="+6" />
+            <feature name="righttrigger" axis="+5" />
+            <feature name="start" button="7" />
+            <feature name="up" axis="-7" />
+            <feature name="x" button="2" />
+            <feature name="y" button="3" />
+        </controller>
+        <controller id="game.controller.gameboy">
+            <feature name="a" button="1" />
+            <feature name="b" button="0" />
+            <feature name="down" axis="+7" />
+            <feature name="left" axis="-6" />
+            <feature name="right" axis="+6" />
+            <feature name="select" button="6" />
+            <feature name="start" button="7" />
+            <feature name="up" axis="-7" />
+        </controller>
+        <controller id="game.controller.gamecube">
+            <feature name="a" button="1" />
+            <feature name="b" button="0" />
+            <feature name="controlstick">
+                <up axis="-1" />
+                <down axis="+1" />
+                <right axis="+0" />
+                <left axis="-0" />
+            </feature>
+            <feature name="cstick">
+                <up axis="-4" />
+                <down axis="+4" />
+                <right axis="+3" />
+                <left axis="-3" />
+            </feature>
+            <feature name="down" axis="+7" />
+            <feature name="l" axis="+2" />
+            <feature name="left" axis="-6" />
+            <feature name="r" axis="+5" />
+            <feature name="right" axis="+6" />
+            <feature name="start" button="7" />
+            <feature name="up" axis="-7" />
+            <feature name="x" button="3" />
+            <feature name="y" button="2" />
+            <feature name="z" button="5" />
+        </controller>
+        <controller id="game.controller.gamegear">
+            <feature name="button1" button="0" />
+            <feature name="button2" button="1" />
+            <feature name="down" axis="+7" />
+            <feature name="left" axis="-6" />
+            <feature name="right" axis="+6" />
+            <feature name="start" button="7" />
+            <feature name="up" axis="-7" />
+        </controller>
+        <controller id="game.controller.gba">
+            <feature name="a" button="1" />
+            <feature name="b" button="0" />
+            <feature name="down" axis="+7" />
+            <feature name="left" axis="-6" />
+            <feature name="leftbumper" button="4" />
+            <feature name="right" axis="+6" />
+            <feature name="rightbumper" button="5" />
+            <feature name="select" button="6" />
+            <feature name="start" button="7" />
+            <feature name="up" axis="-7" />
+        </controller>
+        <controller id="game.controller.genesis.3button">
+            <feature name="a" button="2" />
+            <feature name="b" button="0" />
+            <feature name="c" button="1" />
+            <feature name="down" axis="+7" />
+            <feature name="left" axis="-6" />
+            <feature name="mode" button="6" />
+            <feature name="right" axis="+6" />
+            <feature name="start" button="7" />
+            <feature name="up" axis="-7" />
+        </controller>
+        <controller id="game.controller.genesis.6button">
+            <feature name="a" button="0" />
+            <feature name="b" button="1" />
+            <feature name="c" button="5" />
+            <feature name="down" axis="+7" />
+            <feature name="left" axis="-6" />
+            <feature name="mode" button="6" />
+            <feature name="right" axis="+6" />
+            <feature name="start" button="7" />
+            <feature name="up" axis="-7" />
+            <feature name="x" button="2" />
+            <feature name="y" button="3" />
+            <feature name="z" button="4" />
+        </controller>
+        <controller id="game.controller.gravis.gamepad">
+            <feature name="blue" button="3" />
+            <feature name="down" axis="+7" />
+            <feature name="green" button="1" />
+            <feature name="left" axis="-6" />
+            <feature name="red" button="2" />
+            <feature name="right" axis="+6" />
+            <feature name="up" axis="-7" />
+            <feature name="yellow" button="0" />
+        </controller>
+        <controller id="game.controller.joystick.2button">
+            <feature name="analogstick">
+                <up axis="-1" />
+                <down axis="+1" />
+                <right axis="+0" />
+                <left axis="-0" />
+            </feature>
+            <feature name="button1" button="0" />
+            <feature name="button2" button="1" />
+        </controller>
+        <controller id="game.controller.joystick.4button">
+            <feature name="button1" button="0" />
+            <feature name="button2" button="1" />
+            <feature name="button3" button="2" />
+            <feature name="button4" button="3" />
+            <feature name="leftstick">
+                <up axis="-1" />
+                <down axis="+1" />
+                <right axis="+0" />
+                <left axis="-0" />
+            </feature>
+            <feature name="rightstick">
+                <up axis="-4" />
+                <down axis="+4" />
+                <right axis="+3" />
+                <left axis="-3" />
+            </feature>
+        </controller>
+        <controller id="game.controller.msx.joystick">
+            <feature name="button1" button="0" />
+            <feature name="button2" button="1" />
+            <feature name="down" axis="+7" />
+            <feature name="left" axis="-6" />
+            <feature name="right" axis="+6" />
+            <feature name="up" axis="-7" />
+        </controller>
+        <controller id="game.controller.n64">
+            <feature name="a" button="0" />
+            <feature name="analogstick">
+                <up axis="-1" />
+                <down axis="+1" />
+                <right axis="+0" />
+                <left axis="-0" />
+            </feature>
+            <feature name="b" button="2" />
+            <feature name="cdown" axis="+4" />
+            <feature name="cleft" axis="-3" />
+            <feature name="cright" axis="+3" />
+            <feature name="cup" axis="-4" />
+            <feature name="down" axis="+7" />
+            <feature name="left" axis="-6" />
+            <feature name="leftbumper" button="4" />
+            <feature name="right" axis="+6" />
+            <feature name="rightbumper" button="5" />
+            <feature name="start" button="7" />
+            <feature name="up" axis="-7" />
+            <feature name="z" axis="+2" />
+        </controller>
+        <controller id="game.controller.nds">
+            <feature name="a" button="1" />
+            <feature name="b" button="0" />
+            <feature name="down" axis="+7" />
+            <feature name="layout" button="9" />
+            <feature name="left" axis="-6" />
+            <feature name="leftbumper" button="4" />
+            <feature name="lid" button="10" />
+            <feature name="microphone" button="8" />
+            <feature name="pointer">
+                <up axis="-4" />
+                <down axis="+4" />
+                <right axis="+3" />
+                <left axis="-3" />
+            </feature>
+            <feature name="right" axis="+6" />
+            <feature name="rightbumper" button="5" />
+            <feature name="select" button="6" />
+            <feature name="start" button="7" />
+            <feature name="up" axis="-7" />
+            <feature name="x" button="3" />
+            <feature name="y" button="2" />
+        </controller>
+        <controller id="game.controller.nes">
+            <feature name="a" button="1" />
+            <feature name="b" button="0" />
+            <feature name="down" axis="+7" />
+            <feature name="left" axis="-6" />
+            <feature name="right" axis="+6" />
+            <feature name="select" button="6" />
+            <feature name="start" button="7" />
+            <feature name="up" axis="-7" />
+        </controller>
+        <controller id="game.controller.ngp">
+            <feature name="a" button="0" />
+            <feature name="b" button="1" />
+            <feature name="down" axis="+7" />
+            <feature name="left" axis="-6" />
+            <feature name="option" button="7" />
+            <feature name="right" axis="+6" />
+            <feature name="up" axis="-7" />
+        </controller>
+        <controller id="game.controller.odyssey2">
+            <feature name="action" button="0" />
+            <feature name="down" axis="+7" />
+            <feature name="left" axis="-6" />
+            <feature name="right" axis="+6" />
+            <feature name="up" axis="-7" />
+        </controller>
+        <controller id="game.controller.ouya">
+            <feature name="a" button="0" />
+            <feature name="b" button="2" />
+            <feature name="down" axis="+7" />
+            <feature name="left" axis="-6" />
+            <feature name="leftbumper" button="4" />
+            <feature name="leftstick">
+                <up axis="-1" />
+                <down axis="+1" />
+                <right axis="+0" />
+                <left axis="-0" />
+            </feature>
+            <feature name="lefttrigger" axis="+2" />
+            <feature name="right" axis="+6" />
+            <feature name="rightbumper" button="5" />
+            <feature name="rightstick">
+                <up axis="-4" />
+                <down axis="+4" />
+                <right axis="+3" />
+                <left axis="-3" />
+            </feature>
+            <feature name="righttrigger" axis="+5" />
+            <feature name="up" axis="-7" />
+            <feature name="x" button="3" />
+            <feature name="y" button="1" />
+        </controller>
+        <controller id="game.controller.pcfx">
+            <feature name="down" axis="+7" />
+            <feature name="i" button="5" />
+            <feature name="ii" button="1" />
+            <feature name="iii" button="0" />
+            <feature name="iv" button="4" />
+            <feature name="left" axis="-6" />
+            <feature name="mode1" button="9" />
+            <feature name="mode2" button="10" />
+            <feature name="right" axis="+6" />
+            <feature name="run" button="7" />
+            <feature name="select" button="6" />
+            <feature name="up" axis="-7" />
+            <feature name="v" button="3" />
+            <feature name="vi" button="2" />
+        </controller>
+        <controller id="game.controller.pokemini">
+            <feature name="a" button="1" />
+            <feature name="b" button="0" />
+            <feature name="c" button="5" />
+            <feature name="down" axis="+7" />
+            <feature name="left" axis="-6" />
+            <feature name="power" button="7" />
+            <feature name="right" axis="+6" />
+            <feature name="shake" button="4" />
+            <feature name="up" axis="-7" />
+        </controller>
+        <controller id="game.controller.ps.dualanalog">
+            <feature name="analog" button="8" />
+            <feature name="circle" button="1" />
+            <feature name="cross" button="0" />
+            <feature name="down" axis="+7" />
+            <feature name="l3" button="9" />
+            <feature name="left" axis="-6" />
+            <feature name="leftbumper" button="4" />
+            <feature name="leftstick">
+                <up axis="-1" />
+                <down axis="+1" />
+                <right axis="+0" />
+                <left axis="-0" />
+            </feature>
+            <feature name="lefttrigger" axis="+2" />
+            <feature name="r3" button="10" />
+            <feature name="right" axis="+6" />
+            <feature name="rightbumper" button="5" />
+            <feature name="rightstick">
+                <up axis="-4" />
+                <down axis="+4" />
+                <right axis="+3" />
+                <left axis="-3" />
+            </feature>
+            <feature name="righttrigger" axis="+5" />
+            <feature name="select" button="6" />
+            <feature name="square" button="2" />
+            <feature name="start" button="7" />
+            <feature name="triangle" button="3" />
+            <feature name="up" axis="-7" />
+        </controller>
+        <controller id="game.controller.ps.dualshock">
+            <feature name="analog" button="8" />
+            <feature name="circle" button="1" />
+            <feature name="cross" button="0" />
+            <feature name="down" axis="+7" />
+            <feature name="l3" button="9" />
+            <feature name="left" axis="-6" />
+            <feature name="leftbumper" button="4" />
+            <feature name="leftstick">
+                <up axis="-1" />
+                <down axis="+1" />
+                <right axis="+0" />
+                <left axis="-0" />
+            </feature>
+            <feature name="lefttrigger" axis="+2" />
+            <feature name="r3" button="10" />
+            <feature name="right" axis="+6" />
+            <feature name="rightbumper" button="5" />
+            <feature name="rightstick">
+                <up axis="-4" />
+                <down axis="+4" />
+                <right axis="+3" />
+                <left axis="-3" />
+            </feature>
+            <feature name="righttrigger" axis="+5" />
+            <feature name="select" button="6" />
+            <feature name="square" button="2" />
+            <feature name="start" button="7" />
+            <feature name="triangle" button="3" />
+            <feature name="up" axis="-7" />
+        </controller>
+        <controller id="game.controller.ps.gamepad">
+            <feature name="circle" button="1" />
+            <feature name="cross" button="0" />
+            <feature name="down" axis="+7" />
+            <feature name="l3" button="9" />
+            <feature name="left" axis="-6" />
+            <feature name="leftbumper" button="4" />
+            <feature name="lefttrigger" axis="+2" />
+            <feature name="r3" button="10" />
+            <feature name="right" axis="+6" />
+            <feature name="rightbumper" button="5" />
+            <feature name="righttrigger" axis="+5" />
+            <feature name="select" button="6" />
+            <feature name="square" button="2" />
+            <feature name="start" button="7" />
+            <feature name="triangle" button="3" />
+            <feature name="up" axis="-7" />
+        </controller>
+        <controller id="game.controller.psp">
+            <feature name="analogstick">
+                <up axis="-1" />
+                <down axis="+1" />
+                <right axis="+0" />
+                <left axis="-0" />
+            </feature>
+            <feature name="circle" button="1" />
+            <feature name="cross" button="0" />
+            <feature name="down" axis="+7" />
+            <feature name="l" button="4" />
+            <feature name="left" axis="-6" />
+            <feature name="r" button="5" />
+            <feature name="right" axis="+6" />
+            <feature name="select" button="6" />
+            <feature name="square" button="2" />
+            <feature name="start" button="7" />
+            <feature name="triangle" button="3" />
+            <feature name="up" axis="-7" />
+        </controller>
+        <controller id="game.controller.remote">
+            <feature name="back" button="1" />
+            <feature name="down" axis="+7" />
+            <feature name="home" button="3" />
+            <feature name="left" axis="-6" />
+            <feature name="right" axis="+6" />
+            <feature name="select" button="0" />
+            <feature name="up" axis="-7" />
+        </controller>
+        <controller id="game.controller.saturn">
+            <feature name="a" button="0" />
+            <feature name="b" button="1" />
+            <feature name="c" button="5" />
+            <feature name="down" axis="+7" />
+            <feature name="left" axis="-6" />
+            <feature name="leftbumper" axis="+2" />
+            <feature name="right" axis="+6" />
+            <feature name="rightbumper" axis="+5" />
+            <feature name="start" button="7" />
+            <feature name="up" axis="-7" />
+            <feature name="x" button="2" />
+            <feature name="y" button="3" />
+            <feature name="z" button="4" />
+        </controller>
+        <controller id="game.controller.saturn.3d.japan">
+            <feature name="a" button="0" />
+            <feature name="analogstick">
+                <up axis="-1" />
+                <down axis="+1" />
+                <right axis="+0" />
+                <left axis="-0" />
+            </feature>
+            <feature name="b" button="1" />
+            <feature name="c" button="5" />
+            <feature name="down" axis="+7" />
+            <feature name="left" axis="-6" />
+            <feature name="lefttrigger" axis="+2" />
+            <feature name="right" axis="+6" />
+            <feature name="righttrigger" axis="+5" />
+            <feature name="start" button="7" />
+            <feature name="up" axis="-7" />
+            <feature name="x" button="2" />
+            <feature name="y" button="3" />
+            <feature name="z" button="4" />
+        </controller>
+        <controller id="game.controller.saturn.3d.western">
+            <feature name="a" button="0" />
+            <feature name="analogstick">
+                <up axis="-1" />
+                <down axis="+1" />
+                <right axis="+0" />
+                <left axis="-0" />
+            </feature>
+            <feature name="b" button="1" />
+            <feature name="c" button="5" />
+            <feature name="down" axis="+7" />
+            <feature name="left" axis="-6" />
+            <feature name="lefttrigger" axis="+2" />
+            <feature name="right" axis="+6" />
+            <feature name="righttrigger" axis="+5" />
+            <feature name="start" button="7" />
+            <feature name="up" axis="-7" />
+            <feature name="x" button="2" />
+            <feature name="y" button="3" />
+            <feature name="z" button="4" />
+        </controller>
+        <controller id="game.controller.saturn.arcade.racer">
+            <feature name="a" button="0" />
+            <feature name="b" button="1" />
+            <feature name="c" button="5" />
+            <feature name="leftshift" button="9" />
+            <feature name="rightshift" button="10" />
+            <feature name="start" button="7" />
+            <feature name="wheel">
+                <left axis="-0" />
+                <right axis="+0" />
+            </feature>
+            <feature name="x" button="2" />
+            <feature name="y" button="3" />
+            <feature name="z" button="4" />
+        </controller>
+        <controller id="game.controller.saturn.mission.stick">
+            <feature name="a" button="0" />
+            <feature name="b" button="1" />
+            <feature name="c" button="5" />
+            <feature name="joystick">
+                <up axis="-1" />
+                <down axis="+1" />
+                <right axis="+0" />
+                <left axis="-0" />
+            </feature>
+            <feature name="l" axis="+2" />
+            <feature name="r" axis="+5" />
+            <feature name="start" button="7" />
+            <feature name="throttle">
+                <up axis="-4" />
+                <down axis="+4" />
+            </feature>
+            <feature name="throttlelatch" button="10" />
+            <feature name="x" button="2" />
+            <feature name="y" button="3" />
+            <feature name="z" button="4" />
+        </controller>
+        <controller id="game.controller.saturn.mission.sticks">
+            <feature name="a" button="0" />
+            <feature name="b" button="1" />
+            <feature name="c" button="5" />
+            <feature name="l" axis="+2" />
+            <feature name="leftjoystick">
+                <up axis="-1" />
+                <down axis="+1" />
+                <right axis="+0" />
+                <left axis="-0" />
+            </feature>
+            <feature name="r" axis="+5" />
+            <feature name="rightjoystick">
+                <up axis="-4" />
+                <down axis="+4" />
+                <right axis="+3" />
+                <left axis="-3" />
+            </feature>
+            <feature name="start" button="7" />
+            <feature name="x" button="2" />
+            <feature name="y" button="3" />
+            <feature name="z" button="4" />
+        </controller>
+        <controller id="game.controller.saturn.twin.stick">
+            <feature name="leftbutton" button="4" />
+            <feature name="leftstick">
+                <up axis="-1" />
+                <down axis="+1" />
+                <right axis="+0" />
+                <left axis="-0" />
+            </feature>
+            <feature name="lefttrigger" axis="+2" />
+            <feature name="rightbutton" button="5" />
+            <feature name="rightstick">
+                <up axis="-4" />
+                <down axis="+4" />
+                <right axis="+3" />
+                <left axis="-3" />
+            </feature>
+            <feature name="righttrigger" axis="+5" />
+            <feature name="start" button="7" />
+        </controller>
+        <controller id="game.controller.sg1000">
+            <feature name="button1" button="0" />
+            <feature name="button2" button="1" />
+            <feature name="down" axis="+7" />
+            <feature name="left" axis="-6" />
+            <feature name="right" axis="+6" />
+            <feature name="up" axis="-7" />
+        </controller>
+        <controller id="game.controller.sms">
+            <feature name="button1" button="0" />
+            <feature name="button2" button="1" />
+            <feature name="down" axis="+7" />
+            <feature name="left" axis="-6" />
+            <feature name="right" axis="+6" />
+            <feature name="up" axis="-7" />
+        </controller>
+        <controller id="game.controller.snes">
+            <feature name="a" button="1" />
+            <feature name="b" button="0" />
+            <feature name="down" axis="+7" />
+            <feature name="left" axis="-6" />
+            <feature name="leftbumper" button="4" />
+            <feature name="right" axis="+6" />
+            <feature name="rightbumper" button="5" />
+            <feature name="select" button="6" />
+            <feature name="start" button="7" />
+            <feature name="up" axis="-7" />
+            <feature name="x" button="3" />
+            <feature name="y" button="2" />
+        </controller>
+        <controller id="game.controller.vb">
+            <feature name="a" button="1" />
+            <feature name="b" button="0" />
+            <feature name="leftbumper" button="4" />
+            <feature name="leftdown" axis="+4" />
+            <feature name="leftleft" axis="-3" />
+            <feature name="leftright" axis="+3" />
+            <feature name="leftup" axis="-4" />
+            <feature name="rightbumper" button="5" />
+            <feature name="rightdown" axis="+1" />
+            <feature name="rightleft" axis="-0" />
+            <feature name="rightright" axis="+0" />
+            <feature name="rightup" axis="-1" />
+            <feature name="select" button="6" />
+            <feature name="start" button="7" />
+        </controller>
+        <controller id="game.controller.vectrex">
+            <feature name="button1" button="0" />
+            <feature name="button2" button="1" />
+            <feature name="button3" button="2" />
+            <feature name="button4" button="3" />
+            <feature name="down" axis="+7" />
+            <feature name="left" axis="-6" />
+            <feature name="right" axis="+6" />
+            <feature name="up" axis="-7" />
+        </controller>
+        <controller id="game.controller.wiimote">
+            <feature name="a" button="0" />
+            <feature name="b" axis="+5" />
+            <feature name="down" axis="+7" />
+            <feature name="home" button="8" />
+            <feature name="left" axis="-6" />
+            <feature name="minus" button="6" />
+            <feature name="one" button="2" />
+            <feature name="plus" button="7" />
+            <feature name="pointer">
+                <up axis="-1" />
+                <down axis="+1" />
+                <right axis="+0" />
+                <left axis="-0" />
+            </feature>
+            <feature name="right" axis="+6" />
+            <feature name="two" button="3" />
+            <feature name="up" axis="-7" />
+        </controller>
+        <controller id="game.controller.ws">
+            <feature name="a" button="1" />
+            <feature name="b" button="0" />
+            <feature name="start" button="7" />
+            <feature name="xdown" axis="+1" />
+            <feature name="xleft" axis="-0" />
+            <feature name="xright" axis="+0" />
+            <feature name="xup" axis="-1" />
+            <feature name="ydown" axis="+4" />
+            <feature name="yleft" axis="-3" />
+            <feature name="yright" axis="+3" />
+            <feature name="yup" axis="-4" />
+        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/Microsoft_X-Box_One_pad_12b_8a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/Microsoft_X-Box_One_pad_12b_8a.xml
new file mode 100644
index 0000000..fe2646f
--- /dev/null
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/Microsoft_X-Box_One_pad_12b_8a.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" ?>
+<buttonmap>
+    <device name="Microsoft X-Box One pad" provider="linux" buttoncount="12" axiscount="8">
+        <configuration>
+            <appearance id="game.controller.default" />
+        </configuration>
+        <controller id="game.controller.default">
+            <feature name="a" button="0" />
+            <feature name="b" button="1" />
+            <feature name="back" button="6" />
+            <feature name="down" axis="+7" />
+            <feature name="guide" button="8" />
+            <feature name="left" axis="-6" />
+            <feature name="leftbumper" button="4" />
+            <feature name="leftstick">
+                <up axis="-1" />
+                <down axis="+1" />
+                <right axis="+0" />
+                <left axis="-0" />
+            </feature>
+            <feature name="leftthumb" button="9" />
+            <feature name="lefttrigger" axis="+2" />
+            <feature name="right" axis="+6" />
+            <feature name="rightbumper" button="5" />
+            <feature name="rightstick">
+                <up axis="-4" />
+                <down axis="+4" />
+                <right axis="+3" />
+                <left axis="-3" />
+            </feature>
+            <feature name="rightthumb" button="10" />
+            <feature name="righttrigger" axis="+5" />
+            <feature name="start" button="7" />
+            <feature name="up" axis="-7" />
+            <feature name="x" button="2" />
+            <feature name="y" button="3" />
+        </controller>
+    </device>
+</buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/Microsoft_X-Box_One_pad__Firmware_2015__11b_8a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/Microsoft_X-Box_One_pad__Firmware_2015__11b_8a.xml
index 61b0405..2973e35 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/Microsoft_X-Box_One_pad__Firmware_2015__11b_8a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/Microsoft_X-Box_One_pad__Firmware_2015__11b_8a.xml
@@ -2,6 +2,7 @@
 <buttonmap>
     <device name="Microsoft X-Box One pad (Firmware 2015)" provider="linux" buttoncount="11" axiscount="8">
         <configuration>
+            <appearance id="game.controller.default" />
             <axis index="2" center="-1" range="2" />
             <axis index="5" center="-1" range="2" />
         </configuration>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/NVIDIA_Corporation_NVIDIA_Controller_v01.03_14b_8a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/NVIDIA_Corporation_NVIDIA_Controller_v01.03_14b_8a.xml
index 78f4375..4487cda 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/NVIDIA_Corporation_NVIDIA_Controller_v01.03_14b_8a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/NVIDIA_Corporation_NVIDIA_Controller_v01.03_14b_8a.xml
@@ -30,71 +30,5 @@
             <feature name="x" button="2" />
             <feature name="y" button="3" />
         </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="down" axis="+7" />
-            <feature name="left" axis="-6" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+6" />
-            <feature name="rightbumper" button="5" />
-            <feature name="start" button="7" />
-            <feature name="up" axis="-7" />
-        </controller>
-        <controller id="game.controller.genesis">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="c" button="2" />
-            <feature name="down" axis="+7" />
-            <feature name="left" axis="-6" />
-            <feature name="right" axis="+6" />
-            <feature name="start" button="7" />
-            <feature name="up" axis="-7" />
-            <feature name="x" button="3" />
-            <feature name="y" button="4" />
-            <feature name="z" button="5" />
-        </controller>
-        <controller id="game.controller.n64">
-            <feature name="a" button="0" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="2" />
-            <feature name="cleft" button="1" />
-            <feature name="cdown" button="3" />
-            <feature name="down" axis="+7" />
-            <feature name="left" axis="-6" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+6" />
-            <feature name="rightbumper" button="5" />
-            <feature name="start" button="7" />
-            <feature name="up" axis="-7" />
-            <feature name="z" axis="+5" />
-        </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="down" axis="+7" />
-            <feature name="left" axis="-6" />
-            <feature name="right" axis="+6" />
-            <feature name="start" button="7" />
-            <feature name="up" axis="-7" />
-        </controller>
-        <controller id="game.controller.snes">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="down" axis="+7" />
-            <feature name="left" axis="-6" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+6" />
-            <feature name="rightbumper" button="5" />
-            <feature name="start" button="7" />
-            <feature name="up" axis="-7" />
-            <feature name="x" button="2" />
-            <feature name="y" button="3" />
-        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/PLAYSTATION_R_3_Controller.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/PLAYSTATION_R_3_Controller.xml
index 3e95a17..c8ca16a 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/PLAYSTATION_R_3_Controller.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/PLAYSTATION_R_3_Controller.xml
@@ -2,6 +2,9 @@
 <buttonmap>
     <!-- Sony Playstation 3 Controller connected through the Bluez 5 sixaxis plugin. -->
     <device name="PLAYSTATION(R)3 Controller" provider="linux" buttoncount="19" axiscount="27">
+        <configuration>
+            <appearance id="game.controller.ps.dualanalog" />
+        </configuration>
         <controller id="game.controller.default">
             <feature name="a" button="14" />
             <feature name="b" button="13" />
@@ -33,73 +36,5 @@
             <feature name="x" button="15" />
             <feature name="y" button="12" />
         </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="14" />
-            <feature name="b" button="15" />
-            <feature name="down" button="6" />
-            <feature name="left" button="7" />
-            <feature name="leftbumper" button="10" />
-            <feature name="right" button="5" />
-            <feature name="rightbumper" button="11" />
-            <feature name="select" button="0" />
-            <feature name="start" button="3" />
-            <feature name="up" button="4" />
-        </controller>
-        <controller id="game.controller.n64">
-            <feature name="a" button="14" />
-            <feature name="b" button="15" />
-            <feature name="cdown" axis="+3" />
-            <feature name="cleft" axis="-2" />
-            <feature name="cright" axis="+2" />
-            <feature name="cup" axis="-3" />
-            <feature name="down" button="6" />
-            <feature name="left" button="7" />
-            <feature name="leftbumper" button="10" />
-            <feature name="right" button="5" />
-            <feature name="rightbumper" button="11" />
-            <feature name="start" button="3" />
-            <feature name="up" button="4" />
-            <feature name="z" button="8" />
-        </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="14" />
-            <feature name="b" button="15" />
-            <feature name="down" button="6" />
-            <feature name="left" button="7" />
-            <feature name="right" button="5" />
-            <feature name="select" button="0" />
-            <feature name="start" button="3" />
-            <feature name="up" button="4" />
-        </controller>
-        <controller id="game.controller.ps">
-            <feature name="circle" button="13" />
-            <feature name="cross" button="14" />
-            <feature name="down" button="6" />
-            <feature name="left" button="7" />
-            <feature name="leftbumper" button="10" />
-            <feature name="lefttrigger" button="8" />
-            <feature name="right" button="5" />
-            <feature name="rightbumper" button="11" />
-            <feature name="righttrigger" button="9" />
-            <feature name="select" button="0" />
-            <feature name="square" button="15" />
-            <feature name="start" button="3" />
-            <feature name="triangle" button="12" />
-            <feature name="up" button="4" />
-        </controller>
-        <controller id="game.controller.snes">
-            <feature name="a" button="13" />
-            <feature name="b" button="14" />
-            <feature name="down" button="6" />
-            <feature name="left" button="7" />
-            <feature name="leftbumper" button="10" />
-            <feature name="right" button="5" />
-            <feature name="rightbumper" button="11" />
-            <feature name="select" button="0" />
-            <feature name="start" button="3" />
-            <feature name="up" button="4" />
-            <feature name="x" button="12" />
-            <feature name="y" button="15" />
-        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/PLAYSTATION_R_3_Controller_17b_29a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/PLAYSTATION_R_3_Controller_17b_29a.xml
index 79b1847..9d81e75 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/PLAYSTATION_R_3_Controller_17b_29a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/PLAYSTATION_R_3_Controller_17b_29a.xml
@@ -2,6 +2,9 @@
 <buttonmap>
     <!-- Sony Playstation 3 Controller connected through QtSixA (sixpair, sixad). -->
     <device name="PLAYSTATION(R)3 Controller" provider="linux" buttoncount="17" axiscount="29">
+        <configuration>
+            <appearance id="game.controller.ps.dualanalog" />
+        </configuration>
         <controller id="game.controller.default">
             <feature name="a" button="14" />
             <feature name="b" button="13" />
@@ -33,73 +36,5 @@
             <feature name="x" button="15" />
             <feature name="y" button="12" />
         </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="14" />
-            <feature name="b" button="15" />
-            <feature name="down" button="6" />
-            <feature name="left" button="7" />
-            <feature name="leftbumper" button="10" />
-            <feature name="right" button="5" />
-            <feature name="rightbumper" button="11" />
-            <feature name="select" button="0" />
-            <feature name="start" button="3" />
-            <feature name="up" button="4" />
-        </controller>
-        <controller id="game.controller.n64">
-            <feature name="a" button="14" />
-            <feature name="b" button="15" />
-            <feature name="cdown" axis="+3" />
-            <feature name="cleft" axis="-2" />
-            <feature name="cright" axis="+2" />
-            <feature name="cup" axis="-3" />
-            <feature name="down" button="6" />
-            <feature name="left" button="7" />
-            <feature name="leftbumper" button="10" />
-            <feature name="right" button="5" />
-            <feature name="rightbumper" button="11" />
-            <feature name="start" button="3" />
-            <feature name="up" button="4" />
-            <feature name="z" button="8" />
-        </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="14" />
-            <feature name="b" button="15" />
-            <feature name="down" button="6" />
-            <feature name="left" button="7" />
-            <feature name="right" button="5" />
-            <feature name="select" button="0" />
-            <feature name="start" button="3" />
-            <feature name="up" button="4" />
-        </controller>
-        <controller id="game.controller.ps">
-            <feature name="circle" button="13" />
-            <feature name="cross" button="14" />
-            <feature name="down" button="6" />
-            <feature name="left" button="7" />
-            <feature name="leftbumper" button="10" />
-            <feature name="lefttrigger" button="8" />
-            <feature name="right" button="5" />
-            <feature name="rightbumper" button="11" />
-            <feature name="righttrigger" button="9" />
-            <feature name="select" button="0" />
-            <feature name="square" button="15" />
-            <feature name="start" button="3" />
-            <feature name="triangle" button="12" />
-            <feature name="up" button="4" />
-        </controller>
-        <controller id="game.controller.snes">
-            <feature name="a" button="13" />
-            <feature name="b" button="14" />
-            <feature name="down" button="6" />
-            <feature name="left" button="7" />
-            <feature name="leftbumper" button="10" />
-            <feature name="right" button="5" />
-            <feature name="rightbumper" button="11" />
-            <feature name="select" button="0" />
-            <feature name="start" button="3" />
-            <feature name="up" button="4" />
-            <feature name="x" button="12" />
-            <feature name="y" button="15" />
-        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/Pro_Controller_16b_6a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/Pro_Controller_16b_6a.xml
index b5aff93..3c9f8d3 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/Pro_Controller_16b_6a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/Pro_Controller_16b_6a.xml
@@ -27,43 +27,5 @@
             <feature name="x" button="2" />
             <feature name="y" button="3" />
         </controller>
-        <controller id="game.controller.genesis.6button">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="c" button="2" />
-            <feature name="down" axis="+5" />
-            <feature name="left" axis="-4" />
-            <feature name="mode" button="8" />
-            <feature name="right" axis="+4" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-5" />
-            <feature name="x" button="3" />
-            <feature name="y" button="4" />
-            <feature name="z" button="5" />
-        </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="down" axis="+5" />
-            <feature name="left" axis="-4" />
-            <feature name="right" axis="+4" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-5" />
-        </controller>
-        <controller id="game.controller.snes">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="down" axis="+5" />
-            <feature name="left" axis="-4" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+4" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-5" />
-            <feature name="x" button="2" />
-            <feature name="y" button="3" />
-        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/ShanWan_PS_R__Ga_epad_17b_6a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/ShanWan_PS_R__Ga_epad_17b_6a.xml
new file mode 100644
index 0000000..049be95
--- /dev/null
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/ShanWan_PS_R__Ga_epad_17b_6a.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" ?>
+<buttonmap>
+    <device name="ShanWan PS(R) Ga`epad" provider="linux" buttoncount="17" axiscount="6">
+        <configuration>
+            <appearance id="game.controller.ps.dualanalog" />
+            <axis index="2" center="-1" range="2" />
+            <axis index="5" center="-1" range="2" />
+            <button index="6" ignore="true" />
+            <button index="7" ignore="true" />
+        </configuration>
+        <controller id="game.controller.ps.dualanalog">
+            <feature name="analog" button="10" />
+            <feature name="circle" button="1" />
+            <feature name="cross" button="0" />
+            <feature name="down" button="14" />
+            <feature name="l3" button="11" />
+            <feature name="left" button="15" />
+            <feature name="leftbumper" button="4" />
+            <feature name="leftstick">
+                <up axis="-1" />
+                <down axis="+1" />
+                <right axis="+0" />
+                <left axis="-0" />
+            </feature>
+            <feature name="lefttrigger" axis="+2" />
+            <feature name="r3" button="12" />
+            <feature name="right" button="16" />
+            <feature name="rightbumper" button="5" />
+            <feature name="rightstick">
+                <up axis="-4" />
+                <down axis="+4" />
+                <right axis="+3" />
+                <left axis="-3" />
+            </feature>
+            <feature name="righttrigger" axis="+5" />
+            <feature name="select" button="8" />
+            <feature name="square" button="3" />
+            <feature name="start" button="9" />
+            <feature name="triangle" button="2" />
+            <feature name="up" button="13" />
+        </controller>
+    </device>
+</buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/ShanWan_PS_R__Ga_epad_19b_27a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/ShanWan_PS_R__Ga_epad_19b_27a.xml
index ca2c2af..818388b 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/ShanWan_PS_R__Ga_epad_19b_27a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/ShanWan_PS_R__Ga_epad_19b_27a.xml
@@ -2,6 +2,7 @@
 <buttonmap>
     <device name="ShanWan PS(R) Ga`epad" provider="linux" buttoncount="19" axiscount="27">
         <configuration>
+            <appearance id="game.controller.ps.dualanalog" />
             <axis index="12" center="-1" range="2" />
             <axis index="13" center="-1" range="2" />
             <axis index="14" center="-1" range="2" />
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/Sony_Computer_Entertainment_Wireless_Controller_14b_18a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/Sony_Computer_Entertainment_Wireless_Controller_14b_18a.xml
index 873e3bf..24f5e27 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/Sony_Computer_Entertainment_Wireless_Controller_14b_18a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/Sony_Computer_Entertainment_Wireless_Controller_14b_18a.xml
@@ -1,7 +1,9 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="Sony Computer Entertainment Wireless Controller" provider="linux" buttoncount="14" axiscount="18">
-        <configuration />
+        <configuration>
+            <appearance id="game.controller.ps.dualanalog" />
+        </configuration>
         <controller id="game.controller.default">
             <feature name="a" button="1" />
             <feature name="b" button="2" />
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/Sony_Interactive_Entertainment_Wireless_Controller_13b_8a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/Sony_Interactive_Entertainment_Wireless_Controller_13b_8a.xml
index 3b1a1c8..b12d284 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/Sony_Interactive_Entertainment_Wireless_Controller_13b_8a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/Sony_Interactive_Entertainment_Wireless_Controller_13b_8a.xml
@@ -2,17 +2,18 @@
 <buttonmap>
     <device name="Sony Interactive Entertainment Wireless Controller" provider="linux" buttoncount="13" axiscount="8">
         <configuration>
+            <appearance id="game.controller.ps.dualanalog" />
             <axis index="2" center="-1" range="2" />
             <axis index="5" center="-1" range="2" />
             <button index="6" ignore="true" />
             <button index="7" ignore="true" />
         </configuration>
-        <controller id="game.controller.default">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="back" button="8" />
+        <controller id="game.controller.ps.dualanalog">
+            <feature name="analog" button="10" />
+            <feature name="circle" button="1" />
+            <feature name="cross" button="0" />
             <feature name="down" axis="+7" />
-            <feature name="guide" button="10" />
+            <feature name="l3" button="11" />
             <feature name="left" axis="-6" />
             <feature name="leftbumper" button="4" />
             <feature name="leftstick">
@@ -21,8 +22,8 @@
                 <right axis="+0" />
                 <left axis="-0" />
             </feature>
-            <feature name="leftthumb" button="11" />
             <feature name="lefttrigger" axis="+2" />
+            <feature name="r3" button="12" />
             <feature name="right" axis="+6" />
             <feature name="rightbumper" button="5" />
             <feature name="rightstick">
@@ -31,12 +32,12 @@
                 <right axis="+3" />
                 <left axis="-3" />
             </feature>
-            <feature name="rightthumb" button="12" />
             <feature name="righttrigger" axis="+5" />
+            <feature name="select" button="8" />
+            <feature name="square" button="3" />
             <feature name="start" button="9" />
+            <feature name="triangle" button="2" />
             <feature name="up" axis="-7" />
-            <feature name="x" button="3" />
-            <feature name="y" button="2" />
         </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/Sony_Interactive_Entertainment_Wireless_Controller_14b_8a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/Sony_Interactive_Entertainment_Wireless_Controller_14b_8a.xml
index a5fadc3..1c37d8d 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/Sony_Interactive_Entertainment_Wireless_Controller_14b_8a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/Sony_Interactive_Entertainment_Wireless_Controller_14b_8a.xml
@@ -2,6 +2,7 @@
 <buttonmap>
     <device name="Sony Interactive Entertainment Wireless Controller" provider="linux" buttoncount="14" axiscount="8">
         <configuration>
+            <appearance id="game.controller.ps.dualanalog" />
             <axis index="3" center="-1" range="2" />
             <axis index="4" center="-1" range="2" />
             <button index="6" ignore="true" />
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/Sony_PLAYSTATION_R_3_Controller_17b_6a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/Sony_PLAYSTATION_R_3_Controller_17b_6a.xml
index 8a2d8c9..58fed6a 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/Sony_PLAYSTATION_R_3_Controller_17b_6a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/Sony_PLAYSTATION_R_3_Controller_17b_6a.xml
@@ -2,6 +2,7 @@
 <buttonmap>
     <device name="Sony PLAYSTATION(R)3 Controller" provider="linux" buttoncount="17" axiscount="6">
         <configuration>
+            <appearance id="game.controller.ps.dualanalog" />
             <axis index="2" center="-1" range="2" />
             <axis index="5" center="-1" range="2" />
             <button index="6" ignore="true" />
@@ -38,73 +39,5 @@
             <feature name="x" button="3" />
             <feature name="y" button="2" />
         </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="0" />
-            <feature name="b" button="3" />
-            <feature name="down" button="14" />
-            <feature name="left" button="15" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" button="16" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" button="13" />
-        </controller>
-        <controller id="game.controller.n64">
-            <feature name="a" button="0" />
-            <feature name="b" button="3" />
-            <feature name="cdown" axis="+4" />
-            <feature name="cleft" axis="-3" />
-            <feature name="cright" axis="+3" />
-            <feature name="cup" axis="-4" />
-            <feature name="down" button="14" />
-            <feature name="left" button="15" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" button="16" />
-            <feature name="rightbumper" button="5" />
-            <feature name="start" button="9" />
-            <feature name="up" button="13" />
-            <feature name="z" axis="+2" />
-        </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="0" />
-            <feature name="b" button="3" />
-            <feature name="down" button="14" />
-            <feature name="left" button="15" />
-            <feature name="right" button="16" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" button="13" />
-        </controller>
-        <controller id="game.controller.ps">
-            <feature name="circle" button="1" />
-            <feature name="cross" button="0" />
-            <feature name="down" button="14" />
-            <feature name="left" button="15" />
-            <feature name="leftbumper" button="4" />
-            <feature name="lefttrigger" axis="+2" />
-            <feature name="right" button="16" />
-            <feature name="rightbumper" button="5" />
-            <feature name="righttrigger" axis="+5" />
-            <feature name="select" button="8" />
-            <feature name="square" button="3" />
-            <feature name="start" button="9" />
-            <feature name="triangle" button="2" />
-            <feature name="up" button="13" />
-        </controller>
-        <controller id="game.controller.snes">
-            <feature name="a" button="1" />
-            <feature name="b" button="0" />
-            <feature name="down" button="14" />
-            <feature name="left" button="15" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" button="16" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" button="13" />
-            <feature name="x" button="2" />
-            <feature name="y" button="3" />
-        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/Sony_PLAYSTATION_R_3_Controller_19b_27a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/Sony_PLAYSTATION_R_3_Controller_19b_27a.xml
index aa6affc..303a154 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/Sony_PLAYSTATION_R_3_Controller_19b_27a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/Sony_PLAYSTATION_R_3_Controller_19b_27a.xml
@@ -1,6 +1,9 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="Sony PLAYSTATION(R)3 Controller" provider="linux" buttoncount="19" axiscount="27">
+        <configuration>
+            <appearance id="game.controller.ps.dualanalog" />
+        </configuration>
         <controller id="game.controller.default">
             <feature name="a" button="14" />
             <feature name="b" button="13" />
@@ -32,73 +35,5 @@
             <feature name="x" button="15" />
             <feature name="y" button="12" />
         </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="14" />
-            <feature name="b" button="15" />
-            <feature name="down" button="6" />
-            <feature name="left" button="7" />
-            <feature name="leftbumper" button="10" />
-            <feature name="right" button="5" />
-            <feature name="rightbumper" button="11" />
-            <feature name="select" button="0" />
-            <feature name="start" button="3" />
-            <feature name="up" button="4" />
-        </controller>
-        <controller id="game.controller.n64">
-            <feature name="a" button="14" />
-            <feature name="b" button="15" />
-            <feature name="cdown" axis="+3" />
-            <feature name="cleft" axis="-2" />
-            <feature name="cright" axis="+2" />
-            <feature name="cup" axis="-3" />
-            <feature name="down" button="6" />
-            <feature name="left" button="7" />
-            <feature name="leftbumper" button="10" />
-            <feature name="right" button="5" />
-            <feature name="rightbumper" button="11" />
-            <feature name="start" button="3" />
-            <feature name="up" button="4" />
-            <feature name="z" button="8" />
-        </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="14" />
-            <feature name="b" button="15" />
-            <feature name="down" button="6" />
-            <feature name="left" button="7" />
-            <feature name="right" button="5" />
-            <feature name="select" button="0" />
-            <feature name="start" button="3" />
-            <feature name="up" button="4" />
-        </controller>
-        <controller id="game.controller.ps">
-            <feature name="circle" button="13" />
-            <feature name="cross" button="14" />
-            <feature name="down" button="6" />
-            <feature name="left" button="7" />
-            <feature name="leftbumper" button="10" />
-            <feature name="lefttrigger" button="8" />
-            <feature name="right" button="5" />
-            <feature name="rightbumper" button="11" />
-            <feature name="righttrigger" button="9" />
-            <feature name="select" button="0" />
-            <feature name="square" button="15" />
-            <feature name="start" button="3" />
-            <feature name="triangle" button="12" />
-            <feature name="up" button="4" />
-        </controller>
-        <controller id="game.controller.snes">
-            <feature name="a" button="13" />
-            <feature name="b" button="14" />
-            <feature name="down" button="6" />
-            <feature name="left" button="7" />
-            <feature name="leftbumper" button="10" />
-            <feature name="right" button="5" />
-            <feature name="rightbumper" button="11" />
-            <feature name="select" button="0" />
-            <feature name="start" button="3" />
-            <feature name="up" button="4" />
-            <feature name="x" button="12" />
-            <feature name="y" button="15" />
-        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/USB_Gamepad_10b_2a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/USB_Gamepad_10b_2a.xml
index fbdaea6..8211cfb 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/USB_Gamepad_10b_2a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/USB_Gamepad_10b_2a.xml
@@ -1,21 +1,9 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="USB Gamepad" provider="linux" buttoncount="10" axiscount="2">
-        <configuration />
-        <controller id="game.controller.default">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="back" button="8" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+0" />
-            <feature name="rightbumper" button="5" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-1" />
-            <feature name="x" button="0" />
-            <feature name="y" button="3" />
-        </controller>
+        <configuration>
+            <appearance id="game.controller.snes" />
+        </configuration>
         <controller id="game.controller.snes">
             <feature name="a" button="1" />
             <feature name="b" button="2" />
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/Wireless_Controller_13b_8a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/Wireless_Controller_13b_8a.xml
index c8b9e3d..0e35dde 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/Wireless_Controller_13b_8a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/Wireless_Controller_13b_8a.xml
@@ -2,6 +2,7 @@
 <buttonmap>
     <device name="Wireless Controller" provider="linux" buttoncount="13" axiscount="8">
         <configuration>
+            <appearance id="game.controller.ps.dualanalog" />
             <axis index="2" center="-1" range="2" />
             <axis index="5" center="-1" range="2" />
             <button index="6" ignore="true" />
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/Wireless_Controller_14b_8a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/Wireless_Controller_14b_8a.xml
index fc1e8ac..3d4f0fb 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/Wireless_Controller_14b_8a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/Wireless_Controller_14b_8a.xml
@@ -1,7 +1,6 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="Wireless Controller" provider="linux" buttoncount="14" axiscount="8">
-        <configuration />
         <controller id="game.controller.default">
             <feature name="a" button="1" />
             <feature name="b" button="2" />
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/Wish_Technologies_Adaptoid_14b_2a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/Wish_Technologies_Adaptoid_14b_2a.xml
index 70c2be4..dff9fb8 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/Wish_Technologies_Adaptoid_14b_2a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/Wish_Technologies_Adaptoid_14b_2a.xml
@@ -1,73 +1,9 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="Wish Technologies Adaptoid" provider="linux" buttoncount="14" axiscount="2">
-        <controller id="game.controller.default">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="back" button="9" />
-            <feature name="down" button="11" />
-            <feature name="left" button="12" />
-            <feature name="leftbumper" button="6" />
-            <feature name="lefttrigger" button="5" />
-            <feature name="right" button="13" />
-            <feature name="rightbumper" button="7" />
-            <feature name="rightstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="righttrigger" button="2" />
-            <feature name="start" button="8" />
-            <feature name="up" button="10" />
-            <feature name="x" button="3" />
-            <feature name="y" button="4" />
-        </controller>
-        <controller id="game.controller.dreamcast">
-            <feature name="a" button="0" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="1" />
-            <feature name="down" button="11" />
-            <feature name="left" button="12" />
-            <feature name="lefttrigger" button="6" />
-            <feature name="right" button="13" />
-            <feature name="righttrigger" button="7" />
-            <feature name="start" button="8" />
-            <feature name="up" button="10" />
-            <feature name="x" button="3" />
-            <feature name="y" button="4" />
-        </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="0" />
-            <feature name="b" button="3" />
-            <feature name="down" button="11" />
-            <feature name="left" button="12" />
-            <feature name="leftbumper" button="6" />
-            <feature name="right" button="13" />
-            <feature name="rightbumper" button="7" />
-            <feature name="select" button="9" />
-            <feature name="start" button="8" />
-            <feature name="up" button="10" />
-        </controller>
-        <controller id="game.controller.genesis">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="c" button="2" />
-            <feature name="down" button="11" />
-            <feature name="left" button="12" />
-            <feature name="mode" button="9" />
-            <feature name="right" button="13" />
-            <feature name="start" button="8" />
-            <feature name="up" button="10" />
-            <feature name="x" button="3" />
-            <feature name="y" button="4" />
-            <feature name="z" button="5" />
-        </controller>
+        <configuration>
+            <appearance id="game.controller.n64" />
+        </configuration>
         <controller id="game.controller.n64">
             <feature name="a" button="0" />
             <feature name="analogstick">
@@ -90,45 +26,5 @@
             <feature name="up" button="10" />
             <feature name="z" button="9" />
         </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="0" />
-            <feature name="b" button="3" />
-            <feature name="down" button="11" />
-            <feature name="left" button="12" />
-            <feature name="right" button="13" />
-            <feature name="select" button="9" />
-            <feature name="start" button="8" />
-            <feature name="up" button="10" />
-        </controller>
-        <controller id="game.controller.ps">
-            <feature name="circle" button="1" />
-            <feature name="cross" button="0" />
-            <feature name="down" button="11" />
-            <feature name="left" button="12" />
-            <feature name="leftbumper" button="6" />
-            <feature name="lefttrigger" button="5" />
-            <feature name="right" button="13" />
-            <feature name="rightbumper" button="7" />
-            <feature name="righttrigger" button="2" />
-            <feature name="select" button="9" />
-            <feature name="square" button="3" />
-            <feature name="start" button="8" />
-            <feature name="triangle" button="4" />
-            <feature name="up" button="10" />
-        </controller>
-        <controller id="game.controller.snes">
-            <feature name="a" button="1" />
-            <feature name="b" button="0" />
-            <feature name="down" button="11" />
-            <feature name="left" button="12" />
-            <feature name="leftbumper" button="6" />
-            <feature name="right" button="13" />
-            <feature name="rightbumper" button="7" />
-            <feature name="select" button="9" />
-            <feature name="start" button="8" />
-            <feature name="up" button="10" />
-            <feature name="x" button="4" />
-            <feature name="y" button="3" />
-        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/Xbox_360_Wireless_Receiver_15b_6a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/Xbox_360_Wireless_Receiver_15b_6a.xml
index 81d0200..07711d8 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/Xbox_360_Wireless_Receiver_15b_6a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/Xbox_360_Wireless_Receiver_15b_6a.xml
@@ -1,6 +1,9 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="Xbox 360 Wireless Receiver" provider="linux" buttoncount="15" axiscount="6">
+        <configuration>
+            <appearance id="game.controller.default" />
+        </configuration>
         <controller id="game.controller.default">
             <feature name="a" button="0" />
             <feature name="b" button="1" />
@@ -32,86 +35,5 @@
             <feature name="x" button="2" />
             <feature name="y" button="3" />
         </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="0" />
-            <feature name="b" button="2" />
-            <feature name="down" button="14" />
-            <feature name="left" button="11" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" button="12" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="6" />
-            <feature name="start" button="7" />
-            <feature name="up" button="13" />
-        </controller>
-        <controller id="game.controller.genesis">
-            <feature name="a" button="2" />
-            <feature name="b" button="0" />
-            <feature name="c" button="1" />
-            <feature name="down" button="14" />
-            <feature name="left" button="11" />
-            <feature name="mode" button="6" />
-            <feature name="right" button="12" />
-            <feature name="start" button="7" />
-            <feature name="up" button="13" />
-            <feature name="x" button="4" />
-            <feature name="y" button="3" />
-            <feature name="z" button="5" />
-        </controller>
-        <controller id="game.controller.n64">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="cdown" axis="+4" />
-            <feature name="cleft" axis="-3" />
-            <feature name="cright" axis="+3" />
-            <feature name="cup" axis="-4" />
-            <feature name="down" button="14" />
-            <feature name="left" button="11" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" button="12" />
-            <feature name="rightbumper" button="5" />
-            <feature name="start" button="7" />
-            <feature name="up" button="13" />
-        </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="0" />
-            <feature name="b" button="2" />
-            <feature name="down" button="14" />
-            <feature name="left" button="11" />
-            <feature name="right" button="12" />
-            <feature name="select" button="6" />
-            <feature name="start" button="7" />
-            <feature name="up" button="13" />
-        </controller>
-        <controller id="game.controller.ps">
-            <feature name="circle" button="1" />
-            <feature name="cross" button="0" />
-            <feature name="down" button="14" />
-            <feature name="left" button="11" />
-            <feature name="leftbumper" button="4" />
-            <feature name="lefttrigger" axis="+2" />
-            <feature name="right" button="12" />
-            <feature name="rightbumper" button="5" />
-            <feature name="righttrigger" axis="+5" />
-            <feature name="select" button="6" />
-            <feature name="square" button="2" />
-            <feature name="start" button="7" />
-            <feature name="triangle" button="3" />
-            <feature name="up" button="13" />
-        </controller>
-        <controller id="game.controller.snes">
-            <feature name="a" button="1" />
-            <feature name="b" button="0" />
-            <feature name="down" button="14" />
-            <feature name="left" button="11" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" button="12" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="6" />
-            <feature name="start" button="7" />
-            <feature name="up" button="13" />
-            <feature name="x" button="3" />
-            <feature name="y" button="2" />
-        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/Xbox_360_Wireless_Receiver_15b_8a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/Xbox_360_Wireless_Receiver_15b_8a.xml
index e739c63..bcb44aa 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/Xbox_360_Wireless_Receiver_15b_8a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/Xbox_360_Wireless_Receiver_15b_8a.xml
@@ -1,6 +1,9 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="Xbox 360 Wireless Receiver" provider="linux" buttoncount="15" axiscount="8">
+        <configuration>
+            <appearance id="game.controller.default" />
+        </configuration>
         <controller id="game.controller.default">
             <feature name="a" button="0" />
             <feature name="b" button="1" />
@@ -32,93 +35,5 @@
             <feature name="x" button="2" />
             <feature name="y" button="3" />
         </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="down" button="14" />
-            <feature name="left" button="11" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" button="12" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="6" />
-            <feature name="start" button="7" />
-            <feature name="up" button="13" />
-        </controller>
-        <controller id="game.controller.genesis">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="c" button="4" />
-            <feature name="down" button="14" />
-            <feature name="left" button="11" />
-            <feature name="mode" button="6" />
-            <feature name="right" button="12" />
-            <feature name="start" button="7" />
-            <feature name="up" button="13" />
-            <feature name="x" button="2" />
-            <feature name="y" button="3" />
-            <feature name="z" button="5" />
-        </controller>
-        <controller id="game.controller.n64">
-            <feature name="a" button="0" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="2" />
-            <feature name="cdown" axis="+4" />
-            <feature name="cleft" axis="-3" />
-            <feature name="cright" axis="+3" />
-            <feature name="cup" axis="-4" />
-            <feature name="down" button="14" />
-            <feature name="left" button="11" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" button="12" />
-            <feature name="rightbumper" button="5" />
-            <feature name="start" button="7" />
-            <feature name="up" button="13" />
-            <feature name="z" axis="+5" />
-        </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="down" button="14" />
-            <feature name="left" button="11" />
-            <feature name="right" button="12" />
-            <feature name="select" button="6" />
-            <feature name="start" button="7" />
-            <feature name="up" button="13" />
-        </controller>
-        <controller id="game.controller.ps">
-            <feature name="circle" button="1" />
-            <feature name="cross" button="0" />
-            <feature name="down" button="14" />
-            <feature name="left" button="11" />
-            <feature name="leftbumper" button="4" />
-            <feature name="lefttrigger" axis="+2" />
-            <feature name="right" button="12" />
-            <feature name="rightbumper" button="5" />
-            <feature name="righttrigger" axis="+5" />
-            <feature name="select" button="6" />
-            <feature name="square" button="2" />
-            <feature name="start" button="7" />
-            <feature name="triangle" button="3" />
-            <feature name="up" button="13" />
-        </controller>
-        <controller id="game.controller.snes">
-            <feature name="a" button="1" />
-            <feature name="b" button="0" />
-            <feature name="down" button="14" />
-            <feature name="left" button="11" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" button="12" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="6" />
-            <feature name="start" button="7" />
-            <feature name="up" button="13" />
-            <feature name="x" button="3" />
-            <feature name="y" button="2" />
-        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/Xbox_360_Wireless_Receiver_XBOX_15b_6a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/Xbox_360_Wireless_Receiver_XBOX_15b_6a.xml
index 122633f..14b6c35 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/Xbox_360_Wireless_Receiver_XBOX_15b_6a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/Xbox_360_Wireless_Receiver_XBOX_15b_6a.xml
@@ -1,6 +1,9 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="Xbox 360 Wireless Receiver (XBOX)" provider="linux" buttoncount="15" axiscount="6">
+        <configuration>
+            <appearance id="game.controller.default" />
+        </configuration>
         <controller id="game.controller.default">
             <feature name="a" button="0" />
             <feature name="b" button="1" />
@@ -32,126 +35,5 @@
             <feature name="x" button="2" />
             <feature name="y" button="3" />
         </controller>
-        <controller id="game.controller.dreamcast">
-            <feature name="a" button="0" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="1" />
-            <feature name="down" button="14" />
-            <feature name="left" button="11" />
-            <feature name="lefttrigger" axis="+2" />
-            <feature name="right" button="12" />
-            <feature name="righttrigger" axis="+5" />
-            <feature name="start" button="7" />
-            <feature name="up" button="13" />
-            <feature name="x" button="2" />
-            <feature name="y" button="3" />
-        </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="down" button="14" />
-            <feature name="left" button="11" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" button="12" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="6" />
-            <feature name="start" button="7" />
-            <feature name="up" button="13" />
-        </controller>
-        <controller id="game.controller.genesis">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="c" button="5" />
-            <feature name="down" button="14" />
-            <feature name="left" button="11" />
-            <feature name="mode" button="6" />
-            <feature name="right" button="12" />
-            <feature name="start" button="7" />
-            <feature name="up" button="13" />
-            <feature name="x" button="2" />
-            <feature name="y" button="3" />
-            <feature name="z" button="4" />
-        </controller>
-        <controller id="game.controller.n64">
-            <feature name="a" button="0" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="1" />
-            <feature name="cdown" axis="+4" />
-            <feature name="cleft" axis="-3" />
-            <feature name="cright" axis="+3" />
-            <feature name="cup" axis="-4" />
-            <feature name="down" button="14" />
-            <feature name="left" button="11" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" button="12" />
-            <feature name="rightbumper" button="5" />
-            <feature name="start" button="7" />
-            <feature name="up" button="13" />
-            <feature name="z" axis="+2" />
-        </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="down" button="14" />
-            <feature name="left" button="11" />
-            <feature name="right" button="12" />
-            <feature name="select" button="6" />
-            <feature name="start" button="7" />
-            <feature name="up" button="13" />
-        </controller>
-        <controller id="game.controller.ps">
-            <feature name="circle" button="1" />
-            <feature name="cross" button="0" />
-            <feature name="down" button="14" />
-            <feature name="l3" button="9" />
-            <feature name="left" button="11" />
-            <feature name="leftbumper" button="4" />
-            <feature name="leftstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="lefttrigger" axis="+2" />
-            <feature name="r3" button="10" />
-            <feature name="right" button="12" />
-            <feature name="rightbumper" button="5" />
-            <feature name="rightstick">
-                <up axis="-4" />
-                <down axis="+4" />
-                <right axis="+3" />
-                <left axis="-3" />
-            </feature>
-            <feature name="righttrigger" axis="+5" />
-            <feature name="select" button="6" />
-            <feature name="square" button="2" />
-            <feature name="start" button="7" />
-            <feature name="triangle" button="3" />
-            <feature name="up" button="13" />
-        </controller>
-        <controller id="game.controller.snes">
-            <feature name="a" button="1" />
-            <feature name="b" button="0" />
-            <feature name="down" button="14" />
-            <feature name="left" button="11" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" button="12" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="6" />
-            <feature name="start" button="7" />
-            <feature name="up" button="13" />
-            <feature name="x" button="3" />
-            <feature name="y" button="2" />
-        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/Xbox_360_Wireless_Receiver_XBOX_15b_8a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/Xbox_360_Wireless_Receiver_XBOX_15b_8a.xml
index ddb93c0..8d2d0d1 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/Xbox_360_Wireless_Receiver_XBOX_15b_8a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/Xbox_360_Wireless_Receiver_XBOX_15b_8a.xml
@@ -2,6 +2,7 @@
 <buttonmap>
     <device name="Xbox 360 Wireless Receiver (XBOX)" provider="linux" buttoncount="15" axiscount="8">
         <configuration>
+            <appearance id="game.controller.default" />
             <axis index="2" center="-1" range="2" />
             <axis index="5" center="-1" range="2" />
         </configuration>
@@ -36,126 +37,5 @@
             <feature name="x" button="2" />
             <feature name="y" button="3" />
         </controller>
-        <controller id="game.controller.dreamcast">
-            <feature name="a" button="0" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="1" />
-            <feature name="down" button="14" />
-            <feature name="left" button="11" />
-            <feature name="lefttrigger" axis="+2" />
-            <feature name="right" button="12" />
-            <feature name="righttrigger" axis="+5" />
-            <feature name="start" button="7" />
-            <feature name="up" button="13" />
-            <feature name="x" button="2" />
-            <feature name="y" button="3" />
-        </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="down" button="14" />
-            <feature name="left" button="11" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" button="12" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="6" />
-            <feature name="start" button="7" />
-            <feature name="up" button="13" />
-        </controller>
-        <controller id="game.controller.genesis">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="c" button="5" />
-            <feature name="down" button="14" />
-            <feature name="left" button="11" />
-            <feature name="mode" button="6" />
-            <feature name="right" button="12" />
-            <feature name="start" button="7" />
-            <feature name="up" button="13" />
-            <feature name="x" button="2" />
-            <feature name="y" button="3" />
-            <feature name="z" button="4" />
-        </controller>
-        <controller id="game.controller.n64">
-            <feature name="a" button="0" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="1" />
-            <feature name="cdown" axis="+4" />
-            <feature name="cleft" axis="-3" />
-            <feature name="cright" axis="+3" />
-            <feature name="cup" axis="-4" />
-            <feature name="down" button="14" />
-            <feature name="left" button="11" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" button="12" />
-            <feature name="rightbumper" button="5" />
-            <feature name="start" button="7" />
-            <feature name="up" button="13" />
-            <feature name="z" axis="+2" />
-        </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="1" />
-            <feature name="b" button="0" />
-            <feature name="down" button="14" />
-            <feature name="left" button="11" />
-            <feature name="right" button="12" />
-            <feature name="select" button="6" />
-            <feature name="start" button="7" />
-            <feature name="up" button="13" />
-        </controller>
-        <controller id="game.controller.ps">
-            <feature name="circle" button="1" />
-            <feature name="cross" button="0" />
-            <feature name="down" button="14" />
-            <feature name="l3" button="9" />
-            <feature name="left" button="11" />
-            <feature name="leftbumper" button="4" />
-            <feature name="leftstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="lefttrigger" axis="+2" />
-            <feature name="r3" button="10" />
-            <feature name="right" button="12" />
-            <feature name="rightbumper" button="5" />
-            <feature name="rightstick">
-                <up axis="-4" />
-                <down axis="+4" />
-                <right axis="+3" />
-                <left axis="-3" />
-            </feature>
-            <feature name="righttrigger" axis="+5" />
-            <feature name="select" button="6" />
-            <feature name="square" button="2" />
-            <feature name="start" button="7" />
-            <feature name="triangle" button="3" />
-            <feature name="up" button="13" />
-        </controller>
-        <controller id="game.controller.snes">
-            <feature name="a" button="1" />
-            <feature name="b" button="0" />
-            <feature name="down" button="14" />
-            <feature name="left" button="11" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" button="12" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="6" />
-            <feature name="start" button="7" />
-            <feature name="up" button="13" />
-            <feature name="x" button="3" />
-            <feature name="y" button="2" />
-        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/Xbox_Elite_Wireless_Controller_15b_9a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/Xbox_Elite_Wireless_Controller_15b_9a.xml
new file mode 100644
index 0000000..8319172
--- /dev/null
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/Xbox_Elite_Wireless_Controller_15b_9a.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" ?>
+<buttonmap>
+    <device name="Xbox Elite Wireless Controller" provider="linux" buttoncount="15" axiscount="9">
+        <configuration>
+            <appearance id="game.controller.default" />
+        </configuration>
+        <controller id="game.controller.default">
+            <feature name="a" button="0" />
+            <feature name="b" button="1" />
+            <feature name="back" button="6" />
+            <feature name="down" axis="+7" />
+            <feature name="guide" button="8" />
+            <feature name="left" axis="-6" />
+            <feature name="leftbumper" button="4" />
+            <feature name="leftstick">
+                <up axis="-1" />
+                <down axis="+1" />
+                <right axis="+0" />
+                <left axis="-0" />
+            </feature>
+            <feature name="leftthumb" button="9" />
+            <feature name="lefttrigger" axis="+2" />
+            <feature name="right" axis="+6" />
+            <feature name="rightbumper" button="5" />
+            <feature name="rightstick">
+                <up axis="-4" />
+                <down axis="+4" />
+                <right axis="+3" />
+                <left axis="-3" />
+            </feature>
+            <feature name="rightthumb" button="10" />
+            <feature name="righttrigger" axis="+5" />
+            <feature name="start" button="7" />
+            <feature name="up" axis="-7" />
+            <feature name="x" button="2" />
+            <feature name="y" button="3" />
+        </controller>
+    </device>
+</buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/Xbox_One_Wireless_Controller_11b_8a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/Xbox_One_Wireless_Controller_11b_8a.xml
index 83fdc12..845d88a 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/Xbox_One_Wireless_Controller_11b_8a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/Xbox_One_Wireless_Controller_11b_8a.xml
@@ -2,6 +2,7 @@
 <buttonmap>
     <device name="Xbox One Wireless Controller" provider="linux" buttoncount="11" axiscount="8">
         <configuration>
+            <appearance id="game.controller.default" />
             <axis index="2" center="-1" range="2" />
             <axis index="5" center="-1" range="2" />
         </configuration>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/Xbox_Wireless_Controller_15b_9a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/Xbox_Wireless_Controller_15b_9a.xml
new file mode 100644
index 0000000..2062df8
--- /dev/null
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/Xbox_Wireless_Controller_15b_9a.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" ?>
+<buttonmap>
+    <device name="Xbox Wireless Controller" provider="linux" buttoncount="15" axiscount="9">
+        <configuration>
+            <appearance id="game.controller.default" />
+        </configuration>
+        <controller id="game.controller.default">
+            <feature name="a" button="0" />
+            <feature name="b" button="1" />
+            <feature name="back" button="6" />
+            <feature name="down" axis="+7" />
+            <feature name="guide" button="8" />
+            <feature name="left" axis="-6" />
+            <feature name="leftbumper" button="4" />
+            <feature name="leftstick">
+                <up axis="-1" />
+                <down axis="+1" />
+                <right axis="+0" />
+                <left axis="-0" />
+            </feature>
+            <feature name="leftthumb" button="9" />
+            <feature name="lefttrigger" axis="+2" />
+            <feature name="right" axis="+6" />
+            <feature name="rightbumper" button="5" />
+            <feature name="rightstick">
+                <up axis="-4" />
+                <down axis="+4" />
+                <right axis="+3" />
+                <left axis="-3" />
+            </feature>
+            <feature name="rightthumb" button="10" />
+            <feature name="righttrigger" axis="+5" />
+            <feature name="start" button="7" />
+            <feature name="up" axis="-7" />
+            <feature name="x" button="2" />
+            <feature name="y" button="3" />
+        </controller>
+    </device>
+</buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/mayflash_limited_MAYFLASH_GameCube_Controller_Adap_16b_8a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/mayflash_limited_MAYFLASH_GameCube_Controller_Adap_16b_8a.xml
index 3c8496c..845b1cf 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/mayflash_limited_MAYFLASH_GameCube_Controller_Adap_16b_8a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/mayflash_limited_MAYFLASH_GameCube_Controller_Adap_16b_8a.xml
@@ -2,151 +2,37 @@
 <buttonmap>
     <device name="mayflash limited MAYFLASH GameCube Controller Adapter" provider="linux" buttoncount="16" axiscount="8">
         <configuration>
+            <appearance id="game.controller.gamecube" />
             <axis index="3" center="-1" range="2" />
             <axis index="4" center="-1" range="2" />
+            <button index="4" ignore="true" />
+            <button index="5" ignore="true" />
         </configuration>
-        <controller id="game.controller.default">
+        <controller id="game.controller.gamecube">
             <feature name="a" button="1" />
             <feature name="b" button="2" />
-            <feature name="back" button="7" />
-            <feature name="down" button="14" />
-            <feature name="left" button="15" />
-            <feature name="leftstick">
+            <feature name="controlstick">
                 <up axis="-1" />
                 <down axis="+1" />
                 <right axis="+0" />
                 <left axis="-0" />
             </feature>
-            <feature name="lefttrigger" axis="+3" />
-            <feature name="right" button="13" />
-            <feature name="rightstick">
+            <feature name="cstick">
                 <up axis="-2" />
                 <down axis="+2" />
                 <right axis="+5" />
                 <left axis="-5" />
             </feature>
-            <feature name="righttrigger" axis="+4" />
-            <feature name="start" button="9" />
-            <feature name="up" button="12" />
-            <feature name="x" button="0" />
-            <feature name="y" button="3" />
-        </controller>
-        <controller id="game.controller.dreamcast">
-            <feature name="a" button="1" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="2" />
-            <feature name="down" button="14" />
-            <feature name="left" button="15" />
-            <feature name="lefttrigger" axis="+3" />
-            <feature name="right" button="13" />
-            <feature name="righttrigger" axis="+4" />
-            <feature name="start" button="9" />
-            <feature name="up" button="12" />
-            <feature name="x" button="0" />
-            <feature name="y" button="3" />
-        </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="down" button="14" />
-            <feature name="left" button="15" />
-            <feature name="leftbumper" axis="+3" />
-            <feature name="right" button="13" />
-            <feature name="rightbumper" axis="+4" />
-            <feature name="select" button="7" />
-            <feature name="start" button="9" />
-            <feature name="up" button="12" />
-        </controller>
-        <controller id="game.controller.genesis">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="c" axis="+4" />
             <feature name="down" button="14" />
+            <feature name="l" axis="+3" />
             <feature name="left" button="15" />
-            <feature name="mode" button="7" />
+            <feature name="r" axis="+4" />
             <feature name="right" button="13" />
             <feature name="start" button="9" />
             <feature name="up" button="12" />
             <feature name="x" button="0" />
             <feature name="y" button="3" />
-            <feature name="z" axis="+3" />
-        </controller>
-        <controller id="game.controller.n64">
-            <feature name="a" button="1" />
-            <feature name="analogstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="2" />
-            <feature name="cdown" axis="+2" />
-            <feature name="cleft" axis="-5" />
-            <feature name="cright" axis="+5" />
-            <feature name="cup" axis="-2" />
-            <feature name="down" button="14" />
-            <feature name="left" button="15" />
-            <feature name="leftbumper" axis="+3" />
-            <feature name="right" button="13" />
-            <feature name="rightbumper" axis="+4" />
-            <feature name="start" button="9" />
-            <feature name="up" button="12" />
             <feature name="z" button="7" />
         </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="down" button="14" />
-            <feature name="left" button="15" />
-            <feature name="right" button="13" />
-            <feature name="select" button="7" />
-            <feature name="start" button="9" />
-            <feature name="up" button="12" />
-        </controller>
-        <controller id="game.controller.ps">
-            <feature name="circle" button="2" />
-            <feature name="cross" button="1" />
-            <feature name="down" button="14" />
-            <feature name="left" button="15" />
-            <feature name="leftstick">
-                <up axis="-1" />
-                <down axis="+1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="lefttrigger" axis="+3" />
-            <feature name="right" button="13" />
-            <feature name="rightstick">
-                <up axis="-2" />
-                <down axis="+2" />
-                <right axis="+5" />
-                <left axis="-5" />
-            </feature>
-            <feature name="righttrigger" axis="+4" />
-            <feature name="select" button="7" />
-            <feature name="square" button="0" />
-            <feature name="start" button="9" />
-            <feature name="triangle" button="3" />
-            <feature name="up" button="12" />
-        </controller>
-        <controller id="game.controller.snes">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="down" button="14" />
-            <feature name="left" button="15" />
-            <feature name="leftbumper" axis="+3" />
-            <feature name="right" button="13" />
-            <feature name="rightbumper" axis="+4" />
-            <feature name="select" button="7" />
-            <feature name="start" button="9" />
-            <feature name="up" button="12" />
-            <feature name="x" button="0" />
-            <feature name="y" button="3" />
-        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/usb_gamepad____________10b_2a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/usb_gamepad____________10b_2a.xml
index 8c368dc..236a9f3 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/usb_gamepad____________10b_2a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/usb_gamepad____________10b_2a.xml
@@ -1,6 +1,9 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="usb gamepad           " provider="linux" buttoncount="10" axiscount="2">
+        <configuration>
+            <appearance id="game.controller.snes" />
+        </configuration>
         <controller id="game.controller.snes">
             <feature name="a" button="1" />
             <feature name="b" button="2" />
diff --git a/peripheral.joystick/resources/buttonmaps/xml/linux/usb_gamepad_lowercase_10b_2a.xml b/peripheral.joystick/resources/buttonmaps/xml/linux/usb_gamepad_lowercase_10b_2a.xml
index 5b649cf..aaeac72 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/linux/usb_gamepad_lowercase_10b_2a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/linux/usb_gamepad_lowercase_10b_2a.xml
@@ -1,57 +1,9 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="usb gamepad" provider="linux" buttoncount="10" axiscount="2">
-        <configuration />
-        <controller id="game.controller.default">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="back" button="8" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+0" />
-            <feature name="rightbumper" button="6" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-1" />
-            <feature name="x" button="0" />
-            <feature name="y" button="3" />
-        </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" axis="+0" />
-            <feature name="rightbumper" button="6" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-1" />
-        </controller>
-        <controller id="game.controller.genesis">
-            <feature name="a" button="2" />
-            <feature name="b" button="1" />
-            <feature name="c" button="6" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="mode" button="8" />
-            <feature name="right" axis="+0" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-1" />
-            <feature name="x" button="3" />
-            <feature name="y" button="0" />
-            <feature name="z" button="4" />
-        </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="1" />
-            <feature name="b" button="2" />
-            <feature name="down" axis="+1" />
-            <feature name="left" axis="-0" />
-            <feature name="right" axis="+0" />
-            <feature name="select" button="8" />
-            <feature name="start" button="9" />
-            <feature name="up" axis="-1" />
-        </controller>
+        <configuration>
+            <appearance id="game.controller.snes" />
+        </configuration>
         <controller id="game.controller.snes">
             <feature name="a" button="1" />
             <feature name="b" button="2" />
diff --git a/peripheral.joystick/resources/buttonmaps/xml/udev/8Bitdo_Zero_GamePad_v0A12_p0001_16b_8a.xml b/peripheral.joystick/resources/buttonmaps/xml/udev/8Bitdo_Zero_GamePad_v0A12_p0001_16b_8a.xml
index 85e5325..eec25b8 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/udev/8Bitdo_Zero_GamePad_v0A12_p0001_16b_8a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/udev/8Bitdo_Zero_GamePad_v0A12_p0001_16b_8a.xml
@@ -1,19 +1,9 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="8Bitdo Zero GamePad" provider="udev" vid="0A12" pid="0001" buttoncount="16" axiscount="8">
-        <configuration />
-        <controller id="game.controller.default">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="back" button="10" />
-            <feature name="down" axis="+1" />
-            <feature name="leftbumper" button="6" />
-            <feature name="right" axis="+0" />
-            <feature name="rightbumper" button="7" />
-            <feature name="start" button="11" />
-            <feature name="x" button="3" />
-            <feature name="y" button="4" />
-        </controller>
+        <configuration>
+            <appearance id="game.controller.snes" />
+        </configuration>
         <controller id="game.controller.snes">
             <feature name="a" button="0" />
             <feature name="b" button="1" />
diff --git a/peripheral.joystick/resources/buttonmaps/xml/udev/Generic___USB__Joystick___v0079_p0006_12b_7a.xml b/peripheral.joystick/resources/buttonmaps/xml/udev/Generic___USB__Joystick___v0079_p0006_12b_7a.xml
new file mode 100644
index 0000000..994ad93
--- /dev/null
+++ b/peripheral.joystick/resources/buttonmaps/xml/udev/Generic___USB__Joystick___v0079_p0006_12b_7a.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" ?>
+<buttonmap>
+    <device name="Generic   USB  Joystick  " provider="udev" vid="0079" pid="0006" buttoncount="12" axiscount="7">
+        <configuration>
+            <appearance id="game.controller.n64" />
+        </configuration>
+        <controller id="game.controller.n64">
+            <feature name="a" button="6" />
+            <feature name="b" button="8" />
+            <feature name="cdown" button="2" />
+            <feature name="cleft" button="3" />
+            <feature name="cright" button="1" />
+            <feature name="cup" button="0" />
+            <feature name="down" axis="+6" />
+            <feature name="left" axis="-5" />
+            <feature name="leftbumper" button="4" />
+            <feature name="right" axis="+5" />
+            <feature name="rightbumper" button="5" />
+            <feature name="start" button="9" />
+            <feature name="up" axis="-6" />
+            <feature name="z" button="7" />
+        </controller>
+    </device>
+</buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/udev/HID_6666_0667_v6666_p0667_16b_4a.xml b/peripheral.joystick/resources/buttonmaps/xml/udev/HID_6666_0667_v6666_p0667_16b_4a.xml
new file mode 100644
index 0000000..e4503e1
--- /dev/null
+++ b/peripheral.joystick/resources/buttonmaps/xml/udev/HID_6666_0667_v6666_p0667_16b_4a.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" ?>
+<buttonmap>
+    <device name="HID 6666:0667" provider="udev" vid="6666" pid="0667" buttoncount="16" axiscount="4">
+        <configuration>
+            <appearance id="game.controller.ps.dualanalog" />
+        </configuration>
+    </device>
+</buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/udev/HuiJia__USB_GamePad_v0E8F_p3013_16b_6a.xml b/peripheral.joystick/resources/buttonmaps/xml/udev/HuiJia__USB_GamePad_v0E8F_p3013_16b_6a.xml
new file mode 100644
index 0000000..359920d
--- /dev/null
+++ b/peripheral.joystick/resources/buttonmaps/xml/udev/HuiJia__USB_GamePad_v0E8F_p3013_16b_6a.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" ?>
+<buttonmap>
+    <device name="HuiJia  USB GamePad" provider="linux" buttoncount="16" axiscount="6">
+        <configuration>
+            <appearance id="game.controller.snes" />
+        </configuration>
+    </device>
+</buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/udev/Logitech_Gamepad_F310_v046D_pC21D_11b_8a.xml b/peripheral.joystick/resources/buttonmaps/xml/udev/Logitech_Gamepad_F310_v046D_pC21D_11b_8a.xml
index bed75ee..8a9042e 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/udev/Logitech_Gamepad_F310_v046D_pC21D_11b_8a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/udev/Logitech_Gamepad_F310_v046D_pC21D_11b_8a.xml
@@ -1,7 +1,9 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="Logitech Gamepad F310" provider="udev" vid="046D" pid="C21D" buttoncount="11" axiscount="8">
-        <configuration />
+        <configuration>
+            <appearance id="game.controller.default" />
+        </configuration>
         <controller id="game.controller.default">
             <feature name="a" button="0" />
             <feature name="b" button="1" />
diff --git a/peripheral.joystick/resources/buttonmaps/xml/udev/Microsoft_X-Box_One_pad__Firmware_2015__v045E_p02DD_11b_8a.xml b/peripheral.joystick/resources/buttonmaps/xml/udev/Microsoft_X-Box_One_pad__Firmware_2015__v045E_p02DD_11b_8a.xml
index 9d053f7..0994ea2 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/udev/Microsoft_X-Box_One_pad__Firmware_2015__v045E_p02DD_11b_8a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/udev/Microsoft_X-Box_One_pad__Firmware_2015__v045E_p02DD_11b_8a.xml
@@ -1,7 +1,9 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="Microsoft X-Box One pad (Firmware 2015)" provider="udev" vid="045E" pid="02DD" buttoncount="11" axiscount="8">
-        <configuration />
+        <configuration>
+            <appearance id="game.controller.default" />
+        </configuration>
         <controller id="game.controller.default">
             <feature name="a" button="0" />
             <feature name="b" button="1" />
diff --git a/peripheral.joystick/resources/buttonmaps/xml/udev/Microsoft_X-Box_One_pad_v045E_p02E6_11b_8a.xml b/peripheral.joystick/resources/buttonmaps/xml/udev/Microsoft_X-Box_One_pad_v045E_p02E6_11b_8a.xml
new file mode 100644
index 0000000..631bd27
--- /dev/null
+++ b/peripheral.joystick/resources/buttonmaps/xml/udev/Microsoft_X-Box_One_pad_v045E_p02E6_11b_8a.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" ?>
+<buttonmap>
+    <device name="Microsoft X-Box One pad" provider="udev" vid="045E" pid="02E6" buttoncount="11" axiscount="8">
+        <configuration>
+            <appearance id="game.controller.default" />
+        </configuration>
+        <controller id="game.controller.default">
+            <feature name="a" button="0" />
+            <feature name="b" button="1" />
+            <feature name="back" button="6" />
+            <feature name="down" axis="+7" />
+            <feature name="guide" button="8" />
+            <feature name="left" axis="-6" />
+            <feature name="leftbumper" button="4" />
+            <feature name="leftstick">
+                <up axis="-1" />
+                <down axis="+1" />
+                <right axis="+0" />
+                <left axis="-0" />
+            </feature>
+            <feature name="leftthumb" button="9" />
+            <feature name="lefttrigger" axis="+2" />
+            <feature name="right" axis="+6" />
+            <feature name="rightbumper" button="5" />
+            <feature name="rightstick">
+                <up axis="-4" />
+                <down axis="+4" />
+                <right axis="+3" />
+                <left axis="-3" />
+            </feature>
+            <feature name="rightthumb" button="10" />
+            <feature name="righttrigger" axis="+5" />
+            <feature name="start" button="7" />
+            <feature name="up" axis="-7" />
+            <feature name="x" button="2" />
+            <feature name="y" button="3" />
+        </controller>
+    </device>
+</buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/udev/ShanWan_PS_R__Ga_epad_v054C_p0268_17b_6a.xml b/peripheral.joystick/resources/buttonmaps/xml/udev/ShanWan_PS_R__Ga_epad_v054C_p0268_17b_6a.xml
new file mode 100644
index 0000000..9e9c837
--- /dev/null
+++ b/peripheral.joystick/resources/buttonmaps/xml/udev/ShanWan_PS_R__Ga_epad_v054C_p0268_17b_6a.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" ?>
+<buttonmap>
+    <device name="ShanWan PS(R) Ga`epad" provider="udev" vid="054C" pid="0268" buttoncount="17" axiscount="6">
+        <configuration>
+            <appearance id="game.controller.ps.dualanalog" />
+        </configuration>
+        <controller id="game.controller.ps.dualanalog">
+            <feature name="analog" button="10" />
+            <feature name="circle" button="1" />
+            <feature name="cross" button="0" />
+            <feature name="down" button="14" />
+            <feature name="l3" button="11" />
+            <feature name="left" button="15" />
+            <feature name="leftbumper" button="4" />
+            <feature name="lefttrigger" button="6" />
+            <feature name="r3" button="12" />
+            <feature name="right" button="16" />
+            <feature name="rightbumper" button="5" />
+            <feature name="righttrigger" button="7" />
+            <feature name="select" button="8" />
+            <feature name="square" button="3" />
+            <feature name="start" button="9" />
+            <feature name="triangle" button="2" />
+            <feature name="up" button="13" />
+        </controller>
+    </device>
+</buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/udev/Sony_Interactive_Entertainment_Wireless_Controller_v054C_p09CC_13b_8a.xml b/peripheral.joystick/resources/buttonmaps/xml/udev/Sony_Interactive_Entertainment_Wireless_Controller_v054C_p09CC_13b_8a.xml
new file mode 100644
index 0000000..e4810ea
--- /dev/null
+++ b/peripheral.joystick/resources/buttonmaps/xml/udev/Sony_Interactive_Entertainment_Wireless_Controller_v054C_p09CC_13b_8a.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" ?>
+<buttonmap>
+    <device name="Sony Interactive Entertainment Wireless Controller" provider="udev" vid="054C" pid="09CC" buttoncount="13" axiscount="8">
+        <configuration>
+            <appearance id="game.controller.ps.dualanalog" />
+        </configuration>
+        <controller id="game.controller.ps.dualanalog">
+            <feature name="analog" button="10" />
+            <feature name="circle" button="1" />
+            <feature name="cross" button="0" />
+            <feature name="down" axis="+7" />
+            <feature name="l3" button="11" />
+            <feature name="left" axis="-6" />
+            <feature name="leftbumper" button="4" />
+            <feature name="lefttrigger" button="6" />
+            <feature name="r3" button="12" />
+            <feature name="right" axis="+6" />
+            <feature name="rightbumper" button="5" />
+            <feature name="righttrigger" button="7" />
+            <feature name="select" button="8" />
+            <feature name="square" button="3" />
+            <feature name="start" button="9" />
+            <feature name="triangle" button="2" />
+            <feature name="up" axis="-7" />
+        </controller>
+    </device>
+</buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/udev/Sony_Interactive_Entertainment_Wireless_Controller_v054C_p09CC_14b_8a.xml b/peripheral.joystick/resources/buttonmaps/xml/udev/Sony_Interactive_Entertainment_Wireless_Controller_v054C_p09CC_14b_8a.xml
index 07d3633..6e8f45d 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/udev/Sony_Interactive_Entertainment_Wireless_Controller_v054C_p09CC_14b_8a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/udev/Sony_Interactive_Entertainment_Wireless_Controller_v054C_p09CC_14b_8a.xml
@@ -2,8 +2,42 @@
 <buttonmap>
     <device name="Sony Interactive Entertainment Wireless Controller" provider="udev" vid="054C" pid="09CC" buttoncount="14" axiscount="8">
         <configuration>
+            <appearance id="game.controller.ps.dualanalog" />
+            <axis index="3" center="-1" range="2" />
+            <axis index="4" center="-1" range="2" />
             <button index="6" ignore="true" />
             <button index="7" ignore="true" />
         </configuration>
+        <controller id="game.controller.default">
+            <feature name="a" button="1" />
+            <feature name="b" button="2" />
+            <feature name="back" button="8" />
+            <feature name="down" axis="+7" />
+            <feature name="guide" button="13" />
+            <feature name="left" axis="-6" />
+            <feature name="leftbumper" button="4" />
+            <feature name="leftstick">
+                <up axis="-1" />
+                <down axis="+1" />
+                <right axis="+0" />
+                <left axis="-0" />
+            </feature>
+            <feature name="leftthumb" button="10" />
+            <feature name="lefttrigger" axis="+3" />
+            <feature name="right" axis="+6" />
+            <feature name="rightbumper" button="5" />
+            <feature name="rightstick">
+                <up axis="-5" />
+                <down axis="+5" />
+                <right axis="+2" />
+                <left axis="-2" />
+            </feature>
+            <feature name="rightthumb" button="11" />
+            <feature name="righttrigger" axis="+4" />
+            <feature name="start" button="9" />
+            <feature name="up" axis="-7" />
+            <feature name="x" button="0" />
+            <feature name="y" button="3" />
+        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/udev/Xbox_360_Wireless_Receiver__XBOX__v045E_p0291_15b_8a.xml b/peripheral.joystick/resources/buttonmaps/xml/udev/Xbox_360_Wireless_Receiver__XBOX__v045E_p0291_15b_8a.xml
index 9e1d55c..ef5aaf2 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/udev/Xbox_360_Wireless_Receiver__XBOX__v045E_p0291_15b_8a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/udev/Xbox_360_Wireless_Receiver__XBOX__v045E_p0291_15b_8a.xml
@@ -1,7 +1,9 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="Xbox 360 Wireless Receiver (XBOX)" provider="udev" vid="045E" pid="0291" buttoncount="15" axiscount="8">
-        <configuration />
+        <configuration>
+            <appearance id="game.controller.default" />
+        </configuration>
         <controller id="game.controller.default">
             <feature name="a" button="0" />
             <feature name="b" button="1" />
diff --git a/peripheral.joystick/resources/buttonmaps/xml/udev/Xbox_One_Wireless_Controller_11b_8a.xml b/peripheral.joystick/resources/buttonmaps/xml/udev/Xbox_One_Wireless_Controller_11b_8a.xml
index 98c0cac..9329a92 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/udev/Xbox_One_Wireless_Controller_11b_8a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/udev/Xbox_One_Wireless_Controller_11b_8a.xml
@@ -1,7 +1,9 @@
 <?xml version="1.0" ?>
 <buttonmap>
     <device name="Xbox One Wireless Controller" provider="udev" buttoncount="11" axiscount="8">
-        <configuration />
+        <configuration>
+            <appearance id="game.controller.default" />
+        </configuration>
         <controller id="game.controller.default">
             <feature name="a" button="0" />
             <feature name="b" button="1" />
diff --git a/peripheral.joystick/resources/buttonmaps/xml/udev/mayflash_limited_MAYFLASH_GameCube_Controller_Adap_v0079_p1844_16b_8a.xml b/peripheral.joystick/resources/buttonmaps/xml/udev/mayflash_limited_MAYFLASH_GameCube_Controller_Adap_v0079_p1844_16b_8a.xml
new file mode 100644
index 0000000..5cabad7
--- /dev/null
+++ b/peripheral.joystick/resources/buttonmaps/xml/udev/mayflash_limited_MAYFLASH_GameCube_Controller_Adap_v0079_p1844_16b_8a.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" ?>
+<buttonmap>
+    <device name="mayflash limited MAYFLASH GameCube Controller Adapter" provider="udev" vid="0079" pid="1844" buttoncount="16" axiscount="8">
+        <configuration>
+            <appearance id="game.controller.gamecube" />
+        </configuration>
+        <controller id="game.controller.gamecube">
+            <feature name="a" button="1" />
+            <feature name="b" button="2" />
+            <feature name="down" button="14" />
+            <feature name="l" axis="+3" />
+            <feature name="left" button="15" />
+            <feature name="r" axis="+4" />
+            <feature name="right" button="13" />
+            <feature name="start" button="9" />
+            <feature name="up" button="12" />
+            <feature name="x" button="0" />
+            <feature name="y" button="3" />
+            <feature name="z" button="7" />
+        </controller>
+    </device>
+</buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/udev/usb_gamepad____________v0810_pE501_10b_2a.xml b/peripheral.joystick/resources/buttonmaps/xml/udev/usb_gamepad____________v0810_pE501_10b_2a.xml
new file mode 100644
index 0000000..7776292
--- /dev/null
+++ b/peripheral.joystick/resources/buttonmaps/xml/udev/usb_gamepad____________v0810_pE501_10b_2a.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" ?>
+<buttonmap>
+    <device name="usb gamepad           " provider="udev" vid="0810" pid="E501" buttoncount="10" axiscount="2">
+        <configuration>
+            <appearance id="game.controller.snes" />
+        </configuration>
+        <controller id="game.controller.snes">
+            <feature name="a" button="1" />
+            <feature name="b" button="2" />
+            <feature name="down" axis="+1" />
+            <feature name="leftbumper" button="4" />
+            <feature name="right" axis="+0" />
+            <feature name="rightbumper" button="6" />
+            <feature name="select" button="8" />
+            <feature name="start" button="9" />
+            <feature name="x" button="0" />
+            <feature name="y" button="3" />
+        </controller>
+    </device>
+</buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/xarcade/X-Arcade_Tankstick_Player_1_vAA55_p0101_14b.xml b/peripheral.joystick/resources/buttonmaps/xml/xarcade/X-Arcade_Tankstick_Player_1_vAA55_p0101_14b.xml
index e381451..9dc5f1f 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/xarcade/X-Arcade_Tankstick_Player_1_vAA55_p0101_14b.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/xarcade/X-Arcade_Tankstick_Player_1_vAA55_p0101_14b.xml
@@ -17,101 +17,5 @@
             <feature name="x" button="3" />
             <feature name="y" button="4" />
         </controller>
-        <controller id="game.controller.dreamcast">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="down" button="13" />
-            <feature name="left" button="10" />
-            <feature name="lefttrigger" button="6" />
-            <feature name="right" button="11" />
-            <feature name="righttrigger" button="7" />
-            <feature name="start" button="8" />
-            <feature name="up" button="12" />
-            <feature name="x" button="3" />
-            <feature name="y" button="4" />
-        </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="down" button="13" />
-            <feature name="left" button="10" />
-            <feature name="leftbumper" button="6" />
-            <feature name="right" button="11" />
-            <feature name="rightbumper" button="7" />
-            <feature name="select" button="9" />
-            <feature name="start" button="8" />
-            <feature name="up" button="12" />
-        </controller>
-        <controller id="game.controller.genesis">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="c" button="2" />
-            <feature name="down" button="13" />
-            <feature name="left" button="10" />
-            <feature name="mode" button="9" />
-            <feature name="right" button="11" />
-            <feature name="start" button="8" />
-            <feature name="up" button="12" />
-            <feature name="x" button="3" />
-            <feature name="y" button="4" />
-            <feature name="z" button="5" />
-        </controller>
-        <controller id="game.controller.n64">
-            <feature name="a" button="0" />
-            <feature name="analogstick">
-                <up button="12" />
-                <down button="13" />
-                <right button="11" />
-                <left button="10" />
-            </feature>
-            <feature name="b" button="1" />
-            <feature name="cdown" button="7" />
-            <feature name="cleft" button="6" />
-            <feature name="cright" button="4" />
-            <feature name="cup" button="3" />
-            <feature name="leftbumper" button="5" />
-            <feature name="rightbumper" button="2" />
-            <feature name="start" button="8" />
-            <feature name="z" button="9" />
-        </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="down" button="13" />
-            <feature name="left" button="10" />
-            <feature name="right" button="11" />
-            <feature name="select" button="9" />
-            <feature name="start" button="8" />
-            <feature name="up" button="12" />
-        </controller>
-        <controller id="game.controller.ps">
-            <feature name="circle" button="1" />
-            <feature name="cross" button="0" />
-            <feature name="down" button="13" />
-            <feature name="l3" button="5" />
-            <feature name="left" button="10" />
-            <feature name="leftbumper" button="6" />
-            <feature name="right" button="11" />
-            <feature name="rightbumper" button="7" />
-            <feature name="select" button="9" />
-            <feature name="square" button="3" />
-            <feature name="start" button="8" />
-            <feature name="triangle" button="4" />
-            <feature name="up" button="12" />
-        </controller>
-        <controller id="game.controller.snes">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="down" button="13" />
-            <feature name="left" button="10" />
-            <feature name="leftbumper" button="6" />
-            <feature name="right" button="11" />
-            <feature name="rightbumper" button="7" />
-            <feature name="select" button="9" />
-            <feature name="start" button="8" />
-            <feature name="up" button="12" />
-            <feature name="x" button="3" />
-            <feature name="y" button="4" />
-        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/xarcade/X-Arcade_Tankstick_Player_2_vAA55_p0101_14b.xml b/peripheral.joystick/resources/buttonmaps/xml/xarcade/X-Arcade_Tankstick_Player_2_vAA55_p0101_14b.xml
index 0b5e2b9..57c151f 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/xarcade/X-Arcade_Tankstick_Player_2_vAA55_p0101_14b.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/xarcade/X-Arcade_Tankstick_Player_2_vAA55_p0101_14b.xml
@@ -17,101 +17,5 @@
             <feature name="x" button="3" />
             <feature name="y" button="4" />
         </controller>
-        <controller id="game.controller.dreamcast">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="down" button="13" />
-            <feature name="left" button="10" />
-            <feature name="lefttrigger" button="6" />
-            <feature name="right" button="11" />
-            <feature name="righttrigger" button="7" />
-            <feature name="start" button="8" />
-            <feature name="up" button="12" />
-            <feature name="x" button="3" />
-            <feature name="y" button="4" />
-        </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="down" button="13" />
-            <feature name="left" button="10" />
-            <feature name="leftbumper" button="6" />
-            <feature name="right" button="11" />
-            <feature name="rightbumper" button="7" />
-            <feature name="select" button="9" />
-            <feature name="start" button="8" />
-            <feature name="up" button="12" />
-        </controller>
-        <controller id="game.controller.genesis">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="c" button="2" />
-            <feature name="down" button="13" />
-            <feature name="left" button="10" />
-            <feature name="mode" button="9" />
-            <feature name="right" button="11" />
-            <feature name="start" button="8" />
-            <feature name="up" button="12" />
-            <feature name="x" button="3" />
-            <feature name="y" button="4" />
-            <feature name="z" button="5" />
-        </controller>
-        <controller id="game.controller.n64">
-            <feature name="a" button="0" />
-            <feature name="analogstick">
-                <up button="12" />
-                <down button="13" />
-                <right button="11" />
-                <left button="10" />
-            </feature>
-            <feature name="b" button="1" />
-            <feature name="cdown" button="7" />
-            <feature name="cleft" button="6" />
-            <feature name="cright" button="4" />
-            <feature name="cup" button="3" />
-            <feature name="leftbumper" button="5" />
-            <feature name="rightbumper" button="2" />
-            <feature name="start" button="8" />
-            <feature name="z" button="9" />
-        </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="down" button="13" />
-            <feature name="left" button="10" />
-            <feature name="right" button="11" />
-            <feature name="select" button="9" />
-            <feature name="start" button="8" />
-            <feature name="up" button="12" />
-        </controller>
-        <controller id="game.controller.ps">
-            <feature name="circle" button="1" />
-            <feature name="cross" button="0" />
-            <feature name="down" button="13" />
-            <feature name="l3" button="5" />
-            <feature name="left" button="10" />
-            <feature name="leftbumper" button="6" />
-            <feature name="right" button="11" />
-            <feature name="rightbumper" button="7" />
-            <feature name="select" button="9" />
-            <feature name="square" button="3" />
-            <feature name="start" button="8" />
-            <feature name="triangle" button="4" />
-            <feature name="up" button="12" />
-        </controller>
-        <controller id="game.controller.snes">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="down" button="13" />
-            <feature name="left" button="10" />
-            <feature name="leftbumper" button="6" />
-            <feature name="right" button="11" />
-            <feature name="rightbumper" button="7" />
-            <feature name="select" button="9" />
-            <feature name="start" button="8" />
-            <feature name="up" button="12" />
-            <feature name="x" button="3" />
-            <feature name="y" button="4" />
-        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/buttonmaps/xml/xinput/Xbox_360-compatible_controller_15b_6a.xml b/peripheral.joystick/resources/buttonmaps/xml/xinput/Xbox_360-compatible_controller_15b_6a.xml
index 190bd2c..40d18cb 100644
--- a/peripheral.joystick/resources/buttonmaps/xml/xinput/Xbox_360-compatible_controller_15b_6a.xml
+++ b/peripheral.joystick/resources/buttonmaps/xml/xinput/Xbox_360-compatible_controller_15b_6a.xml
@@ -35,128 +35,5 @@
             <feature name="x" button="2" />
             <feature name="y" button="3" />
         </controller>
-        <controller id="game.controller.dreamcast">
-            <feature name="a" button="0" />
-            <feature name="analogstick">
-                <up axis="+1" />
-                <down axis="-1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="1" />
-            <feature name="down" button="12" />
-            <feature name="left" button="13" />
-            <feature name="lefttrigger" axis="+4" />
-            <feature name="right" button="11" />
-            <feature name="righttrigger" axis="+5" />
-            <feature name="start" button="7" />
-            <feature name="up" button="10" />
-            <feature name="x" button="2" />
-            <feature name="y" button="3" />
-        </controller>
-        <controller id="game.controller.gba">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="down" button="12" />
-            <feature name="left" button="13" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" button="11" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="6" />
-            <feature name="start" button="7" />
-            <feature name="up" button="10" />
-        </controller>
-        <controller id="game.controller.genesis">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="c" button="5" />
-            <feature name="down" button="12" />
-            <feature name="left" button="13" />
-            <feature name="mode" button="6" />
-            <feature name="right" button="11" />
-            <feature name="start" button="7" />
-            <feature name="up" button="10" />
-            <feature name="x" button="2" />
-            <feature name="y" button="3" />
-            <feature name="z" button="4" />
-        </controller>
-        <controller id="game.controller.n64">
-            <feature name="a" button="0" />
-            <feature name="analogstick">
-                <up axis="+1" />
-                <down axis="-1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="b" button="1" />
-            <feature name="cdown" axis="-3" />
-            <feature name="cleft" axis="-2" />
-            <feature name="cright" axis="+2" />
-            <feature name="cup" axis="+3" />
-            <feature name="down" button="12" />
-            <feature name="left" button="13" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" button="11" />
-            <feature name="rightbumper" button="5" />
-            <feature name="start" button="7" />
-            <feature name="up" button="10" />
-            <feature name="z" axis="+4" />
-        </controller>
-        <controller id="game.controller.nes">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="down" button="12" />
-            <feature name="left" button="13" />
-            <feature name="right" button="11" />
-            <feature name="select" button="6" />
-            <feature name="start" button="7" />
-            <feature name="up" button="10" />
-        </controller>
-        <controller id="game.controller.ps">
-            <feature name="circle" button="1" />
-            <feature name="cross" button="0" />
-            <feature name="down" button="12" />
-            <feature name="l3" button="8" />
-            <feature name="left" button="13" />
-            <feature name="leftbumper" button="4" />
-            <feature name="leftstick">
-                <up axis="+1" />
-                <down axis="-1" />
-                <right axis="+0" />
-                <left axis="-0" />
-            </feature>
-            <feature name="lefttrigger" axis="+4" />
-            <feature name="r3" button="9" />
-            <feature name="right" button="11" />
-            <feature name="rightbumper" button="5" />
-            <feature name="rightstick">
-                <up axis="+3" />
-                <down axis="-3" />
-                <right axis="+2" />
-                <left axis="-2" />
-            </feature>
-            <feature name="righttrigger" axis="+5" />
-            <feature name="select" button="6" />
-            <feature name="square" button="2" />
-            <feature name="start" button="7" />
-            <feature name="strongmotor" motor="0" />
-            <feature name="triangle" button="3" />
-            <feature name="up" button="10" />
-            <feature name="weakmotor" motor="1" />
-        </controller>
-        <controller id="game.controller.snes">
-            <feature name="a" button="0" />
-            <feature name="b" button="1" />
-            <feature name="down" button="12" />
-            <feature name="left" button="13" />
-            <feature name="leftbumper" button="4" />
-            <feature name="right" button="11" />
-            <feature name="rightbumper" button="5" />
-            <feature name="select" button="6" />
-            <feature name="start" button="7" />
-            <feature name="up" button="10" />
-            <feature name="x" button="2" />
-            <feature name="y" button="3" />
-        </controller>
     </device>
 </buttonmap>
diff --git a/peripheral.joystick/resources/language/resource.language.de_de/strings.po b/peripheral.joystick/resources/language/resource.language.de_de/strings.po
index 6ff7aca..7bf0982 100644
--- a/peripheral.joystick/resources/language/resource.language.de_de/strings.po
+++ b/peripheral.joystick/resources/language/resource.language.de_de/strings.po
@@ -7,7 +7,7 @@ msgstr ""
 "Project-Id-Version: peripheral.joystick\n"
 "Report-Msgid-Bugs-To: translations@kodi.tv\n"
 "POT-Creation-Date: 2016-12-06 21:53i\n"
-"PO-Revision-Date: 2021-07-25 09:29+0000\n"
+"PO-Revision-Date: 2023-02-05 23:15+0000\n"
 "Last-Translator: Kai Sommerfeld <kai.sommerfeld@gmx.com>\n"
 "Language-Team: German <https://kodi.weblate.cloud/projects/kodi-add-ons-peripherals/peripheral-joystick/de_de/>\n"
 "Language: de_de\n"
@@ -15,7 +15,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.7.2\n"
+"X-Generator: Weblate 4.15.2\n"
 
 msgctxt "Addon Summary"
 msgid "Kodi Joystick Library"
@@ -23,7 +23,7 @@ msgstr "Joystick-Bibliothek für Kodi"
 
 msgctxt "Addon Description"
 msgid "This library provides joystick drivers and button maps. Multiple joystick APIs are supported, including DirectX, XInput, SDL and the Linux Joystick API."
-msgstr "Diese Bibliothek enthält Joystick-Treiber und Schaltflächenzuordnungen. Es werden mehrere Joystick-APIs unterstützt, darunter DirectX, XInput, SDL und die Linux-Joystick-API."
+msgstr "Diese Bibliothek enthält Joysticktreiber und Schaltflächenzuordnungen. Es werden mehrere Joystick-APIs unterstützt, darunter DirectX, XInput, SDL und die Linux-Joystick-API."
 
 msgctxt "#30000"
 msgid "Driver settings"
@@ -31,7 +31,7 @@ msgstr "Treibereinstellungen"
 
 msgctxt "#30001"
 msgid "Joystick driver"
-msgstr "Joystick-Treiber"
+msgstr "Joysticktreiber"
 
 msgctxt "#30002"
 msgid "None"
diff --git a/peripheral.joystick/resources/language/resource.language.it_it/strings.po b/peripheral.joystick/resources/language/resource.language.it_it/strings.po
index bf3eb3a..fa087b8 100644
--- a/peripheral.joystick/resources/language/resource.language.it_it/strings.po
+++ b/peripheral.joystick/resources/language/resource.language.it_it/strings.po
@@ -7,7 +7,7 @@ msgstr ""
 "Project-Id-Version: peripheral.joystick\n"
 "Report-Msgid-Bugs-To: translations@kodi.tv\n"
 "POT-Creation-Date: 2016-12-06 21:53i\n"
-"PO-Revision-Date: 2022-09-06 12:11+0000\n"
+"PO-Revision-Date: 2023-04-18 01:16+0000\n"
 "Last-Translator: Massimo Pissarello <mapi68@gmail.com>\n"
 "Language-Team: Italian <https://kodi.weblate.cloud/projects/kodi-add-ons-peripherals/peripheral-joystick/it_it/>\n"
 "Language: it_it\n"
@@ -15,7 +15,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.14\n"
+"X-Generator: Weblate 4.15.2\n"
 
 msgctxt "Addon Summary"
 msgid "Kodi Joystick Library"
@@ -23,7 +23,7 @@ msgstr "Libreria Joystick Kodi"
 
 msgctxt "Addon Description"
 msgid "This library provides joystick drivers and button maps. Multiple joystick APIs are supported, including DirectX, XInput, SDL and the Linux Joystick API."
-msgstr "Questa libreria fornisce i driver del joystick e le mappe dei pulsanti. Sono supportate più API joystick, tra cui DirectX, XInput, SDL e l'API Joystick Linux."
+msgstr "Questa libreria fornisce i driver del joystick e le mappe dei pulsanti. Sono supportate più API per joystick, tra cui DirectX, XInput, SDL e Linux Joystick API."
 
 msgctxt "#30000"
 msgid "Driver settings"
diff --git a/src/api/JoystickManager.cpp b/src/api/JoystickManager.cpp
index 078aef4..fe61c65 100644
--- a/src/api/JoystickManager.cpp
+++ b/src/api/JoystickManager.cpp
@@ -27,7 +27,7 @@
 #if defined(HAVE_COCOA)
   #include "cocoa/JoystickInterfaceCocoa.h"
 #endif
-#if defined(HAVE_UDEV)
+#if defined(HAVE_LIBUDEV)
   #include "udev/JoystickInterfaceUdev.h"
 #endif
 
@@ -112,7 +112,7 @@ const std::vector<EJoystickInterface>& CJoystickManager::GetSupportedInterfaces(
 #if defined(HAVE_LINUX_JOYSTICK)
     supportedInterfaces.push_back(EJoystickInterface::LINUX);
 #endif
-#if defined(HAVE_UDEV)
+#if defined(HAVE_LIBUDEV)
     supportedInterfaces.push_back(EJoystickInterface::UDEV);
 #endif
 
@@ -141,7 +141,7 @@ IJoystickInterface* CJoystickManager::CreateInterface(EJoystickInterface iface)
 #if defined(HAVE_SDL_GAMEPAD)
   case EJoystickInterface::SDL: return new CJoystickInterfaceSDL;
 #endif
-#if defined(HAVE_UDEV)
+#if defined(HAVE_LIBUDEV)
   case EJoystickInterface::UDEV: return new CJoystickInterfaceUdev;
 #endif
 #if defined(HAVE_XINPUT)
diff --git a/src/storage/ButtonMap.cpp b/src/storage/ButtonMap.cpp
index 4787d9c..9a71798 100644
--- a/src/storage/ButtonMap.cpp
+++ b/src/storage/ButtonMap.cpp
@@ -253,7 +253,7 @@ void CButtonMap::Sanitize(FeatureVector& features, const std::string& controller
 
       if (!bIsValid)
       {
-        dsyslog("%s: Removing %s from button map", controllerId.c_str(), feature.Name().c_str());
+        dsyslog("Removing %s from button map, is %s installed?", feature.Name().c_str(), controllerId.c_str());
         return true;
       }
 
diff --git a/src/storage/xml/ButtonMapXml.cpp b/src/storage/xml/ButtonMapXml.cpp
index 5e14e92..5a1620b 100644
--- a/src/storage/xml/ButtonMapXml.cpp
+++ b/src/storage/xml/ButtonMapXml.cpp
@@ -68,10 +68,7 @@ bool CButtonMapXml::Load(void)
   const TiXmlElement* pController = pDevice->FirstChildElement(BUTTONMAP_XML_ELEM_CONTROLLER);
 
   if (!pController)
-  {
-    esyslog("Device \"%s\": can't find <%s> tag", m_device->Name().c_str(), BUTTONMAP_XML_ELEM_CONTROLLER);
-    return false;
-  }
+    dsyslog("Device \"%s\": can't find <%s> tag", m_device->Name().c_str(), BUTTONMAP_XML_ELEM_CONTROLLER);
 
   // For logging purposes
   unsigned int totalFeatureCount = 0;
@@ -423,6 +420,12 @@ bool CButtonMapXml::Deserialize(const TiXmlElement* pElement, FeatureVector& fea
       if (pUp || pDown || pRight || pLeft)
       {
         type = m_controllerHelper->FeatureType(controllerId, strName);
+
+        // The type may be unknown if the controller profile isn't installed.
+        // If the feature has multiple directions, 99.9% of the time it's an
+        // analog stick every time.
+        if (type == JOYSTICK_FEATURE_TYPE_UNKNOWN)
+          type = JOYSTICK_FEATURE_TYPE_ANALOG_STICK;
       }
       else
       {

Debdiff

[The following lists of changes regard files as different if they have different names, permissions or owners.]

Files in second set of .debs but not in first

-rw-r--r--  root/root   /usr/lib/debug/.build-id/7c/f4e57ea7e72cee0c987540163017e39fd3e819.debug
-rw-r--r--  root/root   /usr/lib/x86_64-linux-gnu/kodi/addons/peripheral.joystick/peripheral.joystick.so.20.1.11
-rw-r--r--  root/root   /usr/share/kodi/addons/peripheral.joystick/resources/buttonmaps/xml/directinput/4-PLAY_PORT.1_v16D0_p0D04_24b_1h_8a.xml
-rw-r--r--  root/root   /usr/share/kodi/addons/peripheral.joystick/resources/buttonmaps/xml/directinput/4_axis_16_button_joystick_v6666_p0667_16b_4a.xml
-rw-r--r--  root/root   /usr/share/kodi/addons/peripheral.joystick/resources/buttonmaps/xml/directinput/Generic___USB__Joystick___v0079_p0006_12b_1h_5a.xml
-rw-r--r--  root/root   /usr/share/kodi/addons/peripheral.joystick/resources/buttonmaps/xml/linux/Generic___USB__Joystick___12b_7a.xml
-rw-r--r--  root/root   /usr/share/kodi/addons/peripheral.joystick/resources/buttonmaps/xml/linux/HID_6666_0667_16b_4a.xml
-rw-r--r--  root/root   /usr/share/kodi/addons/peripheral.joystick/resources/buttonmaps/xml/linux/HuiJia__USB_GamePad_16b_6a.xml
-rw-r--r--  root/root   /usr/share/kodi/addons/peripheral.joystick/resources/buttonmaps/xml/linux/Microsoft_X-Box_One_Elite_pad_15b_8a.xml
-rw-r--r--  root/root   /usr/share/kodi/addons/peripheral.joystick/resources/buttonmaps/xml/linux/Microsoft_X-Box_One_pad_12b_8a.xml
-rw-r--r--  root/root   /usr/share/kodi/addons/peripheral.joystick/resources/buttonmaps/xml/linux/ShanWan_PS_R__Ga_epad_17b_6a.xml
-rw-r--r--  root/root   /usr/share/kodi/addons/peripheral.joystick/resources/buttonmaps/xml/linux/Xbox_Elite_Wireless_Controller_15b_9a.xml
-rw-r--r--  root/root   /usr/share/kodi/addons/peripheral.joystick/resources/buttonmaps/xml/linux/Xbox_Wireless_Controller_15b_9a.xml
-rw-r--r--  root/root   /usr/share/kodi/addons/peripheral.joystick/resources/buttonmaps/xml/udev/Generic___USB__Joystick___v0079_p0006_12b_7a.xml
-rw-r--r--  root/root   /usr/share/kodi/addons/peripheral.joystick/resources/buttonmaps/xml/udev/HID_6666_0667_v6666_p0667_16b_4a.xml
-rw-r--r--  root/root   /usr/share/kodi/addons/peripheral.joystick/resources/buttonmaps/xml/udev/HuiJia__USB_GamePad_v0E8F_p3013_16b_6a.xml
-rw-r--r--  root/root   /usr/share/kodi/addons/peripheral.joystick/resources/buttonmaps/xml/udev/Microsoft_X-Box_One_pad_v045E_p02E6_11b_8a.xml
-rw-r--r--  root/root   /usr/share/kodi/addons/peripheral.joystick/resources/buttonmaps/xml/udev/ShanWan_PS_R__Ga_epad_v054C_p0268_17b_6a.xml
-rw-r--r--  root/root   /usr/share/kodi/addons/peripheral.joystick/resources/buttonmaps/xml/udev/Sony_Interactive_Entertainment_Wireless_Controller_v054C_p09CC_13b_8a.xml
-rw-r--r--  root/root   /usr/share/kodi/addons/peripheral.joystick/resources/buttonmaps/xml/udev/mayflash_limited_MAYFLASH_GameCube_Controller_Adap_v0079_p1844_16b_8a.xml
-rw-r--r--  root/root   /usr/share/kodi/addons/peripheral.joystick/resources/buttonmaps/xml/udev/usb_gamepad____________v0810_pE501_10b_2a.xml
lrwxrwxrwx  root/root   /usr/lib/x86_64-linux-gnu/kodi/addons/peripheral.joystick/peripheral.joystick.so.20.2 -> peripheral.joystick.so.20.1.11

Files in first set of .debs but not in second

-rw-r--r--  root/root   /usr/lib/debug/.build-id/c2/bb48544cf9f7580268df41715add2d7bbea344.debug
-rw-r--r--  root/root   /usr/lib/x86_64-linux-gnu/kodi/addons/peripheral.joystick/peripheral.joystick.so.20.1.3
-rw-r--r--  root/root   /usr/share/kodi/addons/peripheral.joystick/resources/buttonmaps/xml/GCController/Micro_Gamepad_6b.xml
-rw-r--r--  root/root   /usr/share/kodi/addons/peripheral.joystick/resources/buttonmaps/xml/linux/HuiJia_USB_GamePad_16b_6a.xml
lrwxrwxrwx  root/root   /usr/lib/x86_64-linux-gnu/kodi/addons/peripheral.joystick/peripheral.joystick.so.20.2 -> peripheral.joystick.so.20.1.3

No differences were encountered between the control files of package kodi-peripheral-joystick

Control files of package kodi-peripheral-joystick-dbgsym: lines which differ (wdiff format)

  • Build-Ids: c2bb48544cf9f7580268df41715add2d7bbea344 7cf4e57ea7e72cee0c987540163017e39fd3e819

More details

Full run details