debian/0000755000000000000000000000000012252633131007164 5ustar debian/changelog0000644000000000000000000004756312252633011011052 0ustar mupen64plus-input-sdl (2.0-3) unstable; urgency=low * debian/patches: - Add autoconfig_sidewinder_gamepad_pro.patch, Add support for Microsoft SideWinder Game Pad Pro USB version 1.0 - Add autoconfig_retrolink_n64.patch, Add support for Retrolink N64 USB clone - Add autoconfig_nintendo_wii_remote_pro.patch, Add support for Nintendo Wii Remote Pro Controller - Add fallback_nomousegrab.patch, fall back to key/joy mappings for a controller with mouse=true when the mouse is not grabbed - Add autoconfig_xinput.patch, Add support for XInput version of Xbox360 controller * Upgraded to policy 3.9.5, no changes required -- Sven Eckelmann Fri, 13 Dec 2013 17:29:55 +0100 mupen64plus-input-sdl (2.0-2) unstable; urgency=low * debian/patches: - Add xboxdrv_rumble_war.patch, Add workaround for missing rumble with xboxdrv - Add autoconfig_jess_controller.patch, Jess Technology Co., Ltd. USB Game Controllers - Add autoconfig_szmy_gamepad3.patch, Add support for SZMY-POWER CO.,LTD. GAMEPAD 3 TURBO - Add autoconfig_twin_gamepad.patch, Twin USB Vibration Gamepad - Add autoconfig_wiimote_classic.patch, Add supportt for Nintendo Wiimote Classic -- Sven Eckelmann Sat, 31 Aug 2013 13:42:13 +0200 mupen64plus-input-sdl (2.0-1) unstable; urgency=low * New Upstream Version * Upload to unstable * debian/patches: - Update sdl2_forcefeedback.patch, Support rumble effects when only a single effect can be registered - Remove upstream merged cflags_gnu_source.patch - Rebase sdl2_keysym.patch and sdl2_mousemode.patch on 2.0 * debian/control: - Build-Depend on debhelper 9.20130604 for support of parameters when detecting targets in dh_auto_* * debian/rules: - Work around new debhelper 9.20130624 dh_auto_{clean,test} behavior which is causing a FTBFS by adding an explicit override_dh_auto_{clean,test} rule * debian/watch: - Verify new upstream versions using GPG key 954F81B094AA5BB226F5 -- Sven Eckelmann Fri, 05 Jul 2013 22:52:42 +0200 mupen64plus-input-sdl (2.0~rc2+1+9aaeab081d97-2) experimental; urgency=low * debian/rules: - Switch from SDL 1.2 to SDL 2.0 * debian/control: - Depend on libsdl2-dev instead of libsdl1.2-dev - Add Break for pre-SDL2 libmupen64plus2 * debian/patches: - Add sdl2_forcefeedback.patch, Use SDL2 to play force feedback effects - Add sdl2_keysym.patch, Use SDL1.2 keysym in the config when using SDL2 - Add sdl2_mousemode.patch, Add support for mouse based analog stick using SDL2 - Add cflags_gnu_source.patch, Add CFLAGS -D_GNU_SOURCE to allow usage of strcasestr -- Sven Eckelmann Sun, 23 Jun 2013 13:25:01 +0200 mupen64plus-input-sdl (2.0~rc2+1+9aaeab081d97-1) experimental; urgency=low * New Upstream Snapshot from 9aaeab081d973a23590a7c27b99c28f2944cd5c3 -- Sven Eckelmann Wed, 05 Jun 2013 13:25:04 +0200 mupen64plus-input-sdl (1.99.5+37+60cf41b9115f-1) experimental; urgency=low * New Upstream Snapshot from 60cf41b9115f93fe511e427792849e1fcbc1a6c4 * Update debian/copyright * Enable link-time optimization in debian/rules similar to upstream -- Sven Eckelmann Sun, 19 May 2013 21:04:43 +0200 mupen64plus-input-sdl (1.99.5+31+a5814ef06e8f-1) experimental; urgency=low * New Upstream Snapshot from a5814ef06e8f23433168c38010299711cbe1b658 * Disable extra debug code in release builds with -DNDEBUG in debian/rules -- Sven Eckelmann Fri, 08 Feb 2013 10:15:27 +0100 mupen64plus-input-sdl (1.99.5+14+862d5c75a547-1) experimental; urgency=low * New Upstream Snapshot from 862d5c75a547cc25d8d522270d803acfa1c0e1a2 * Remove obsolete DM-Upload-Allowed in debian/control -- Sven Eckelmann Sun, 02 Dec 2012 22:32:16 +0100 mupen64plus-input-sdl (1.99.5+12+3aea2df28837-1) experimental; urgency=low * New Upstream Snapshot from 3aea2df288376704d686622130c0e8e1115922ef * Upgraded to policy 3.9.4, no changes required -- Sven Eckelmann Tue, 30 Oct 2012 08:41:37 +0100 mupen64plus-input-sdl (1.99.5+9+e34d3baa737b-1) experimental; urgency=low * New Upstream Snapshot from e34d3baa737bec7cc6cfa385c30ca42c30ccf99d -- Sven Eckelmann Tue, 11 Sep 2012 21:08:33 +0200 mupen64plus-input-sdl (1.99.5+8+26e230321985-1) experimental; urgency=low * New Upstream Snapshot from 26e230321985cdb3a3673aed0b678df0eb337a07 * debian/patches: - Remove upstream merged huijia_adapter_config.patch, hyperkin_tomee_config.patch, verbose_warning.patches -- Sven Eckelmann Sun, 17 Jun 2012 00:46:25 +0200 mupen64plus-input-sdl (1.99.5-2) unstable; urgency=low [ Simon Ruderich ] * Let debhelper set the buildflags implicitly [ Sven Eckelmann ] * debian/patches: - Add huijia_adapter_config.patch, Fix for HuiJia adapter auto-config - Add hyperkin_tomee_config.patch, Added auto-config for Hyperkin Tomee N64 controller - Add verbose_warning.patch, Change warning message (SDL joystick not available) to VERBOSE * Install architecture independent files into /usr/share/games/mupen64plus -- Sven Eckelmann Tue, 15 May 2012 23:21:45 +0200 mupen64plus-input-sdl (1.99.5-1) unstable; urgency=low * New Upstream Version * Update debian/copyright * Enable all hardening flags in debian/rules * Upgraded to policy 3.9.3, no changes required * Upgrade debhelper compat to v9 * Use buildflags.mk to set security flags in debian/rules -- Sven Eckelmann Sat, 17 Mar 2012 20:18:35 +0100 mupen64plus-input-sdl (1.99.4+35+db912fcfb862-1) experimental; urgency=low * New upstream snapshot from revision db912fcfb8621cd4060d9355d68bf4efa56387ff * Remove unnecessary --as-needed from linker flags in debian/rules -- Sven Eckelmann Sat, 12 Nov 2011 21:39:59 +0100 mupen64plus-input-sdl (1.99.4+30+02519b25976b-1) experimental; urgency=low * New upstream snapshot from revision 02519b25976b988cfd40af19acf383da4bd8f92f * debian/control: - Depend on mupen64plus-*-abi-2 - Build-Depend on libmupen64plus-dev >= 1.99.4+77+8bb0e6b3ae3a-1 * Don't mix implicit and explicit rules to prevent FTBFS with make 3.82 * debian/patches: - Remove upstream merged patches 2controllers-per-usb-device.patch, patches/inputautocfg.patch, mouse_sensitivity.patch, rewrite_makefile.patch * Update years in debian/copyright * Add debian/get-orig-source.sh for snapshots -- Sven Eckelmann Mon, 29 Aug 2011 17:05:38 +0200 mupen64plus-input-sdl (1.99.4-4) unstable; urgency=low * debian/control: - Add virtual package libsdl-dev as alternative build dependency * Don't mix implicit and explicit rules to prevent FTBFS with make 3.82 * Remove hardening-includes which are now integrated in dpkg- buildflags * Use debian packaging manual URL as format identifier in debian/copyright * debian/patches: - Update inputautocfg.patch using new InputAutoCfg.ini from mercurial -- Sven Eckelmann Mon, 31 Oct 2011 12:49:00 +0100 mupen64plus-input-sdl (1.99.4-3) unstable; urgency=low * Upload to unstable * debian/rules: - Mark all targets as phony - Force PIC using Makefile option - Remove unintended optimization flags * debian/patches: - Remove obsolete default-optimisations.patch, hurd_os.patch - Add rewrite_makefile.patch, Rewrite Makefile to fix flags and linking - Add inputautocfg.patch, Update InputAutoCfg.ini from mercurial - Add mouse_sensitivity.patch, Add mouse sensitivity -- Sven Eckelmann Sun, 24 Jul 2011 14:23:47 +0200 mupen64plus-input-sdl (1.99.4-2) experimental; urgency=low * Upgraded to policy 3.9.2, no changes required * Update Vcs-* fields to new anonscm.debian.org URLs in debian/control * Add multiarch support -- Sven Eckelmann Sat, 11 Jun 2011 16:52:02 +0200 mupen64plus-input-sdl (1.99.4-1) experimental; urgency=low * New Upstream Version * Updated my maintainer e-mail address * Split source package to match upstreams modular release packages * debian/copyright: - Update to DEP5 revision 164 - Update copyright years * debian/patches: - Add hurd_os.patch, Add GNU/Hurd as operating system with "linux" userland - Add 2controllers-per-usb-device.patch, Correctly handle USB devices with multiple game pads - Rebase default-optimisations.patch against 1.99.4 - Remove upstream merged patches: as-needed.patch, correct_fpr32_mapping.patch, correct_security_printf.patch, debian-archs.patch, dejavu-font.patch, destdir.patch, dont-install-unneeded.patch, fix-7z-subfolder.patch, fix-desktop-file.patch, fix_r0_override.patch, fix_readpng.patch, ftbfs-debugger.patch, ftbfs-dynarec.patch, ftbfs-glibc210.patch, ftbfs-gvariant-type-conflicts.patch, ftbfs-kfreebsd.patch, glide64_hurd.patch, glide64-noasm.patch, gtk-open-filter.patch, interpreter_x86_fldcw.patch, jttl_fix_romclosed.patch, link_gdk.patch, load_aidacrate.patch, load_vistatus.patch, noexecstack.patch, optional_signinfo.patch, osd-pause-crash.patch, path_max.patch, pie_support.patch, plugin-searchpath.patch, remove-gln64.patch, remove-nondfsg-icons.patch, resume_on_start.patch, rice-ati-symbols.patch, rice-crash-vendorstring.patch, rice_fog.patch, rice_nodebug.patch, ice-screenflickering.patch, rice-texturepack-crash.patch, rsp_hle_bigendian.patch, rsp_ucode2_reset.patch, static-binutils-libs.patch, system-libbz2.patch, system-liblzma.patch, system-libpng.patch, system-zlib.patch, version-string.patch, xdg-basedir.patch -- Sven Eckelmann Sat, 22 Jan 2011 11:05:28 +0100 mupen64plus (1.5+dfsg1-14) experimental; urgency=low * Upgraded to policy 3.9.1, no changes required * Upgrade debhelper compat to v8 * debian/rules: - set *FLAGS using dpkg-buildflags in debian/rules to work like dpkg-buildpackage when called directly - Use hardening-includes for CFLAGS and LDFLAGS hardened builds - Use externally provided LDFLAGS - Disable support for debugger due to missing pic/pie support of libopcodes.a * debian/patches: - Add correct_security_printf.patch, Correct possible printf format string vulnerability - Add pie_support.patch, Add support for PIE/PIC -- Sven Eckelmann Thu, 23 Sep 2010 13:52:32 +0200 mupen64plus (1.5+dfsg1-13) unstable; urgency=low * debian/patches: - Add path_max.patch, Add dummy PATH_MAX on systems without it (Closes: #588066) - Add optional_signinfo.patch, Only use siginfo subsystem if system offers it (Closes: #588066) - Add glide64_hurd.patch, Define GNU/Hurd as UNIX system for glide64 (Closes: #588066) -- Sven Eckelmann Mon, 12 Jul 2010 23:20:02 +0200 mupen64plus (1.5+dfsg1-12) unstable; urgency=low * Use googlecode.debian.net instead of complex own filters for debian/watch * Upgraded to policy 3.9.0, no changes required * Build only on i386/amd64 because upstream doesn't to support more * debian/patches: - Add link_gdk.patch, Link directly against gdk-2.0 instead indirectly through gtk+-2.0 -- Sven Eckelmann Mon, 28 Jun 2010 21:31:48 +0200 mupen64plus (1.5+dfsg1-11) unstable; urgency=low * debian/patches: - Rename ftbfs-gvariant-type-conflicts.path to ftbfs-gvariant-type-conflicts.patch - Add rice-ati-symbols.patch, Allow to load rice on systems with missing opengl extensions -- Sven Eckelmann Sun, 23 May 2010 11:55:23 +0200 mupen64plus (1.5+dfsg1-10) unstable; urgency=low [ Sven Eckelmann ] * debian/patches: - Add rsp_ucode2_reset.patch, Reset status of specific ucode2 hacks after starting again - Add rsp_hle_bigendian.patch, Fix wrong high level emulation of rsp on big endian systems - Add rice-crash-vendorstring.patch, Don't crash on long OpenGL vendor string (Closes: #580480, LP: #575968) [ Piotr Ożarowski ] * DMUA flag set to yes -- Sven Eckelmann Thu, 06 May 2010 11:34:46 +0200 mupen64plus (1.5+dfsg1-9) unstable; urgency=low * debian/patches: - Add ftbfs-gvariant-type-conflicts.path, Fix FTBFS due to glib's gvariant.h type definitions (Closes: #577329) - Add dont-install-unneeded.patch, Don't install files which aren't used by us * debian/rules: - Enable parallel builds using dh's --parallel - Inform about missing installed files using dh's --list-missing - Share options between dh_auto_build and dh_auto_install * debian/control: - Depend on debhelper 7.4.10 for --parallel and --list-missing -- Sven Eckelmann Sun, 11 Apr 2010 12:23:04 +0200 mupen64plus (1.5+dfsg1-8) unstable; urgency=low * debian/patches: - Add rice_fog.patch, Reduce flickering when enabling fog in rice - Update fix_readpng.patch, Fix FTBFS with libpng14 and remove coding style only changes * Convert to 3.0 (quilt) source format * Remove outdated README.source * debian/control: - Remove shlibs:Depends for binary packages without shared libs dependencies - Remove unneeded build dependency to quilt - Upgraded to policy 3.8.4, no changes required * Correct spelling errors found by lintian * debian/copyright: Update copyright years * Check all files ever published on the download page in debian/watch -- Sven Eckelmann Mon, 15 Mar 2010 16:22:03 +0100 mupen64plus (1.5+dfsg1-7) unstable; urgency=low * debian/patches: - Correct minor dep3 patch tagging format problems - Update correct_fpr32_mapping.patch, prevent corruption of upper registers in a register pair due to sign extension - Add system-liblzma.patch, use liblzma from debian instead of buildin (Closes: #543552) * debian/control: - Depend on liblzma-dev for lzma and xz support -- Sven Eckelmann Mon, 19 Oct 2009 12:38:26 +0200 mupen64plus (1.5+dfsg1-6) unstable; urgency=low * debian/patches: - Add Origin information to patches - Update fix_readpng.patch, Backport actual commit from upstream - Update ftbfs-glibc210.patch, Backport actual commit from upstream - Update noexecstack.patch, Backport actual commit from upstream - Update jttl_fix_romclosed.patch, Backport actual commit from upstream - Add correct_fpr32_mapping.patch, Correct emulation of shared 32 bit wide and 64 bit wide FPR in MIPS I and MIPS III mode - Remove load-fpr-location.patch which is replaced by correct_fpr32_mapping.patch - Add load_aidacrate.patch, Set aiDacrate during savestate load to fix slowdowns after savestate load - Add load_vistatus.patch, Set video width and status during savestate load - Add fix_r0_override.patch, Don't allow to override r0 register - Add resume_on_start.patch, Resume when pressing on start when in pause mode to prevent corruption - Add osd-pause-crash.patch, Fix OSD crash after pause-stop-start-pause of emulator -- Sven Eckelmann Thu, 08 Oct 2009 13:29:25 +0200 mupen64plus (1.5+dfsg1-5) unstable; urgency=low * debian/patches: - Change to dep3 patch tagging guidelines - Remove number before patches as order is given by debian/patches/series - Add gtk-open-filter.patch, Show files with .n64 and .v64 extension in filtered open file dialog (Closes: #546046) - Add noexecstack.patch, Don't enable executable stack by default (Closes: #547644) - Add fix_readpng.patch, Fix crash when loading png due to reordering optimizer - Add jttl_fix_romclosed.patch, Stop audio processing thread before freeing buffers to fix segfault during stop of emulation - Add rice_nodebug.patch, Don't enable excessive debug functionality in rice_video - Add interpreter_x86_fldcw.patch, Correctly set floating point control word - Add load-fpr-location.patch, Set register bank location when loading savestate -- Sven Eckelmann Mon, 28 Sep 2009 15:23:17 +0200 mupen64plus (1.5+dfsg1-4) unstable; urgency=low * debian/patches; - Update 119-debian-archs.patch, Correct detection of armel cpu endianness (Closes: #545463) - Add 120-ftbfs-glibc210, Fix FTBFS using g++-4.4 and glibc 2.10 due to missing const keywords (Closes: #545462) - Add 121-version-string.patch, remove misleading "-development" in version string - Add 122-default-optimisations.patch, Don't override optimisations set by debian build environment -- Sven Eckelmann Tue, 08 Sep 2009 22:17:00 +0200 mupen64plus (1.5+dfsg1-3) unstable; urgency=low * debian/rules: - Set host architecture to support build of i386 running on x86_64 kernel (Closes: #544670) - Don't set NO_ASM parameter anymore as it is handled by 119-debian-archs.patch * debian/patches: - Add 119-debian-archs.patch, Define wordsize and endianness of architectures supported by debian (Closes: #544673) - Update 118-ftbfs-debugger.patch, define dummy functions to decompile recompiled code on non-x86 architectures (Closes: #544662) -- Sven Eckelmann Wed, 02 Sep 2009 23:18:11 +0200 mupen64plus (1.5+dfsg1-2) unstable; urgency=low * debian/patches - Add 114-fix-7z-subfolder.patch, fix crash in romcache when reading 7zip archive with subfolders - Add 115-xdg-basedir.patch, Use "XDG Base Directory" compliant directories for files for each user (Closes: #544428) - Add 116-ftbfs-dynarec.patch, Don't try to compile dynarec on architectures without support (Closes: #544548) - Add 117-ftbfs-kfreebsd.patch, Don't stop compilation due to unknown OS kFreeBSD (Closes: #544550) - Add 118-ftbfs-debugger.patch, Define CHECK_MEM for non-x86 systems to prevent FTBFS due to dynarec checks (Closes: #544549) * debian/control: - Depend on libxdg-basedir-dev and pkg-config to support xdg-basedir specification * debian/rules: - Disable assembler optimized parts on unsupported architectures * Add README.source with information about patch management * Add NEWS.Debian with information about migration of old data and configuration to new xdg compliant directories -- Sven Eckelmann Tue, 01 Sep 2009 20:40:30 +0200 mupen64plus (1.5+dfsg1-1) unstable; urgency=low * Initial release (Closes: #513322) * debian/patches: - Add 100-fix-desktop-file.patch, fix desktop file - Add 101-destdir.patch, fix usage of DESTDIR in install target - Add 102-plugin-searchpath.patch, add search path for plugins - Add 103-dejavu-font.patch, use font from ttf-dejavu-core package - Add 104-as-needed.patch, allow --as-needed to reduce number of linked libraries - Add 105-system-libpng.patch, use libpng from debian instead of buildin - Add 106-system-zlib.patch, use zlib from debian instead of buildin - Add 107-system-libbz2.patch, use libbz2 from debian instead of buildin - Add 108-remove-gln64.patch, don't try to build glN64 removed from dfsg tar - Add 109-remove-nondfsg-icons.patch, don't include non-dfsg icons which are removed from dfsg tarball - Add 110-glide64-noasm.patch, don't use x86-asm on non-x86 plattforms in glide64 - Add 111-rice-texturepack-crash.patch, Fix crash when loading textures from texturepacks with rice_video - Add 112-rice-screenflickering.patch, Reduce screenflickering in some games when using rice_video - Add 113-static-binutils-libs.patch, Link static against binutils libraries with unstable abi -- Sven Eckelmann Mon, 17 Aug 2009 10:18:49 +0200 debian/compat0000644000000000000000000000000212252633011010357 0ustar 9 debian/control0000644000000000000000000000322312252633011010564 0ustar Source: mupen64plus-input-sdl Section: games Priority: optional Maintainer: Tobias Loose Uploaders: Sven Eckelmann Standards-Version: 3.9.5 Homepage: http://code.google.com/p/mupen64plus/ Vcs-Git: git://anonscm.debian.org/collab-maint/mupen64plus-input-sdl.git Vcs-Browser: http://anonscm.debian.org/gitweb/?p=collab-maint/mupen64plus-input-sdl.git Build-Depends: debhelper (>= 9.20130604), dpkg-dev (>= 1.16.1.1), libmupen64plus-dev (>= 1.99.5), libsdl2-dev, Package: mupen64plus-input-sdl Architecture: any-i386 any-amd64 Multi-Arch: same Pre-Depends: ${misc:Pre-Depends}, Depends: ${misc:Depends}, ${shlibs:Depends}, mupen64plus-config-abi-2.2, mupen64plus-input-abi-2, Provides: mupen64plus-input, Breaks: libmupen64plus2 (<< 2.0), Description: sdl input device plugin for mupen64plus Input device plugin for mupen64plus which can use either keyboard or all by SDL supported input devices. All devices are autoconfigured using a database supplied with this package or through manual button mappings inside the local mupen64plus configuration. Package: mupen64plus-input-sdl-dbg Section: debug Priority: extra Architecture: any-i386 any-amd64 Multi-Arch: same Pre-Depends: ${misc:Pre-Depends}, Depends: ${misc:Depends}, mupen64plus-input-sdl (= ${binary:Version}), Description: sdl input device plugin for mupen64plus debug symbols package Input device plugin for mupen64plus which can use either keyboard or all by SDL supported input devices. All devices are autoconfigured using a database or through manual button mappings inside the local mupen64plus configuration. . This package contains the debug files. debian/copyright0000644000000000000000000000353112252633011011116 0ustar Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: mupen64plus-input-sdl Upstream-Contact: Richard 'Richard42' Goedeken Source: http://bitbucket.org/richard42/mupen64plus-input-sdl/ Files: * Copyright: 2009-2013, Richard 'Richard42' Goedeken License: GPL-2+ Files: projects/unix/Makefile Copyright: 2007-2009, Richard 'Richard42' Goedeken License: GPL-2+ Files: src/osal_preproc.h Copyright: 2002, Hacktarux 2009, Richard 'Richard42' Goedeken License: GPL-2+ Files: src/plugin.* Copyright: 2002, Gregor 'Blight' Anich 2008, Scott 'Tillin9' Knauert 2008-2011, Richard 'Richard42' Goedeken License: GPL-2+ Files: debian/* Copyright: 2009-2013, Sven Eckelmann 2009-2013, Tobias Loose License: GPL-2+ License: GPL-2+ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. . This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. . You should have received a copy of the GNU General Public License along with this package; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA . On Debian systems, the full text of the GNU General Public License version 2 can be found in the file `/usr/share/common-licenses/GPL-2'. debian/gbp.conf0000644000000000000000000000005712252633011010602 0ustar [DEFAULT] pristine-tar = True sign-tags = True debian/get-orig-source.sh0000755000000000000000000000146212252633011012536 0ustar #! /bin/sh set -e if [ -z "$DIR" ]; then DIR=mupen64plus-input-sdl fi if [ -z "$OWNER" ]; then OWNER=richard42 fi # try to download source package if [ "$1" != "snapshot" ]; then uscan --verbose --force-download else MODULE="${OWNER}/${DIR}" TMP="`mktemp -t -d`" hg clone --noupdate "http://bitbucket.org/${MODULE}" "${TMP}" REV="`hg --repository "${TMP}" log -r tip --template '{latesttag}+{latesttagdistance}+{node|short}\n'`" LONGREV="`hg --repository "${TMP}" log -r tip --template '{node}\n'`" TARNAME="${DIR}_${REV}.orig.tar" echo "${LONGREV}" EXCLUDE="--exclude ${TMP}/.hgtags --exclude ${TMP}/.hg_archival.txt --exclude ${TMP}/.hgignore" hg --repository "${TMP}" archive --no-decode --type tar --prefix "${DIR}-${REV}/" ${EXCLUDE} -r tip "${TARNAME}" gzip -n -f "${TARNAME}" rm -rf "${TMP}" fi debian/mupen64plus-input-sdl.docs0000644000000000000000000000000712252633011014147 0ustar README debian/mupen64plus-input-sdl.install0000644000000000000000000000006412252633011014670 0ustar usr/lib/*/mupen64plus/ usr/share/games/mupen64plus/ debian/patches/0000755000000000000000000000000012252633011010610 5ustar debian/patches/autoconfig_jess_controller.patch0000644000000000000000000000215612252633011017262 0ustar Description: Add support for Jess Technology Co., Ltd. USB Game Controllers Origin: upstream, https://bitbucket.org/richard42/mupen64plus-input-sdl/commits/cd253cfdbe49098b35b4268215c4380ce0d9e8c9 --- diff --git a/data/InputAutoCfg.ini b/data/InputAutoCfg.ini index e45b10aad99f84ff261ef216b249f8bf474e561d..71034346cfa55376fcd4682e1cb6a3b2adfbd121 100644 --- a/data/InputAutoCfg.ini +++ b/data/InputAutoCfg.ini @@ -276,6 +276,31 @@ Rumblepak switch = X Axis = axis(0-,0+) Y Axis = axis(1-,1+) +[Jess Technology Co., Ltd. USB Game Controllers] +plugged = True +plugin = 2 +mouse = False +AnalogDeadzone = 4096,4096 +AnalogPeak = 32768,32768 +DPad R = axis(0+) +DPad L = axis(0-) +DPad D = axis(1+) +DPad U = axis(1-) +Start = button(9) +Z Trig = button(3) +B Button = button(0) +A Button = button(2) +C Button R = axis(5+) +C Button L = axis(5-) +C Button D = axis(2+) +C Button U = axis(2-) +R Trig = button(6) +L Trig = button(4) +Mempak switch = button(7) +Rumblepak switch = button(5) +X Axis = axis(0-,0+) +Y Axis = axis(1-,1+) + ; X-box controllers and compatible clones [Logitech Chillstream Controller] plugged = True debian/patches/autoconfig_nintendo_wii_remote_pro.patch0000644000000000000000000000175212252633011020775 0ustar Description: Add support for Nintendo Wii Remote Pro Controller Author: Richard Goedeken --- diff --git a/data/InputAutoCfg.ini b/data/InputAutoCfg.ini index 6b595fc4d4c22ac17b4678a06a42c28895177ec0..7643dd170ef2cdded29e686cb097c21cac738a06 100644 --- a/data/InputAutoCfg.ini +++ b/data/InputAutoCfg.ini @@ -564,6 +564,31 @@ Rumblepak switch = button(15) X Axis = axis(4-,4+) Y Axis = axis(5-,5+) +[Nintendo Wii Remote Pro Controller] +plugged = True +plugin = 2 +mouse = False +AnalogDeadzone = 2000,2000 +AnalogPeak = 17000,17000 +DPad R = button(16) +DPad L = button(15) +DPad D = button(14) +DPad U = button(13) +Start = button(9) +Z Trig = button(6) +B Button = button(0) +A Button = button(1) +C Button R = axis(2+) +C Button L = axis(2-) +C Button D = axis(3+) +C Button U = axis(3-) +R Trig = button(5) +L Trig = button(4) +Mempak switch = +Rumblepak switch = +X Axis = axis(0-,0+) +Y Axis = axis(1+,1-) + [PC Game Controller] plugged = True plugin = 2 debian/patches/autoconfig_retrolink_n64.patch0000644000000000000000000000176312252633011016556 0ustar Description: Add support for Retrolink N64 USB clone Author: William Shipley --- diff --git a/data/InputAutoCfg.ini b/data/InputAutoCfg.ini index fcfa506ae061b65d8119749b32822a2e013be363..6b595fc4d4c22ac17b4678a06a42c28895177ec0 100644 --- a/data/InputAutoCfg.ini +++ b/data/InputAutoCfg.ini @@ -176,6 +176,32 @@ Rumblepak switch = X Axis = axis(0-,0+) Y Axis = axis(1-,1+) +; Retrolink N64 USB clone +[Generic USB Joystick] +plugged = True +plugin = 2 +mouse = False +AnalogDeadzone = 4096,4096 +AnalogPeak = 32768,32768 +DPad R = axis(5+) +DPad L = axis(5-) +DPad D = axis(6+) +DPad U = axis(6-) +Start = button(9) +Z Trig = button(7) +B Button = button(8) +A Button = button(6) +C Button R = button(1) +C Button L = button(3) +C Button D = button(2) +C Button U = button(0) +R Trig = button(5) +L Trig = button(4) +Mempak switch = key(109) +Rumblepak switch = key(114) +Y Axis = axis(1-,1+) +X Axis = axis(0-,0+) + [GreenAsia Inc. USB Joystick] plugged = True plugin = 2 debian/patches/autoconfig_sidewinder_gamepad_pro.patch0000644000000000000000000000167412252633011020552 0ustar Description: Add support for Microsoft SideWinder Game Pad Pro USB version 1.0 Author: Gre Pronk --- diff --git a/data/InputAutoCfg.ini b/data/InputAutoCfg.ini index f73bc9818e18d48d9c32bba0fe6ea3758130c18b..fcfa506ae061b65d8119749b32822a2e013be363 100644 --- a/data/InputAutoCfg.ini +++ b/data/InputAutoCfg.ini @@ -1067,4 +1067,27 @@ Rumblepak switch= button(20) Y Axis= axis(4-,4+) X Axis= axis(3-,3+) - +[Microsoft SideWinder Game Pad Pro USB version 1.0] +plugged = True +plugin = 2 +mouse = False +AnalogDeadzone = 4096,4096 +AnalogPeak = 32768,32768 +DPad R = key(275) +DPad L = key(276) +DPad D = key(274) +DPad U = key(273) +Start = button(8) +Z Trig = button(6) +B Button = button(0) +A Button = button(3) +C Button R = button(2) +C Button L = button(4) +C Button D = button(1) +C Button U = button(5) +R Trig = button(7) +L Trig = button(6) +Mempak switch = +Rumblepak switch = +X Axis = axis(0-,0+) +Y Axis = axis(1-,1+) debian/patches/autoconfig_szmy_gamepad3.patch0000644000000000000000000000211312252633011016607 0ustar Description: Add support for SZMY-POWER CO.,LTD. GAMEPAD 3 TURBO Origin: upstream, https://bitbucket.org/richard42/mupen64plus-input-sdl/commits/88291e56d792bffc401cb318049428d968c922e1 --- diff --git a/data/InputAutoCfg.ini b/data/InputAutoCfg.ini index 4968e67f113ec51c097ec236f048ac547dd0967c..70e03dce028eae64f0014424bcd69275852797aa 100644 --- a/data/InputAutoCfg.ini +++ b/data/InputAutoCfg.ini @@ -638,6 +638,31 @@ Rumblepak switch = axis(10+) X Axis = axis(0-,0+) Y Axis = axis(1-,1+) +[SZMY-POWER CO.,LTD. GAMEPAD 3 TURBO] +plugged = True +plugin = 2 +mouse = False +AnalogDeadzone = 4096,4096 +AnalogPeak = 32768,32768 +DPad R = hat(0 Right) +DPad L = hat(0 Left) +DPad D = hat(0 Down) +DPad U = hat(0 Up) +Start = button(9) +Z Trig = button(6) +B Button = button(0) +A Button = button(1) +C Button R = axis(2+) +C Button L = axis(2-) +C Button D = axis(3+) +C Button U = axis(3-) +R Trig = button(5) +L Trig = button(4) +Mempak switch = key(44) +Rumblepak switch = key(46) +X Axis = axis(0-,0+) +Y Axis = axis(1-,1+) + [Thrustmaster Dual Trigger 3-in-1] plugged = True plugin = 2 debian/patches/autoconfig_twin_gamepad.patch0000644000000000000000000000411712252633011016511 0ustar Description: Add support for Twin USB Vibration Gamepad Origin: upstream, https://bitbucket.org/richard42/mupen64plus-input-sdl/commits/52b8865b5c7a8525034b0d980d46053ae07b297f --- diff --git a/data/InputAutoCfg.ini b/data/InputAutoCfg.ini index 70e03dce028eae64f0014424bcd69275852797aa..f73bc9818e18d48d9c32bba0fe6ea3758130c18b 100644 --- a/data/InputAutoCfg.ini +++ b/data/InputAutoCfg.ini @@ -563,6 +563,32 @@ Rumblepak switch = key(114) X Axis = axis(0-,0+) Y Axis = axis(1-,1+) +[PLAYSTATION(R)3 Controller] +[SHENGHIC 2009/0708ZXW-V1Inc. PLAYSTATION(R)3Conteroller] +plugged = True +plugin = 2 +mouse = False +AnalogDeadzone = 4096,4096 +AnalogPeak = 32768,32768 +DPad R = button(5) +DPad L = button(7) +DPad D = button(6) +DPad U = button(4) +Start = button(3) +Z Trig = button(8) +B Button = button(15) +A Button = button(14) +C Button R = axis(2+) +C Button L = axis(2-) +C Button D = axis(3+) +C Button U = axis(3-) +R Trig = button(11) +L Trig = button(10) +Mempak switch = +Rumblepak switch = +X Axis = axis(0-,0+) +Y Axis = axis(1-,1+) + [SAITEK P880] plugged = True plugin = 2 @@ -738,29 +764,28 @@ Rumblepak switch = Y Axis = axis(1-,1+) X Axis = axis(0-,0+) -[SHENGHIC 2009/0708ZXW-V1Inc. PLAYSTATION(R)3Conteroller] -[PLAYSTATION(R)3 Controller] +[Twin USB Vibration Gamepad] plugged = True plugin = 2 mouse = False AnalogDeadzone = 4096,4096 AnalogPeak = 32768,32768 -DPad R = button(5) -DPad L = button(7) -DPad D = button(6) -DPad U = button(4) -Start = button(3) -Z Trig = button(8) -B Button = button(15) -A Button = button(14) -C Button R = axis(2+) -C Button L = axis(2-) -C Button D = axis(3+) -C Button U = axis(3-) -R Trig = button(11) -L Trig = button(10) -Mempak switch = -Rumblepak switch = +DPad R = hat(0 Right) +DPad L = hat(0 Left) +DPad D = hat(0 Down) +DPad U = hat(0 Up) +Start = button(9) +Z Trig = button(7) +B Button = button(0) +A Button = button(2) +C Button R = axis(3+) +C Button L = axis(3-) +C Button D = axis(2+) +C Button U = axis(2-) +R Trig = button(6) +L Trig = button(4) +Mempak switch = +Rumblepak switch = X Axis = axis(0-,0+) Y Axis = axis(1-,1+) debian/patches/autoconfig_wiimote_classic.patch0000644000000000000000000000205712252633011017231 0ustar Description: Add support for Nintendo Wiimote Classic Origin: upstream, https://bitbucket.org/richard42/mupen64plus-input-sdl/commits/6c68ff547c39a04a8d20e49806030be58af02cb9 --- diff --git a/data/InputAutoCfg.ini b/data/InputAutoCfg.ini index 71034346cfa55376fcd4682e1cb6a3b2adfbd121..4968e67f113ec51c097ec236f048ac547dd0967c 100644 --- a/data/InputAutoCfg.ini +++ b/data/InputAutoCfg.ini @@ -513,6 +513,31 @@ Rumblepak switch = key(114) X Axis = axis(0-,0+) Y Axis = axis(1-,1+) +[Nintendo Wiimote Classic] +plugged = True +plugin = 2 +mouse = False +AnalogDeadzone = 4096,4096 +AnalogPeak = 32768,32768 +DPad R = button(23) +DPad L = button(22) +DPad D = button(21) +DPad U = button(20) +Start = button(17) +Z Trig = button(24) +B Button = button(14) +A Button = button(13) +C Button R = axis(2+) +C Button L = axis(2-) +C Button D = axis(3+) +C Button U = axis(3-) +R Trig = button(25) +L Trig = button(26) +Mempak switch = button(16) +Rumblepak switch = button(15) +X Axis = axis(4-,4+) +Y Axis = axis(5-,5+) + [PC Game Controller] plugged = True plugin = 2 debian/patches/autoconfig_xinput.patch0000644000000000000000000000221212252633011015373 0ustar Description: Add support for XInput version of Xbox360 controller Author: Sven Eckelmann --- diff --git a/data/InputAutoCfg.ini b/data/InputAutoCfg.ini index 7643dd170ef2cdded29e686cb097c21cac738a06..311caef50718c501b56bf75f328ca09e2b47fb7d 100644 --- a/data/InputAutoCfg.ini +++ b/data/InputAutoCfg.ini @@ -514,6 +514,35 @@ Rumblepak switch = X Axis = axis(0-,0+) Y Axis = axis(1-,1+) +[XInput: Microsoft X-Box 360 pad] +[XInput: Controller (XBOX 360 For Windows)] +[XInput: XBOX 360 For Windows (Controller)] +[XInput: XBOX 360 For Windows] +[XInput: Xbox 360 Wireless Receiver] +plugged = True +plugin = 2 +mouse = False +AnalogDeadzone = 4096,4096 +AnalogPeak = 32768,32768 +DPad R = button(3) +DPad L = button(2) +DPad D = button(1) +DPad U = button(0) +Start = button(4) +Z Trig = axis(4+) +B Button = button(12) +A Button = button(10) +C Button R = axis(2+) +C Button L = axis(2-) button(13) +C Button D = axis(3+) button(11) +C Button U = axis(3-) +R Trig = button(9) axis(5+) +L Trig = button(8) +Mempak switch = +Rumblepak switch = +X Axis = axis(0-,0+) +Y Axis = axis(1-,1+) + [N64 controller] plugged = True plugin = 2 debian/patches/fallback_nomousegrab.patch0000644000000000000000000000350012252633011015767 0ustar Description: fall back to key/joy mappings for a controller with mouse=true when the mouse is not grabbed Author: Richard Goedeken --- diff --git a/src/plugin.c b/src/plugin.c index c7c4e76b23901b49354a5f66c0572ddd6f532c11..759c24f4abc0450205cbf7dde9bb222ef501a18b 100644 --- a/src/plugin.c +++ b/src/plugin.c @@ -612,27 +612,27 @@ EXPORT void CALL GetKeys( int Control, BUTTONS *Keys ) } #endif } + axis_val = mousex_residual; + if (axis_val < -80) + axis_val = -80; + else if (axis_val > 80) + axis_val = 80; + controller[Control].buttons.X_AXIS = axis_val; + axis_val = mousey_residual; + if (axis_val < -80) + axis_val = -80; + else if (axis_val > 80) + axis_val = 80; + controller[Control].buttons.Y_AXIS = -axis_val; + /* the mouse x/y values decay exponentially */ + mousex_residual = (mousex_residual * 224) / 256; + mousey_residual = (mousey_residual * 224) / 256; } else { mousex_residual = 0; mousey_residual = 0; } - axis_val = mousex_residual; - if (axis_val < -80) - axis_val = -80; - else if (axis_val > 80) - axis_val = 80; - controller[Control].buttons.X_AXIS = axis_val; - axis_val = mousey_residual; - if (axis_val < -80) - axis_val = -80; - else if (axis_val > 80) - axis_val = 80; - controller[Control].buttons.Y_AXIS = -axis_val; - /* the mouse x/y values decay exponentially */ - mousex_residual = (mousex_residual * 224) / 256; - mousey_residual = (mousey_residual * 224) / 256; } #ifdef _DEBUG debian/patches/sdl2_forcefeedback.patch0000644000000000000000000002126712252633011015330 0ustar Description: Use SDL2 to play force feedback effects Author: Sven Eckelmann --- diff --git a/src/plugin.c b/src/plugin.c index 26b1814fd9ce666d5dda1f550f438210e642f603..9e553b1463040b1359e95667e6de2957e8e0abf1 100644 --- a/src/plugin.c +++ b/src/plugin.c @@ -111,7 +111,7 @@ static int romopen = 0; // is a rom opened static unsigned char myKeyState[SDL_NUM_SCANCODES]; -#ifdef __linux__ +#if __linux__ && !SDL_VERSION_ATLEAST(2,0,0) static struct ff_effect ffeffect[4]; static struct ff_effect ffstrong[4]; static struct ff_effect ffweak[4]; @@ -402,7 +402,15 @@ EXPORT void CALL ControllerCommand(int Control, unsigned char *Command) unsigned int dwAddress = (Command[3] << 8) + (Command[4] & 0xE0); if (dwAddress == PAK_IO_RUMBLE && *Data) DebugMessage(M64MSG_VERBOSE, "Triggering rumble pack."); -#ifdef __linux__ +#if SDL_VERSION_ATLEAST(2,0,0) + if(dwAddress == PAK_IO_RUMBLE && controller[Control].event_joystick) { + if (*Data) { + SDL_HapticRumblePlay(controller[Control].event_joystick, 1, SDL_HAPTIC_INFINITY); + } else { + SDL_HapticRumbleStop(controller[Control].event_joystick); + } + } +#elif __linux__ struct input_event play; if( dwAddress == PAK_IO_RUMBLE && controller[Control].event_joystick != 0) { @@ -617,7 +625,30 @@ EXPORT void CALL GetKeys( int Control, BUTTONS *Keys ) *Keys = controller[Control].buttons; /* handle mempack / rumblepak switching (only if rumble is active on joystick) */ -#ifdef __linux__ +#if SDL_VERSION_ATLEAST(2,0,0) + if (controller[Control].event_joystick) { + static unsigned int SwitchPackTime[4] = {0, 0, 0, 0}, SwitchPackType[4] = {0, 0, 0, 0}; + if (controller[Control].buttons.Value & button_bits[14]) { + SwitchPackTime[Control] = SDL_GetTicks(); // time at which the 'switch pack' command was given + SwitchPackType[Control] = PLUGIN_MEMPAK; // type of new pack to insert + controller[Control].control->Plugin = PLUGIN_NONE;// remove old pack + SDL_HapticRumblePlay(controller[Control].event_joystick, 0.5, 500); + } + if (controller[Control].buttons.Value & button_bits[15]) { + SwitchPackTime[Control] = SDL_GetTicks(); // time at which the 'switch pack' command was given + SwitchPackType[Control] = PLUGIN_RAW; // type of new pack to insert + controller[Control].control->Plugin = PLUGIN_NONE;// remove old pack + SDL_HapticRumblePlay(controller[Control].event_joystick, 1, 500); + } + // handle inserting new pack if the time has arrived + if (SwitchPackTime[Control] != 0 && (SDL_GetTicks() - SwitchPackTime[Control]) >= 1000) + { + SDL_HapticRumbleStop(controller[Control].event_joystick); + controller[Control].control->Plugin = SwitchPackType[Control]; + SwitchPackTime[Control] = 0; + } + } +#elif __linux__ if (controller[Control].event_joystick != 0) { struct input_event play; @@ -657,9 +688,66 @@ EXPORT void CALL GetKeys( int Control, BUTTONS *Keys ) controller[Control].buttons.Value = 0; } +static void InitiateJoysticks(int cntrl) +{ + // init SDL joystick subsystem + if (!SDL_WasInit(SDL_INIT_JOYSTICK)) + if (SDL_InitSubSystem(SDL_INIT_JOYSTICK) == -1) { + DebugMessage(M64MSG_ERROR, "Couldn't init SDL joystick subsystem: %s", SDL_GetError() ); + return; + } + + if (controller[cntrl].device >= 0) { + controller[cntrl].joystick = SDL_JoystickOpen(controller[cntrl].device); + if (!controller[cntrl].joystick) + DebugMessage(M64MSG_WARNING, "Couldn't open joystick for controller #%d: %s", cntrl + 1, SDL_GetError()); + } else { + controller[cntrl].joystick = NULL; + } +} + +static void DeinitJoystick(int cntrl) +{ +#if SDL_VERSION_ATLEAST(2,0,0) + if (controller[cntrl].joystick) { + SDL_JoystickClose(controller[cntrl].joystick); + controller[cntrl].joystick = NULL; + } +#endif +} + static void InitiateRumble(int cntrl) { -#ifdef __linux__ +#if SDL_VERSION_ATLEAST(2,0,0) + if (!SDL_WasInit(SDL_INIT_HAPTIC)) { + if (SDL_InitSubSystem(SDL_INIT_HAPTIC) == -1) { + DebugMessage(M64MSG_ERROR, "Couldn't init SDL haptic subsystem: %s", SDL_GetError() ); + return; + } + } + + controller[cntrl].event_joystick = SDL_HapticOpenFromJoystick(controller[cntrl].joystick); + if (!controller[cntrl].event_joystick) { + DebugMessage(M64MSG_WARNING, "Couldn't open rumble support for joystick #%i", cntrl + 1); + return; + } + + if (SDL_HapticRumbleSupported(controller[cntrl].event_joystick) == SDL_FALSE) { + SDL_HapticClose(controller[cntrl].event_joystick); + controller[cntrl].event_joystick = NULL; + DebugMessage(M64MSG_WARNING, "Joystick #%i doesn't support rumble effect", cntrl + 1); + return; + } + + if (SDL_HapticRumbleInit(controller[cntrl].event_joystick) != 0) { + SDL_HapticClose(controller[cntrl].event_joystick); + controller[cntrl].event_joystick = NULL; + DebugMessage(M64MSG_WARNING, "Rumble initialization failed for Joystick #%i", cntrl + 1); + return; + } + + DebugMessage(M64MSG_INFO, "Rumble activated on N64 joystick #%i", cntrl + 1); +#elif __linux__ DIR* dp; struct dirent* ep; unsigned long features[4]; @@ -763,6 +851,16 @@ static void InitiateRumble(int cntrl) #endif /* __linux__ */ } +static void DeinitRumble(int cntrl) +{ +#if SDL_VERSION_ATLEAST(2,0,0) + if (controller[cntrl].event_joystick) { + SDL_HapticClose(controller[cntrl].event_joystick); + controller[cntrl].event_joystick = NULL; + } +#endif +} + /****************************************************************** Function: InitiateControllers Purpose: This function initialises how each of the controllers @@ -793,10 +891,13 @@ EXPORT void CALL InitiateControllers(CONTROL_INFO ControlInfo) for( i = 0; i < 4; i++ ) { // test for rumble support for this joystick + InitiateJoysticks(i); InitiateRumble(i); // if rumble not supported, switch to mempack if (controller[i].control->Plugin == PLUGIN_RAW && controller[i].event_joystick == 0) controller[i].control->Plugin = PLUGIN_MEMPAK; + DeinitRumble(i); + DeinitJoystick(i); } DebugMessage(M64MSG_INFO, "%s version %i.%i.%i initialized.", PLUGIN_NAME, VERSION_PRINTF_SPLIT(PLUGIN_VERSION)); @@ -833,12 +934,10 @@ EXPORT void CALL RomClosed(void) int i; // close joysticks - for( i = 0; i < 4; i++ ) - if( controller[i].joystick ) - { - SDL_JoystickClose( controller[i].joystick ); - controller[i].joystick = NULL; - } + for( i = 0; i < 4; i++ ) { + DeinitRumble(i); + DeinitJoystick(i); + } // quit SDL joystick subsystem SDL_QuitSubSystem( SDL_INIT_JOYSTICK ); @@ -874,15 +973,10 @@ EXPORT int CALL RomOpen(void) } // open joysticks - for( i = 0; i < 4; i++ ) - if( controller[i].device >= 0 ) - { - controller[i].joystick = SDL_JoystickOpen( controller[i].device ); - if( controller[i].joystick == NULL ) - DebugMessage(M64MSG_WARNING, "Couldn't open joystick for controller #%d: %s", i + 1, SDL_GetError() ); - } - else - controller[i].joystick = NULL; + for (i = 0; i < 4; i++) { + InitiateJoysticks(i); + InitiateRumble(i); + } // grab mouse if (controller[0].mouse || controller[1].mouse || controller[2].mouse || controller[3].mouse) diff --git a/src/plugin.h b/src/plugin.h index f5e7bfd32916d650447efd39076eaf0038bea6eb..c55e96bee51f7e5df429f53724d4baa688a624b4 100644 --- a/src/plugin.h +++ b/src/plugin.h @@ -135,7 +135,11 @@ typedef struct int device; // joystick device; -1 = keyboard; -2 = none int mouse; // mouse enabled: 0 = no; 1 = yes SDL_Joystick *joystick; // SDL joystick device +#if SDL_VERSION_ATLEAST(2,0,0) + SDL_Haptic *event_joystick; // the sdl device for force feeback +#else int event_joystick; // the /dev/input/eventX device for force feeback +#endif int axis_deadzone[2]; // minimum absolute value before analog movement is recognized int axis_peak[2]; // highest analog value returned by SDL, used for scaling float mouse_sens[2]; // mouse sensitivity debian/patches/sdl2_keysym.patch0000644000000000000000000013027012252633011014101 0ustar Description: Use SDL1.2 keysym in the config when using SDL2 It is easier for a user to keep the old SDL1.2 values for the keys in the config instead of converting them by hand. This is extreme important when the default (automatic) config is used. Author: Sven Eckelmann --- diff --git a/projects/unix/Makefile b/projects/unix/Makefile index 0e3a3a9846140c62b2e89174d35bd24fb80699bf..e056a1d52bb666bb49b170cb57434c8e702337a2 100644 --- a/projects/unix/Makefile +++ b/projects/unix/Makefile @@ -256,6 +256,7 @@ OBJDIR = _obj$(POSTFIX) SOURCE = \ $(SRCDIR)/plugin.c \ $(SRCDIR)/autoconfig.c \ + $(SRCDIR)/sdl_key_converter.c \ $(SRCDIR)/config.c ifeq ($(OS),MINGW) diff --git a/src/config.c b/src/config.c index 1a6fa5542372c8d9d872d499c01eed4fb69f0071..5865f72cf39a760481bd4c635ea96cd58eef08c2 100644 --- a/src/config.c +++ b/src/config.c @@ -29,6 +29,7 @@ #include "osal_preproc.h" #include "autoconfig.h" #include "plugin.h" +#include "sdl_key_converter.h" #include "config.h" @@ -232,9 +233,13 @@ static int load_controller_config(const char *SectionName, int i, int sdlDeviceI DebugMessage(M64MSG_WARNING, "missing config key '%s' for controller %i button %i", button_names[j], i+1, j); continue; } - if ((config_ptr = strstr(input_str, "key")) != NULL) - if (sscanf(config_ptr, "key(%i)", (int *) &controller[i].button[j].key) != 1) + if ((config_ptr = strstr(input_str, "key")) != NULL) { + if (sscanf(config_ptr, "key(%i)", (int *) &controller[i].button[j].key) != 1) { DebugMessage(M64MSG_WARNING, "parsing error in key() parameter of button '%s' for controller %i", button_names[j], i + 1); + } else { + controller[i].button[j].key = sdl_keysym2native(controller[i].button[j].key); + } + } if ((config_ptr = strstr(input_str, "button")) != NULL) if (sscanf(config_ptr, "button(%i)", &controller[i].button[j].button) != 1) DebugMessage(M64MSG_WARNING, "parsing error in button() parameter of button '%s' for controller %i", button_names[j], i + 1); @@ -270,9 +275,14 @@ static int load_controller_config(const char *SectionName, int i, int sdlDeviceI DebugMessage(M64MSG_WARNING, "missing config key '%s' for controller %i axis %i", button_names[j], i+1, axis_idx); continue; } - if ((config_ptr = strstr(input_str, "key")) != NULL) - if (sscanf(config_ptr, "key(%i,%i)", (int *) &controller[i].axis[axis_idx].key_a, (int *) &controller[i].axis[axis_idx].key_b) != 2) + if ((config_ptr = strstr(input_str, "key")) != NULL) { + if (sscanf(config_ptr, "key(%i,%i)", (int *) &controller[i].axis[axis_idx].key_a, (int *) &controller[i].axis[axis_idx].key_b) != 2) { DebugMessage(M64MSG_WARNING, "parsing error in key() parameter of axis '%s' for controller %i", button_names[j], i + 1); + } else { + controller[i].axis[axis_idx].key_a = sdl_keysym2native(controller[i].axis[axis_idx].key_a); + controller[i].axis[axis_idx].key_b = sdl_keysym2native(controller[i].axis[axis_idx].key_b); + } + } if ((config_ptr = strstr(input_str, "button")) != NULL) if (sscanf(config_ptr, "button(%i,%i)", &controller[i].axis[axis_idx].button_a, &controller[i].axis[axis_idx].button_b) != 2) DebugMessage(M64MSG_WARNING, "parsing error in button() parameter of axis '%s' for controller %i", button_names[j], i + 1); @@ -342,7 +352,7 @@ static void init_controller_config(int iCtrlIdx, const char *pccDeviceName, eMod ParamString[0] = 0; if (controller[iCtrlIdx].button[j].key > 0) { - sprintf(Param, "key(%i) ", controller[iCtrlIdx].button[j].key); + sprintf(Param, "key(%i) ", sdl_native2keysym(controller[iCtrlIdx].button[j].key)); strcat(ParamString, Param); } if (controller[iCtrlIdx].button[j].button >= 0) @@ -388,7 +398,7 @@ static void init_controller_config(int iCtrlIdx, const char *pccDeviceName, eMod ParamString[0] = 0; if (controller[iCtrlIdx].axis[j].key_a > 0 && controller[iCtrlIdx].axis[j].key_b > 0) { - sprintf(Param, "key(%i,%i) ", controller[iCtrlIdx].axis[j].key_a, controller[iCtrlIdx].axis[j].key_b); + sprintf(Param, "key(%i,%i) ", sdl_native2keysym(controller[iCtrlIdx].axis[j].key_a), sdl_native2keysym(controller[iCtrlIdx].axis[j].key_b)); strcat(ParamString, Param); } if (controller[iCtrlIdx].axis[j].button_a >= 0 && controller[iCtrlIdx].axis[j].button_b >= 0) diff --git a/src/osal_preproc.h b/src/osal_preproc.h index 37c7dc4a866cce0d8014fc2e4cb58100f483ac16..52a451ceb4d4e6c486bd101441d87289d34a068d 100644 --- a/src/osal_preproc.h +++ b/src/osal_preproc.h @@ -30,4 +30,16 @@ #define strcasecmp _stricmp #endif // WIN32 +#if defined(WIN32) && !defined(__MINGW32__) + + // macros + #define osal_inline __inline + +#else /* Not WIN32 */ + + // macros + #define osal_inline inline + +#endif + #endif // OSAL_PREPROC_H diff --git a/src/sdl_key_converter.c b/src/sdl_key_converter.c new file mode 100644 index 0000000000000000000000000000000000000000..a07490537214814317772bb76a084cc277af1418 --- /dev/null +++ b/src/sdl_key_converter.c @@ -0,0 +1,652 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Mupen64plus - sdl_key_converter.c * + * Mupen64Plus homepage: http://code.google.com/p/mupen64plus/ * + * Copyright (C) 2013 Mupen64plus development team * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#include "sdl_key_converter.h" +#include +#define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0])) + +uint16_t sdl_keysym2scancode(uint16_t keysym) +{ + static const uint16_t keysym2scancode[323] = { + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x002au, /* SDLK_BACKSPACE -> SDL_SCANCODE_BACKSPACE */ + 0x002bu, /* SDLK_TAB -> SDL_SCANCODE_TAB */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x009cu, /* SDLK_CLEAR -> SDL_SCANCODE_CLEAR */ + 0x0028u, /* SDLK_RETURN -> SDL_SCANCODE_RETURN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0048u, /* SDLK_PAUSE -> SDL_SCANCODE_PAUSE */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0029u, /* SDLK_ESCAPE -> SDL_SCANCODE_ESCAPE */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x002cu, /* SDLK_SPACE -> SDL_SCANCODE_SPACE */ + 0x0000u, /* SDLK_EXCLAIM -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_QUOTEDBL -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_HASH -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_DOLLAR -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_AMPERSAND -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_QUOTE -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_LEFTPAREN -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_RIGHTPAREN -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_ASTERISK -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_PLUS -> SDL_SCANCODE_UNKNOWN */ + 0x0036u, /* SDLK_COMMA -> SDL_SCANCODE_COMMA */ + 0x002du, /* SDLK_MINUS -> SDL_SCANCODE_MINUS */ + 0x0037u, /* SDLK_PERIOD -> SDL_SCANCODE_PERIOD */ + 0x0038u, /* SDLK_SLASH -> SDL_SCANCODE_SLASH */ + 0x0027u, /* SDLK_0 -> SDL_SCANCODE_0 */ + 0x001eu, /* SDLK_1 -> SDL_SCANCODE_1 */ + 0x001fu, /* SDLK_2 -> SDL_SCANCODE_2 */ + 0x0020u, /* SDLK_3 -> SDL_SCANCODE_3 */ + 0x0021u, /* SDLK_4 -> SDL_SCANCODE_4 */ + 0x0022u, /* SDLK_5 -> SDL_SCANCODE_5 */ + 0x0023u, /* SDLK_6 -> SDL_SCANCODE_6 */ + 0x0024u, /* SDLK_7 -> SDL_SCANCODE_7 */ + 0x0025u, /* SDLK_8 -> SDL_SCANCODE_8 */ + 0x0026u, /* SDLK_9 -> SDL_SCANCODE_9 */ + 0x0000u, /* SDLK_COLON -> SDL_SCANCODE_UNKNOWN */ + 0x0033u, /* SDLK_SEMICOLON -> SDL_SCANCODE_SEMICOLON */ + 0x0000u, /* SDLK_LESS -> SDL_SCANCODE_UNKNOWN */ + 0x002eu, /* SDLK_EQUALS -> SDL_SCANCODE_EQUALS */ + 0x0000u, /* SDLK_GREATER -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_QUESTION -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_AT -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x002fu, /* SDLK_LEFTBRACKET -> SDL_SCANCODE_LEFTBRACKET */ + 0x0031u, /* SDLK_BACKSLASH -> SDL_SCANCODE_BACKSLASH */ + 0x0030u, /* SDLK_RIGHTBRACKET -> SDL_SCANCODE_RIGHTBRACKET */ + 0x0000u, /* SDLK_CARET -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_UNDERSCORE -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_BACKQUOTE -> SDL_SCANCODE_UNKNOWN */ + 0x0004u, /* SDLK_a -> SDL_SCANCODE_A */ + 0x0005u, /* SDLK_b -> SDL_SCANCODE_B */ + 0x0006u, /* SDLK_c -> SDL_SCANCODE_C */ + 0x0007u, /* SDLK_d -> SDL_SCANCODE_D */ + 0x0008u, /* SDLK_e -> SDL_SCANCODE_E */ + 0x0009u, /* SDLK_f -> SDL_SCANCODE_F */ + 0x000au, /* SDLK_g -> SDL_SCANCODE_G */ + 0x000bu, /* SDLK_h -> SDL_SCANCODE_H */ + 0x000cu, /* SDLK_i -> SDL_SCANCODE_I */ + 0x000du, /* SDLK_j -> SDL_SCANCODE_J */ + 0x000eu, /* SDLK_k -> SDL_SCANCODE_K */ + 0x000fu, /* SDLK_l -> SDL_SCANCODE_L */ + 0x0010u, /* SDLK_m -> SDL_SCANCODE_M */ + 0x0011u, /* SDLK_n -> SDL_SCANCODE_N */ + 0x0012u, /* SDLK_o -> SDL_SCANCODE_O */ + 0x0013u, /* SDLK_p -> SDL_SCANCODE_P */ + 0x0014u, /* SDLK_q -> SDL_SCANCODE_Q */ + 0x0015u, /* SDLK_r -> SDL_SCANCODE_R */ + 0x0016u, /* SDLK_s -> SDL_SCANCODE_S */ + 0x0017u, /* SDLK_t -> SDL_SCANCODE_T */ + 0x0018u, /* SDLK_u -> SDL_SCANCODE_U */ + 0x0019u, /* SDLK_v -> SDL_SCANCODE_V */ + 0x001au, /* SDLK_w -> SDL_SCANCODE_W */ + 0x001bu, /* SDLK_x -> SDL_SCANCODE_X */ + 0x001cu, /* SDLK_y -> SDL_SCANCODE_Y */ + 0x001du, /* SDLK_z -> SDL_SCANCODE_Z */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x004cu, /* SDLK_DELETE -> SDL_SCANCODE_DELETE */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_0 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_1 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_2 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_3 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_4 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_5 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_6 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_7 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_8 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_9 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_10 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_11 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_12 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_13 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_14 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_15 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_16 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_17 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_18 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_19 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_20 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_21 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_22 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_23 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_24 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_25 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_26 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_27 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_28 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_29 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_30 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_31 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_32 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_33 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_34 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_35 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_36 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_37 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_38 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_39 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_40 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_41 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_42 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_43 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_44 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_45 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_46 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_47 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_48 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_49 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_50 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_51 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_52 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_53 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_54 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_55 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_56 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_57 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_58 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_59 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_60 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_61 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_62 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_63 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_64 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_65 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_66 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_67 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_68 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_69 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_70 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_71 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_72 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_73 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_74 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_75 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_76 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_77 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_78 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_79 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_80 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_81 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_82 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_83 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_84 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_85 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_86 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_87 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_88 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_89 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_90 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_91 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_92 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_93 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_94 -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_WORLD_95 -> SDL_SCANCODE_UNKNOWN */ + 0x0062u, /* SDLK_KP0 -> SDL_SCANCODE_KP_0 */ + 0x0059u, /* SDLK_KP1 -> SDL_SCANCODE_KP_1 */ + 0x005au, /* SDLK_KP2 -> SDL_SCANCODE_KP_2 */ + 0x005bu, /* SDLK_KP3 -> SDL_SCANCODE_KP_3 */ + 0x005cu, /* SDLK_KP4 -> SDL_SCANCODE_KP_4 */ + 0x005du, /* SDLK_KP5 -> SDL_SCANCODE_KP_5 */ + 0x005eu, /* SDLK_KP6 -> SDL_SCANCODE_KP_6 */ + 0x005fu, /* SDLK_KP7 -> SDL_SCANCODE_KP_7 */ + 0x0060u, /* SDLK_KP8 -> SDL_SCANCODE_KP_8 */ + 0x0061u, /* SDLK_KP9 -> SDL_SCANCODE_KP_9 */ + 0x0063u, /* SDLK_KP_PERIOD -> SDL_SCANCODE_KP_PERIOD */ + 0x0054u, /* SDLK_KP_DIVIDE -> SDL_SCANCODE_KP_DIVIDE */ + 0x0055u, /* SDLK_KP_MULTIPLY -> SDL_SCANCODE_KP_MULTIPLY */ + 0x0056u, /* SDLK_KP_MINUS -> SDL_SCANCODE_KP_MINUS */ + 0x0057u, /* SDLK_KP_PLUS -> SDL_SCANCODE_KP_PLUS */ + 0x0058u, /* SDLK_KP_ENTER -> SDL_SCANCODE_KP_ENTER */ + 0x0067u, /* SDLK_KP_EQUALS -> SDL_SCANCODE_KP_EQUALS */ + 0x0052u, /* SDLK_UP -> SDL_SCANCODE_UP */ + 0x0051u, /* SDLK_DOWN -> SDL_SCANCODE_DOWN */ + 0x004fu, /* SDLK_RIGHT -> SDL_SCANCODE_RIGHT */ + 0x0050u, /* SDLK_LEFT -> SDL_SCANCODE_LEFT */ + 0x0049u, /* SDLK_INSERT -> SDL_SCANCODE_INSERT */ + 0x004au, /* SDLK_HOME -> SDL_SCANCODE_HOME */ + 0x004du, /* SDLK_END -> SDL_SCANCODE_END */ + 0x004bu, /* SDLK_PAGEUP -> SDL_SCANCODE_PAGEUP */ + 0x004eu, /* SDLK_PAGEDOWN -> SDL_SCANCODE_PAGEDOWN */ + 0x003au, /* SDLK_F1 -> SDL_SCANCODE_F1 */ + 0x003bu, /* SDLK_F2 -> SDL_SCANCODE_F2 */ + 0x003cu, /* SDLK_F3 -> SDL_SCANCODE_F3 */ + 0x003du, /* SDLK_F4 -> SDL_SCANCODE_F4 */ + 0x003eu, /* SDLK_F5 -> SDL_SCANCODE_F5 */ + 0x003fu, /* SDLK_F6 -> SDL_SCANCODE_F6 */ + 0x0040u, /* SDLK_F7 -> SDL_SCANCODE_F7 */ + 0x0041u, /* SDLK_F8 -> SDL_SCANCODE_F8 */ + 0x0042u, /* SDLK_F9 -> SDL_SCANCODE_F9 */ + 0x0043u, /* SDLK_F10 -> SDL_SCANCODE_F10 */ + 0x0044u, /* SDLK_F11 -> SDL_SCANCODE_F11 */ + 0x0045u, /* SDLK_F12 -> SDL_SCANCODE_F12 */ + 0x0068u, /* SDLK_F13 -> SDL_SCANCODE_F13 */ + 0x0069u, /* SDLK_F14 -> SDL_SCANCODE_F14 */ + 0x006au, /* SDLK_F15 -> SDL_SCANCODE_F15 */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* unassigned -> SDL_SCANCODE_UNKNOWN */ + 0x0053u, /* SDLK_NUMLOCK -> SDL_SCANCODE_NUMLOCKCLEAR */ + 0x0039u, /* SDLK_CAPSLOCK -> SDL_SCANCODE_CAPSLOCK */ + 0x0000u, /* SDLK_SCROLLOCK -> SDL_SCANCODE_UNKNOWN */ + 0x00e5u, /* SDLK_RSHIFT -> SDL_SCANCODE_RSHIFT */ + 0x00e1u, /* SDLK_LSHIFT -> SDL_SCANCODE_LSHIFT */ + 0x00e4u, /* SDLK_RCTRL -> SDL_SCANCODE_RCTRL */ + 0x00e0u, /* SDLK_LCTRL -> SDL_SCANCODE_LCTRL */ + 0x00e6u, /* SDLK_RALT -> SDL_SCANCODE_RALT */ + 0x00e2u, /* SDLK_LALT -> SDL_SCANCODE_LALT */ + 0x0000u, /* SDLK_RMETA -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_LMETA -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_LSUPER -> SDL_SCANCODE_UNKNOWN */ + 0x0000u, /* SDLK_RSUPER -> SDL_SCANCODE_UNKNOWN */ + 0x0101u, /* SDLK_MODE -> SDL_SCANCODE_MODE */ + 0x0000u, /* SDLK_COMPOSE -> SDL_SCANCODE_UNKNOWN */ + 0x0075u, /* SDLK_HELP -> SDL_SCANCODE_HELP */ + 0x0000u, /* SDLK_PRINT -> SDL_SCANCODE_UNKNOWN */ + 0x009au, /* SDLK_SYSREQ -> SDL_SCANCODE_SYSREQ */ + 0x0000u, /* SDLK_BREAK -> SDL_SCANCODE_UNKNOWN */ + 0x0076u, /* SDLK_MENU -> SDL_SCANCODE_MENU */ + 0x0066u, /* SDLK_POWER -> SDL_SCANCODE_POWER */ + 0x0000u, /* SDLK_EURO -> SDL_SCANCODE_UNKNOWN */ + 0x007au, /* SDLK_UNDO -> SDL_SCANCODE_UNDO */ + }; + + if (keysym >= ARRAY_SIZE(keysym2scancode)) + return 0; + return keysym2scancode[keysym]; +} + +uint16_t sdl_scancode2keysym(uint16_t scancode) +{ + static const uint16_t scancode2keysym[285] = { + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0061u, /* SDL_SCANCODE_A -> SDLK_a */ + 0x0062u, /* SDL_SCANCODE_B -> SDLK_b */ + 0x0063u, /* SDL_SCANCODE_C -> SDLK_c */ + 0x0064u, /* SDL_SCANCODE_D -> SDLK_d */ + 0x0065u, /* SDL_SCANCODE_E -> SDLK_e */ + 0x0066u, /* SDL_SCANCODE_F -> SDLK_f */ + 0x0067u, /* SDL_SCANCODE_G -> SDLK_g */ + 0x0068u, /* SDL_SCANCODE_H -> SDLK_h */ + 0x0069u, /* SDL_SCANCODE_I -> SDLK_i */ + 0x006au, /* SDL_SCANCODE_J -> SDLK_j */ + 0x006bu, /* SDL_SCANCODE_K -> SDLK_k */ + 0x006cu, /* SDL_SCANCODE_L -> SDLK_l */ + 0x006du, /* SDL_SCANCODE_M -> SDLK_m */ + 0x006eu, /* SDL_SCANCODE_N -> SDLK_n */ + 0x006fu, /* SDL_SCANCODE_O -> SDLK_o */ + 0x0070u, /* SDL_SCANCODE_P -> SDLK_p */ + 0x0071u, /* SDL_SCANCODE_Q -> SDLK_q */ + 0x0072u, /* SDL_SCANCODE_R -> SDLK_r */ + 0x0073u, /* SDL_SCANCODE_S -> SDLK_s */ + 0x0074u, /* SDL_SCANCODE_T -> SDLK_t */ + 0x0075u, /* SDL_SCANCODE_U -> SDLK_u */ + 0x0076u, /* SDL_SCANCODE_V -> SDLK_v */ + 0x0077u, /* SDL_SCANCODE_W -> SDLK_w */ + 0x0078u, /* SDL_SCANCODE_X -> SDLK_x */ + 0x0079u, /* SDL_SCANCODE_Y -> SDLK_y */ + 0x007au, /* SDL_SCANCODE_Z -> SDLK_z */ + 0x0031u, /* SDL_SCANCODE_1 -> SDLK_1 */ + 0x0032u, /* SDL_SCANCODE_2 -> SDLK_2 */ + 0x0033u, /* SDL_SCANCODE_3 -> SDLK_3 */ + 0x0034u, /* SDL_SCANCODE_4 -> SDLK_4 */ + 0x0035u, /* SDL_SCANCODE_5 -> SDLK_5 */ + 0x0036u, /* SDL_SCANCODE_6 -> SDLK_6 */ + 0x0037u, /* SDL_SCANCODE_7 -> SDLK_7 */ + 0x0038u, /* SDL_SCANCODE_8 -> SDLK_8 */ + 0x0039u, /* SDL_SCANCODE_9 -> SDLK_9 */ + 0x0030u, /* SDL_SCANCODE_0 -> SDLK_0 */ + 0x000du, /* SDL_SCANCODE_RETURN -> SDLK_RETURN */ + 0x001bu, /* SDL_SCANCODE_ESCAPE -> SDLK_ESCAPE */ + 0x0008u, /* SDL_SCANCODE_BACKSPACE -> SDLK_BACKSPACE */ + 0x0009u, /* SDL_SCANCODE_TAB -> SDLK_TAB */ + 0x0020u, /* SDL_SCANCODE_SPACE -> SDLK_SPACE */ + 0x002du, /* SDL_SCANCODE_MINUS -> SDLK_MINUS */ + 0x003du, /* SDL_SCANCODE_EQUALS -> SDLK_EQUALS */ + 0x005bu, /* SDL_SCANCODE_LEFTBRACKET -> SDLK_LEFTBRACKET */ + 0x005du, /* SDL_SCANCODE_RIGHTBRACKET -> SDLK_RIGHTBRACKET */ + 0x005cu, /* SDL_SCANCODE_BACKSLASH -> SDLK_BACKSLASH */ + 0x0000u, /* SDL_SCANCODE_NONUSHASH -> SDLK_UNKNOWN */ + 0x003bu, /* SDL_SCANCODE_SEMICOLON -> SDLK_SEMICOLON */ + 0x0000u, /* SDL_SCANCODE_APOSTROPHE -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_GRAVE -> SDLK_UNKNOWN */ + 0x002cu, /* SDL_SCANCODE_COMMA -> SDLK_COMMA */ + 0x002eu, /* SDL_SCANCODE_PERIOD -> SDLK_PERIOD */ + 0x002fu, /* SDL_SCANCODE_SLASH -> SDLK_SLASH */ + 0x012du, /* SDL_SCANCODE_CAPSLOCK -> SDLK_CAPSLOCK */ + 0x011au, /* SDL_SCANCODE_F1 -> SDLK_F1 */ + 0x011bu, /* SDL_SCANCODE_F2 -> SDLK_F2 */ + 0x011cu, /* SDL_SCANCODE_F3 -> SDLK_F3 */ + 0x011du, /* SDL_SCANCODE_F4 -> SDLK_F4 */ + 0x011eu, /* SDL_SCANCODE_F5 -> SDLK_F5 */ + 0x011fu, /* SDL_SCANCODE_F6 -> SDLK_F6 */ + 0x0120u, /* SDL_SCANCODE_F7 -> SDLK_F7 */ + 0x0121u, /* SDL_SCANCODE_F8 -> SDLK_F8 */ + 0x0122u, /* SDL_SCANCODE_F9 -> SDLK_F9 */ + 0x0123u, /* SDL_SCANCODE_F10 -> SDLK_F10 */ + 0x0124u, /* SDL_SCANCODE_F11 -> SDLK_F11 */ + 0x0125u, /* SDL_SCANCODE_F12 -> SDLK_F12 */ + 0x0000u, /* SDL_SCANCODE_PRINTSCREEN -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_SCROLLLOCK -> SDLK_UNKNOWN */ + 0x0013u, /* SDL_SCANCODE_PAUSE -> SDLK_PAUSE */ + 0x0115u, /* SDL_SCANCODE_INSERT -> SDLK_INSERT */ + 0x0116u, /* SDL_SCANCODE_HOME -> SDLK_HOME */ + 0x0118u, /* SDL_SCANCODE_PAGEUP -> SDLK_PAGEUP */ + 0x007fu, /* SDL_SCANCODE_DELETE -> SDLK_DELETE */ + 0x0117u, /* SDL_SCANCODE_END -> SDLK_END */ + 0x0119u, /* SDL_SCANCODE_PAGEDOWN -> SDLK_PAGEDOWN */ + 0x0113u, /* SDL_SCANCODE_RIGHT -> SDLK_RIGHT */ + 0x0114u, /* SDL_SCANCODE_LEFT -> SDLK_LEFT */ + 0x0112u, /* SDL_SCANCODE_DOWN -> SDLK_DOWN */ + 0x0111u, /* SDL_SCANCODE_UP -> SDLK_UP */ + 0x012cu, /* SDL_SCANCODE_NUMLOCKCLEAR -> SDLK_NUMLOCK */ + 0x010bu, /* SDL_SCANCODE_KP_DIVIDE -> SDLK_KP_DIVIDE */ + 0x010cu, /* SDL_SCANCODE_KP_MULTIPLY -> SDLK_KP_MULTIPLY */ + 0x010du, /* SDL_SCANCODE_KP_MINUS -> SDLK_KP_MINUS */ + 0x010eu, /* SDL_SCANCODE_KP_PLUS -> SDLK_KP_PLUS */ + 0x010fu, /* SDL_SCANCODE_KP_ENTER -> SDLK_KP_ENTER */ + 0x0101u, /* SDL_SCANCODE_KP_1 -> SDLK_KP1 */ + 0x0102u, /* SDL_SCANCODE_KP_2 -> SDLK_KP2 */ + 0x0103u, /* SDL_SCANCODE_KP_3 -> SDLK_KP3 */ + 0x0104u, /* SDL_SCANCODE_KP_4 -> SDLK_KP4 */ + 0x0105u, /* SDL_SCANCODE_KP_5 -> SDLK_KP5 */ + 0x0106u, /* SDL_SCANCODE_KP_6 -> SDLK_KP6 */ + 0x0107u, /* SDL_SCANCODE_KP_7 -> SDLK_KP7 */ + 0x0108u, /* SDL_SCANCODE_KP_8 -> SDLK_KP8 */ + 0x0109u, /* SDL_SCANCODE_KP_9 -> SDLK_KP9 */ + 0x0100u, /* SDL_SCANCODE_KP_0 -> SDLK_KP0 */ + 0x010au, /* SDL_SCANCODE_KP_PERIOD -> SDLK_KP_PERIOD */ + 0x0000u, /* SDL_SCANCODE_NONUSBACKSLASH -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_APPLICATION -> SDLK_UNKNOWN */ + 0x0140u, /* SDL_SCANCODE_POWER -> SDLK_POWER */ + 0x0110u, /* SDL_SCANCODE_KP_EQUALS -> SDLK_KP_EQUALS */ + 0x0126u, /* SDL_SCANCODE_F13 -> SDLK_F13 */ + 0x0127u, /* SDL_SCANCODE_F14 -> SDLK_F14 */ + 0x0128u, /* SDL_SCANCODE_F15 -> SDLK_F15 */ + 0x0000u, /* SDL_SCANCODE_F16 -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_F17 -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_F18 -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_F19 -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_F20 -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_F21 -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_F22 -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_F23 -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_F24 -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_EXECUTE -> SDLK_UNKNOWN */ + 0x013bu, /* SDL_SCANCODE_HELP -> SDLK_HELP */ + 0x013fu, /* SDL_SCANCODE_MENU -> SDLK_MENU */ + 0x0000u, /* SDL_SCANCODE_SELECT -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_STOP -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_AGAIN -> SDLK_UNKNOWN */ + 0x0142u, /* SDL_SCANCODE_UNDO -> SDLK_UNDO */ + 0x0000u, /* SDL_SCANCODE_CUT -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_COPY -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_PASTE -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_FIND -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_MUTE -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_VOLUMEUP -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_VOLUMEDOWN -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_COMMA -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_EQUALSAS400 -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_INTERNATIONAL1 -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_INTERNATIONAL2 -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_INTERNATIONAL3 -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_INTERNATIONAL4 -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_INTERNATIONAL5 -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_INTERNATIONAL6 -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_INTERNATIONAL7 -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_INTERNATIONAL8 -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_INTERNATIONAL9 -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_LANG1 -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_LANG2 -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_LANG3 -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_LANG4 -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_LANG5 -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_LANG6 -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_LANG7 -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_LANG8 -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_LANG9 -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_ALTERASE -> SDLK_UNKNOWN */ + 0x013du, /* SDL_SCANCODE_SYSREQ -> SDLK_SYSREQ */ + 0x0000u, /* SDL_SCANCODE_CANCEL -> SDLK_UNKNOWN */ + 0x000cu, /* SDL_SCANCODE_CLEAR -> SDLK_CLEAR */ + 0x0000u, /* SDL_SCANCODE_PRIOR -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_RETURN2 -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_SEPARATOR -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_OUT -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_OPER -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_CLEARAGAIN -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_CRSEL -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_EXSEL -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_00 -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_000 -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_THOUSANDSSEPARATOR -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_DECIMALSEPARATOR -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_CURRENCYUNIT -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_CURRENCYSUBUNIT -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_LEFTPAREN -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_RIGHTPAREN -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_LEFTBRACE -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_RIGHTBRACE -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_TAB -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_BACKSPACE -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_A -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_B -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_C -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_D -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_E -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_F -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_XOR -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_POWER -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_PERCENT -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_LESS -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_GREATER -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_AMPERSAND -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_DBLAMPERSAND -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_VERTICALBAR -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_DBLVERTICALBAR -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_COLON -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_HASH -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_SPACE -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_AT -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_EXCLAM -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_MEMSTORE -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_MEMRECALL -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_MEMCLEAR -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_MEMADD -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_MEMSUBTRACT -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_MEMMULTIPLY -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_MEMDIVIDE -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_PLUSMINUS -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_CLEAR -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_CLEARENTRY -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_BINARY -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_OCTAL -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_DECIMAL -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KP_HEXADECIMAL -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0132u, /* SDL_SCANCODE_LCTRL -> SDLK_LCTRL */ + 0x0130u, /* SDL_SCANCODE_LSHIFT -> SDLK_LSHIFT */ + 0x0134u, /* SDL_SCANCODE_LALT -> SDLK_LALT */ + 0x0000u, /* SDL_SCANCODE_LGUI -> SDLK_UNKNOWN */ + 0x0131u, /* SDL_SCANCODE_RCTRL -> SDLK_RCTRL */ + 0x012fu, /* SDL_SCANCODE_RSHIFT -> SDLK_RSHIFT */ + 0x0133u, /* SDL_SCANCODE_RALT -> SDLK_RALT */ + 0x0000u, /* SDL_SCANCODE_RGUI -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0000u, /* unassigned -> SDLK_UNKNOWN */ + 0x0139u, /* SDL_SCANCODE_MODE -> SDLK_MODE */ + 0x0000u, /* SDL_SCANCODE_AUDIONEXT -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_AUDIOPREV -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_AUDIOSTOP -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_AUDIOPLAY -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_AUDIOMUTE -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_MEDIASELECT -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_WWW -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_MAIL -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_CALCULATOR -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_COMPUTER -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_AC_SEARCH -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_AC_HOME -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_AC_BACK -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_AC_FORWARD -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_AC_STOP -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_AC_REFRESH -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_AC_BOOKMARKS -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_BRIGHTNESSDOWN -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_BRIGHTNESSUP -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_DISPLAYSWITCH -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KBDILLUMTOGGLE -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KBDILLUMDOWN -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_KBDILLUMUP -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_EJECT -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_SLEEP -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_APP1 -> SDLK_UNKNOWN */ + 0x0000u, /* SDL_SCANCODE_APP2 -> SDLK_UNKNOWN */ + }; + + if (scancode >= ARRAY_SIZE(scancode2keysym)) + return 0; + return scancode2keysym[scancode]; +} diff --git a/src/sdl_key_converter.h b/src/sdl_key_converter.h new file mode 100644 index 0000000000000000000000000000000000000000..72a17dfc613df943820603c5d46ad4d5daf94c98 --- /dev/null +++ b/src/sdl_key_converter.h @@ -0,0 +1,52 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Mupen64plus - sdl_key_converter.h * + * Mupen64Plus homepage: http://code.google.com/p/mupen64plus/ * + * Copyright (C) 2013 Mupen64plus development team * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#include "osal_preproc.h" +#include + +uint16_t sdl_keysym2scancode(uint16_t keysym); +uint16_t sdl_scancode2keysym(uint16_t scancode); + +#if SDL_VERSION_ATLEAST(1,3,0) + +static osal_inline uint16_t sdl_keysym2native(uint16_t keysym) +{ + return sdl_keysym2scancode(keysym); +} + +static osal_inline uint16_t sdl_native2keysym(uint16_t native) +{ + return sdl_scancode2keysym(native); +} + +#else + +static osal_inline uint16_t sdl_keysym2native(uint16_t keysym) +{ + return keysym; +} + +static osal_inline uint16_t sdl_native2keysym(uint16_t native) +{ + return native; +} + +#endif debian/patches/sdl2_mousemode.patch0000644000000000000000000000622712252633011014561 0ustar Description: Add support for mouse based analog stick using SDL2 Author: Sven Eckelmann --- diff --git a/src/plugin.c b/src/plugin.c index 9e553b1463040b1359e95667e6de2957e8e0abf1..16ad6f7c146c77ef0daf677f22e6a077d8ceec42 100644 --- a/src/plugin.c +++ b/src/plugin.c @@ -306,7 +306,7 @@ doSdlKeys(unsigned char* keystate) grabmouse = !grabmouse; // grab/ungrab mouse #if SDL_VERSION_ATLEAST(2,0,0) -#warning SDL mouse grabbing not yet supported with SDL 2.0 + SDL_SetRelativeMouseMode(grabmouse ? SDL_TRUE : SDL_FALSE); #else SDL_WM_GrabInput( grabmouse ? SDL_GRAB_ON : SDL_GRAB_OFF ); #endif @@ -575,9 +575,10 @@ EXPORT void CALL GetKeys( int Control, BUTTONS *Keys ) if (controller[Control].mouse) { #if SDL_VERSION_ATLEAST(2,0,0) -#warning SDL mouse grabbing not yet supported with SDL 2.0 + if (SDL_GetRelativeMouseMode()) #else if (SDL_WM_GrabInput(SDL_GRAB_QUERY) == SDL_GRAB_ON) +#endif { SDL_PumpEvents(); #if SDL_VERSION_ATLEAST(1,3,0) @@ -586,6 +587,11 @@ EXPORT void CALL GetKeys( int Control, BUTTONS *Keys ) while (SDL_PeepEvents(&event, 1, SDL_GETEVENT, SDL_EVENTMASK(SDL_MOUSEMOTION)) == 1) #endif { +#if SDL_VERSION_ATLEAST(2,0,0) + int w, h; + SDL_Window *focus; +#endif + if (event.motion.xrel) { mousex_residual += (int) (event.motion.xrel * controller[Control].mouse_sens[0]); @@ -594,10 +600,20 @@ EXPORT void CALL GetKeys( int Control, BUTTONS *Keys ) { mousey_residual += (int) (event.motion.yrel * controller[Control].mouse_sens[1]); } + +#if SDL_VERSION_ATLEAST(2,0,0) + focus = SDL_GetKeyboardFocus(); + if (focus) { + SDL_GetWindowSize(focus, &w, &h); + SDL_WarpMouseInWindow(focus, w / 2, h / 2); + } else { + mousex_residual = 0; + mousey_residual = 0; + } +#endif } } else -#endif { mousex_residual = 0; mousey_residual = 0; @@ -944,7 +960,7 @@ EXPORT void CALL RomClosed(void) // release/ungrab mouse #if SDL_VERSION_ATLEAST(2,0,0) -#warning SDL mouse grabbing not yet supported with SDL 2.0 + SDL_SetRelativeMouseMode(SDL_FALSE); #else SDL_WM_GrabInput( SDL_GRAB_OFF ); #endif @@ -981,10 +997,12 @@ EXPORT int CALL RomOpen(void) // grab mouse if (controller[0].mouse || controller[1].mouse || controller[2].mouse || controller[3].mouse) { -#if SDL_VERSION_ATLEAST(2,0,0) -#warning SDL mouse grabbing not yet supported with SDL 2.0 -#else SDL_ShowCursor( 0 ); +#if SDL_VERSION_ATLEAST(2,0,0) + if (SDL_SetRelativeMouseMode(SDL_TRUE) < 0) { + DebugMessage(M64MSG_WARNING, "Couldn't grab input! Mouse support won't work!"); + } +#else if (SDL_WM_GrabInput( SDL_GRAB_ON ) != SDL_GRAB_ON) { DebugMessage(M64MSG_WARNING, "Couldn't grab input! Mouse support won't work!"); debian/patches/series0000644000000000000000000000057312252633011012032 0ustar sdl2_forcefeedback.patch sdl2_keysym.patch sdl2_mousemode.patch xboxdrv_rumble_war.patch autoconfig_jess_controller.patch autoconfig_wiimote_classic.patch autoconfig_szmy_gamepad3.patch autoconfig_twin_gamepad.patch autoconfig_sidewinder_gamepad_pro.patch autoconfig_retrolink_n64.patch autoconfig_nintendo_wii_remote_pro.patch fallback_nomousegrab.patch autoconfig_xinput.patch debian/patches/xboxdrv_rumble_war.patch0000644000000000000000000000154312252633011015547 0ustar Description: Add workaround for missing rumble with xboxdrv Author: Sven Eckelmann --- diff --git a/src/plugin.c b/src/plugin.c index 16ad6f7c146c77ef0daf677f22e6a077d8ceec42..c7c4e76b23901b49354a5f66c0572ddd6f532c11 100644 --- a/src/plugin.c +++ b/src/plugin.c @@ -405,7 +405,7 @@ EXPORT void CALL ControllerCommand(int Control, unsigned char *Command) #if SDL_VERSION_ATLEAST(2,0,0) if(dwAddress == PAK_IO_RUMBLE && controller[Control].event_joystick) { if (*Data) { - SDL_HapticRumblePlay(controller[Control].event_joystick, 1, SDL_HAPTIC_INFINITY); + SDL_HapticRumblePlay(controller[Control].event_joystick, 1, 0x7fff); } else { SDL_HapticRumbleStop(controller[Control].event_joystick); } debian/rules0000755000000000000000000000303312252633011010240 0ustar #!/usr/bin/make -f # -*- makefile -*- export DEB_BUILD_MAINT_OPTIONS=hardening=+all,-pie export DEB_CFLAGS_MAINT_APPEND=-flto DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) DEB_HOST_GNU_CPU ?= $(shell dpkg-architecture -qDEB_HOST_GNU_CPU) DEB_HOST_ARCH_OS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_OS) MAKEOPTIONS = V=1 UNAME='$(DEB_HOST_ARCH_OS)' HOST_CPU='$(DEB_HOST_GNU_CPU)' APIDIR=/usr/include/mupen64plus/ DEBUG=1 PREFIX=/usr/ LIBDIR="/usr/lib/$(DEB_HOST_MULTIARCH)" PIC=1 OPTFLAGS="-DNDEBUG" SHAREDIR="/usr/share/games/mupen64plus/" SDL_CONFIG=sdl2-config DBG_PACKAGE=$(shell dpkg-parsechangelog|grep '^Source: '|sed 's/^Source:\s*//')-dbg binary binary-arch binary-indep build build-arch build-indep clean install install-arch install-indep: dh $@ --sourcedirectory="projects/unix" --parallel --list-missing get-orig-source: $(CURDIR)/debian/get-orig-source.sh override_dh_auto_test: # otherwise dh_auto_test fails with debhelper 9.20130624 override_dh_auto_clean: dh_auto_clean -- $(MAKEOPTIONS) override_dh_auto_build: dh_auto_build -- all $(MAKEOPTIONS) override_dh_auto_install: dh_auto_install -- $(MAKEOPTIONS) override_dh_strip: dh_strip -a --dbg-package="$(DBG_PACKAGE)" override_dh_installchangelogs: dh_installchangelogs RELEASE .PHONY: binary binary-arch binary-indep build build-arch build-indep clean install install-arch install-indep \ get-orig-source override_dh_auto_clean override_dh_auto_test override_dh_auto_build override_dh_auto_install override_dh_strip override_dh_installchangelogs debian/source/0000755000000000000000000000000012252633011010461 5ustar debian/source/format0000644000000000000000000000001412252633011011667 0ustar 3.0 (quilt) debian/source/include-binaries0000644000000000000000000000004012252633011013613 0ustar debian/upstream-signing-key.pgp debian/upstream-signing-key.pgp0000644000000000000000000000220212252633011013747 0ustar  Q$u!l r@a `d0\k#͸>æl_qͩVWD㉯w(Ra =ؠz;s=CawtBEj8,1!KZ\WIC\TzRY'ݵC–I2 (m.Taq5J\3!]W|mWhgLtg{mgk'!E(Ǟi"Mz>_l]4QLh ub3,=dbSvڟ9(rO``QY2Richard Goedeken 7!Q$u    [&zHfZ