Graphical program used to map keyboard buttons and mouse controls to a gamepad. Useful for playing games with no gamepad support

Overview

antimicro

🚨 Important update 🚨

This repo is currently unmaintained. The code hasn't been updated for a while.

But not all is lost, antimicro has a future!

Linux users

We are maintaining an extended and updated Linux version, antimicrox at https://github.com/AntiMicroX/antimicroX.

Please use antimicrox instead of antimicro!

See the README for download options, there are RPM, DEB, AUR packages and flatpaks available.

Windows users

The currently maintained version, antimicrox fails to build for Windows. We are planning to fix it, but help is greatly appreciated!

We are looking for Windows developers! See this issue: https://github.com/AntiMicroX/antimicrox/issues/4

In the meantime, continue using the current Windows binaries, and keep an eye out on here!

What happens to this repo?


Old README

We've Moved!

As of May 24, 2016, antimicro has moved from https://github.com/Ryochan7/antimicro to https://github.com/AntiMicro/antimicro. Additionally, project management has passed from Travis (Ryochan7) to the AntiMicro organization due to Travis having other interests and priorities.

So, thank you for your patience as we settle in. And a special thank you to the following GitHub users who have helped us make the transition:

  • 7185
  • DarkStarSword
  • est31
  • mtdeguzis
  • qwerty12
  • WAZAAAAA0
  • zzpxyx

Description

antimicro is a graphical program used to map keyboard keys and mouse controls to a gamepad. This program is useful for playing PC games using a gamepad that do not have any form of built-in gamepad support. However, you can use this program to control any desktop application with a gamepad; on Linux, this means that your system has to be running an X environment in order to run this program.

This program is currently supported under various Linux distributions, Windows (Vista and later), and FreeBSD. At the time of writing this, antimicro works in Windows XP but, since Windows XP is no longer supported, running the program in Windows XP will not be officially supported. However, efforts will be made to not intentionally break compatibility with Windows XP.

Also, FreeBSD support will be minimal for now. I don't use BSD on a daily basis so the main support for FreeBSD is being offered by Anton. He has graciously made a port of antimicro for FreeBSD that you can find at the following URL: http://www.freshports.org/x11/antimicro/.

License

This program is licensed under the GPL v.3. Please read the gpl.txt text document included with the source code if you would like to read the terms of the license. The license can also be found online at http://www.gnu.org/licenses/gpl.txt

Download

Source code archives and Windows binaries are available from the antimicro Releases section on GitHub:

https://github.com/AntiMicro/antimicro/releases

As well as on BinTray:

https://bintray.com/antimicro/antimicro/antimicro

AntiMicro is currently in the official Fedora repository and can be installed with

$ sudo dnf install antimicro

For Debian and Debian-based distributions, such as Mint, Ubuntu, and Steam OS, please check the LibreGeek Repositories generously hosted by mtdeguzis:

http://packages.libregeek.org/

AntiMicro is currently available for Slackware via SlackBuilds, thanks to NK and Klaatu:

https://slackbuilds.org/result/?search=antimicro&sv=

Ubuntu users may also check the antimicro page on Launchpad:

Latest: https://launchpad.net/~mdeguzis/+archive/ubuntu/libregeek

Deprecated: https://launchpad.net/~ryochan7/+archive/ubuntu/antimicro

Command line

Usage: antimicro [options] [profile]

Options:
-h, --help                     Print help text.
-v, --version                  Print version information.
--tray                         Launch program in system tray only.
--no-tray                      Launch program with the tray menu disabled.
--hidden                       Launch program without the main window
                               displayed.
--profile <location>           Launch program with the configuration file
                               selected as the default for selected
                               controllers. Defaults to all controllers.
--profile-controller <value>   Apply configuration file to a specific
                               controller. Value can be a
                               controller index, name, or GUID.
--unload [<value>]             Unload currently enabled profile(s).
                               Value can be a controller index, name, or GUID.
--startSet <number> [<value>]  Start joysticks on a specific set.
                               Value can be a controller index, name, or GUID.
-d, --daemon                   Launch program as a daemon.
--log-level (debug|info)       Enable logging.
--eventgen (xtest|uinput)      Choose between using XTest support and uinput
                               support for event generation. Default: xtest.
-l, --list                     Print information about joysticks detected by
                               SDL.
--map <value>                  Open game controller mapping window of selected
                               controller. Value can be a controller index or
                               GUID.

Pre-made Profiles

There is a repository for pre-made antimicro profiles. Using a pre-made profile, you can have a controller layout that is suitable for playing a game without having to map everything yourself. It makes using antimicro really convenient. In order to use those pre-made profiles, you have to be running at least antimicro version 2.0 and antimicro must have been compiled with SDL 2 support.

https://github.com/AntiMicro/antimicro-profiles

Wiki

An effort is now being done to utilize the Wiki section on GitHub more. Please check out the Wiki at https://github.com/AntiMicro/antimicro/wiki to read various help pages that have been created. The Wiki is currently open to all GitHub users so feel free to add a new page or modify an existing page.

Build Dependencies

This program is written in C++ using the Qt framework. A C++ compiler and a proper C++ build environment will need to be installed on your system prior to building this program. Under Debian and Debian-based distributions like Ubuntu, the easiest way to get a base build environment set up is to install the meta-package build-essential. The following packages are required to be installed on your system in order to build this program:

  • g++
  • cmake
  • libqt4-dev (Qt 4 support) or qttools5-dev and qttools5-dev-tools (Qt 5 support)
  • libsdl2-dev (SDL 2) or libsdl1.2-dev (SDL 1.2)
  • libxi-dev (optional. Needed to compile with X11 and uinput support)
  • libxtst-dev (optional. Needed to compile with XTest support)
  • libX11-dev (optional when compiled with Qt 5 support)

Building under Linux

In order to build this program, open a terminal and cd into the antimicro directory. Enter the following commands in order to build the program:

cd antimicro
mkdir build && cd build
cmake ..
make
sudo make install

The installation path of antimicro can be customized by specifying the CMAKE_INSTALL_PREFIX variable while running cmake.

cmake -DCMAKE_INSTALL_PREFIX=/usr ..

This will install the antimicro executable to /usr/bin/antimicro. By default, the executable will be installed to /usr/local/bin/antimicro.

The cmake step will use pkg-config to attempt to find any SDL libraries that you have installed. The project is set up to look for a copy of SDL 2 followed by SDL 1.2. This behavior should work fine for most people. You can override this behavior by using the -DUSE_SDL_2 option when you run cmake. Using -DUSE_SDL_2=ON when you run cmake will mean that you want antimicro compiled with SDL 2 support. Using -DUSE_SDL_2=OFF when you run cmake will mean that you want antimicro compiled with SDL 1.2 support.

Here is an example of how to specify that you want antimicro to be compiled with SDL 2 support when you run qmake.

cmake -DUSE_SDL_2=ON ..

Building under Windows

Instructions provided by aybe @ https://github.com/aybe. Modified by Travis Nickles.

  • Download and install CMake: http://www.cmake.org/cmake/resources/software.html

  • You will need Qt with MinGW support: https://www.qt.io/download-open-source/. The current version of Qt that is being used to create builds is 5.6.0.

  • download SDL development package : http://www.libsdl.org/release/SDL2-devel-2.0.3-mingw.tar.gz

  • open the archive and drop the 'SDL2-2.0.3' folder in the 'antimicro' folder

  • open the project (CMakeLists.txt) in Qt Creator The CMake Wizard will appear the first time you open the project in Qt Creator.

  • Choose a Build Location. The recommendation is to create a "build" folder under the root antimicro folder and choose that for the build location.

  • In the Run CMake section, in the Arguments field, please input -DCMAKE_PREFIX_PATH=<Path to MinGW Qt install> -DCMAKE_BUILD_TYPE=Release. Replace "<Path to MinGW Qt install>" with the actual path to your Qt installation. The default path for version Qt 5.6.0 is C:\Qt\Qt5.6.0\5.6\mingw49_32.

  • Choose "MinGW Generator" for the Generator option in the Run CMake section

  • Click the Run CMake button and then click Finish

  • In the main IDE window, open the Build menu and select "Build All" (Ctrl+Shift+B)

  • The application will need SDL2.DLL. A build step has been added to CMakeLists.txt in order to automate the process. Click the "Projects" icon in the sidebar to bring up the "Build Settings" section. Within "Build Steps", click the "Details" button on the Make entry. In the expanded menu, uncheck the "all" checkbox and then check the "copy_sdl_dll" checkbox and run "Build All".

  • At this point, antimicro has been built for Windows and is runnable from Qt Creator. A couple more steps are required in order to make a distributable package.

  • Under "Build Settings", expand the Make menu and check the "install" and "install_dlls" checkboxes.

  • Under the "Build" menu in the main window, select "Run CMake" and add -DCMAKE_INSTALL_PREFIX=<DIR> option and replace <DIR> with the directory that you want to install the application. The default for me is C:\Program Files (x86)\AntiMicro\ although I use a different directory when bundling the Window version for other users.

  • Run "Build All" to have the application and required DLLs installed into the final location that will be ready for distribution.

64 bit build

  • Some additional steps are required in order to compile a 64 bit version of antimicro. The first step is to download a packaged version of Qt and MinGW compiled for 64 bit from the Qt-x64 project @ http://sourceforge.net/projects/qtx64/.

  • You will have to manually create a new Kit in Qt Creator. In the main Qt Creator window, click the "Projects" button in the sidebar to bring up the "Build Settings" page for the project. Click on the "Manage Kits" button near the top of the page. Manually add the 64 bit compiled Qt version under "Qt Versions", add the 64 bit MinGW under "Compilers", and add the 64 bit gdb.exe under "Debuggers".

  • After creating a new kit in Qt Creator, bring up the "Build Settings" page for the project. Hover over the currently selected kit name and click the arrow that appears, hover over "Change Kit" and select the proper 64 bit kit that you created earlier.

  • Perform a clean on the project or delete the build directory that CMake is using. After that, choose the "Run CMake" option under the "Build" menu entry. The arguments that you pass to CMake will have to be changed. You will have to edit -DCMAKE_PREFIX_PATH=<Path to 64 bit MinGW Qt install> variable and have it point to the 64 bit compiled version Qt. Also, make sure to add -DTARGET_ARCH=x86_64 so that CMake will use the proper SDL libraries while building the program and copy the proper Qt and SDL DLLs if you perform an install_dlls.

Building the Windows Installer Package (MSI)

(these instructions have been tested with WiX 3.8)

  • you need to have WiX installed, grab it at http://wixtoolset.org/

  • the building process relies on the WIX environment, it is recommended that you download the installer instead of the binaries as it it will set it up for you

  • if Qt Creator is running while you install or upgrade to a newer version then make sure to restart it as it will either not find that environment variable or fetch the old (incorrect) value from the previous version

  • to build the MSI package, click on the "Projects" icon in the sidebar, click the "Details" button on the make entry, uncheck all other options and check the "buildmsi" box.

  • currently it relies on INSTALL to copy files at the location they are harvested, this might change in the future

Notes about the WXS file and the building process :

  • the WXS file has been generated with WixEdit and manually modified to contain relative paths, it will only work from the 'windows' sub-folder (or any other)

  • WixCop can be run against the WXS file and it should not point out any errors as the WXS has been corrected previously with the -F switch

  • CNDL1113 warning : shortucts are advertised, left as-is as a nice feature about them is that if the program gets corrupted it will be repaired by Windows Installer, by design the shortcuts will not point to antimicro.exe as a regular LNK file

  • LGHT1073 warning : SDL2.DLL does not specify its language in the language column, not a big deal; it could be recompiled but it's pretty much a time waste as it would only prevent this warning

  • all of these warnings have been made silent through the use of command-line switches.

  • built MSI package will be placed in /windows

Testing under Linux

If you are having problems with antimicro detecting a controller or detecting all axes and buttons, you should test the controller outside of antimicro to check if the problem is with antimicro or not. The two endorsed programs for testing gamepads outside of antimicro are sdl-jstest (sdl2-jstest) and evtest. SDL 2 utilizes evdev on Linux so performing testing with older programs that use joydev won't be as helpful since some devices behave a bit differently between the two systems.

https://github.com/Grumbel/sdl-jstest/

Support

In order to obtain support, you can post an issue on the antimicro GitHub page or you can email me at [email protected]. Please include antimicro somewhere in the subject line of the email message or it might be skipped.

https://github.com/AntiMicro/antimicro

Ideas For Future Features

This section is where some of the ideas for future features for this program will be written.

  • Allow buttons to be bound to actions.
  • Use uinput by default and fallback to XTest if necessary. (MOSTLY DONE)
  • Move simulated event generation to a new thread.
  • Allow logging as long as it doesn't cause button lag.
  • Allow notes to be added to a profile in various places.

Along with this, I will put the simple mind map that I am using to write ideas for future development into the repository for this program. The mind map will include extra notes that are not available in this README. Opening the mind map will require the use of the program FreeMind which can be downloaded from http://freemind.sourceforge.net/wiki/index.php/Main_Page.

Translating

New translations as well as updates to current translations are always welcome. Please refer to https://github.com/AntiMicro/antimicro/wiki/Translating-AntiMicro

Shoutout

A big inspiration for this program was the program QJoyPad (http://qjoypad.sourceforge.net/). I was a user of the program for years and it is unfortunate that the program is no longer being maintained. The source code for QJoyPad was an invaluable resource when I made the first version of this program and the UI for this program mostly resembles QJoyPad.

Credits

Original Developer

Travis Nickles [email protected]

Contributors

Zerro Alvein aybe Jeff Backus [email protected] Arthur Moore Anton Tornqvist [email protected] mtdeguzis

Translators

VaGNaroK [email protected] - Brazilian Portuguese zzpxyx - Chinese Belleguic Terence [email protected] - French Leonard Koenig [email protected] - German phob - German tou omiya - Japanese Dmitriy Koshel [email protected] - Russian Jay Alexander Fleming [email protected] - Serbian burunduk - Ukrainian Flavio HR [email protected] - Spanish WAZAAAAA - wazaaaaa00<@>gmail<.>com - Italian

Issues
  • Next Steps

    Next Steps

    This issue is intended for discussion of our next steps.

    opened by jsbackus 52
  • AntiMicro isn't loading the last profile when

    AntiMicro isn't loading the last profile when "Load on Windows Start" is checked.

    More specifically, the problem is that Qt5 (since 5.3) defaults to enabling SSE2 on 32-bit, and this is how the official Windows DLLs are distributed. It can be turned off when Qt5 is being built. A set of the correct Qt5.6 libs built without SSE2 should be all that's needed (it was all that was needed on the older builds too, but I was able to actually track down a set of the right libs; attempting to compile Qt5 with MinGW-w64 back then turned into a nightmare).

    bug 
    opened by qyot27 44
  • antimicro doesn't recognize any gamepad events

    antimicro doesn't recognize any gamepad events

    I'm using Manjaro linux and I have both XBox One and PS4 controllers. Both of them work in games and in jstest. Both of them are recongnized via antimicro. But.. antimicro doesn't see any key presses or axis changes.

    bug 
    opened by Limdel 17
  • AntiMicro > 2.20.2 segfaults on Slackware >= 14.1

    AntiMicro > 2.20.2 segfaults on Slackware >= 14.1

    $ antimicro Segmentation fault

    Last version that works - 2.20.2. I've tried both 2.21 and git current but I'm getting segmentation fault with the same stacktrace:

    └─$ cd /tmp
    └─$ rm -rf antimicro
    └─$ git clone https://github.com/AntiMicro/antimicro
    ...
    └─$ cd antimicro/
    └─$ ls
    AntiMicro\ Future\ Developments.mm  Changelog       Resources.txt             other/  windows/
    BuildOptions.md                     ProfileTips.md  cmake_uninstall.cmake.in  share/
    CMakeLists.txt                      README.md       gpl.txt                   src/
    

    slackware32-14.1 and qt4(-4.8.7):

    export CFLAGS="-O0 -g -ggdb"; export CXXFLAGS="-O0 -g -ggdb"; mkdir -p build; cd build; QT_SELECT=4 cmake ../; make

    └─$ export CFLAGS="-O0 -g -ggdb"; export CXXFLAGS="-O0 -g -ggdb"; mkdir -p build; cd build; QT_SELECT=4 cmake ../; make
    -- The C compiler identification is GNU 4.8.2
    -- The CXX compiler identification is GNU 4.8.2
    -- Check for working C compiler: /usr/bin/cc
    -- Check for working C compiler: /usr/bin/cc -- works
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Check for working CXX compiler: /usr/bin/c++
    -- Check for working CXX compiler: /usr/bin/c++ -- works
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Found PkgConfig: /usr/bin/pkg-config (found version "0.25") 
    -- checking for module 'sdl2'
    --   found sdl2, version 2.0.4
    -- Looking for XOpenDisplay in /usr/lib/libX11.so;/usr/lib/libXext.so
    -- Looking for XOpenDisplay in /usr/lib/libX11.so;/usr/lib/libXext.so - found
    -- Looking for gethostbyname
    -- Looking for gethostbyname - found
    -- Looking for connect
    -- Looking for connect - found
    -- Looking for remove
    -- Looking for remove - found
    -- Looking for shmat
    -- Looking for shmat - found
    -- Looking for IceConnectionNumber in ICE
    -- Looking for IceConnectionNumber in ICE - found
    -- Found X11: /usr/lib/libX11.so
    XTest support allowed for simulating events.
    Compiling with Qt4 support
    -- Looking for Q_WS_X11
    -- Looking for Q_WS_X11 - found
    -- Looking for Q_WS_WIN
    -- Looking for Q_WS_WIN - not found
    -- Looking for Q_WS_QWS
    -- Looking for Q_WS_QWS - not found
    -- Looking for Q_WS_MAC
    -- Looking for Q_WS_MAC - not found
    -- Found Qt4: /usr/bin/qmake (found version "4.8.7") 
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /tmp/antimicro/build
    [  0%] Generating qrc_resources.cxx
    [  0%] Generating src/moc_mainwindow.cxx
    [  0%] Generating src/moc_joybuttonwidget.cxx
    [  0%] Generating src/moc_joystick.cxx
    [  1%] Generating src/moc_joybutton.cxx
    [  1%] Generating src/joybuttontypes/moc_joygradientbutton.cxx
    [  1%] Generating src/moc_inputdaemon.cxx
    [  2%] Generating src/moc_joyaxis.cxx
    
    ...
    
    [ 30%] Generating src/eventhandlers/moc_xtesteventhandler.cxx
    [ 31%] Generating ui_mainwindow.h
    [ 31%] Generating ui_axiseditdialog.h
    /tmp/antimicro/src/axiseditdialog.ui: Warning: Z-order assignment: '' is not a valid widget.
    /tmp/antimicro/src/axiseditdialog.ui: Warning: Z-order assignment: 'verticalSpacer' is not a valid widget.
    /tmp/antimicro/src/axiseditdialog.ui: Warning: Z-order assignment: 'verticalSpacer_2' is not a valid widget.
    [ 31%] Generating ui_advancebuttondialog.h
    /tmp/antimicro/src/advancebuttondialog.ui: Warning: Z-order assignment: 'verticalSpacer_5' is not a valid widget.
    /tmp/antimicro/src/advancebuttondialog.ui: Warning: Z-order assignment: '' is not a valid widget.
    /tmp/antimicro/src/advancebuttondialog.ui: Warning: Z-order assignment: 'verticalSpacer_6' is not a valid widget.
    /tmp/antimicro/src/advancebuttondialog.ui: Warning: Z-order assignment: 'verticalSpacer_2' is not a valid widget.
    /tmp/antimicro/src/advancebuttondialog.ui: Warning: Z-order assignment: '' is not a valid widget.
    /tmp/antimicro/src/advancebuttondialog.ui: Warning: Z-order assignment: 'verticalSpacer' is not a valid widget.
    /tmp/antimicro/src/advancebuttondialog.ui: Warning: Z-order assignment: '' is not a valid widget.
    /tmp/antimicro/src/advancebuttondialog.ui: Warning: Z-order assignment: 'verticalSpacer_4' is not a valid widget.
    /tmp/antimicro/src/advancebuttondialog.ui: Warning: Z-order assignment: '' is not a valid widget.
    [ 31%] Generating ui_aboutdialog.h
    [ 32%] Generating ui_setaxisthrottledialog.h
    [ 32%] Generating ui_buttoneditdialog.h
    [ 32%] Generating ui_joycontrolstickeditdialog.h
    [ 33%] Generating ui_advancestickassignmentdialog.h
    [ 33%] Generating ui_dpadeditdialog.h
    [ 33%] Generating ui_quicksetdialog.h
    [ 33%] Generating ui_mousesettingsdialog.h
    [ 34%] Generating ui_joystickstatuswindow.h
    [ 34%] Generating ui_qkeydisplaydialog.h
    [ 34%] Generating ui_gamecontrollermappingdialog.h
    [ 35%] Generating ui_mainsettingsdialog.h
    [ 35%] Generating ui_setnamesdialog.h
    [ 35%] Generating ui_addeditautoprofiledialog.h
    [ 35%] Generating ui_editalldefaultautoprofiledialog.h
    [ 36%] Generating ui_extraprofilesettingsdialog.h
    [ 36%] Generating ui_capturedwindowinfodialog.h
    /tmp/antimicro/src/capturedwindowinfodialog.ui: Warning: Z-order assignment: '' is not a valid widget.
    Scanning dependencies of target antimicro
    [ 37%] Building CXX object CMakeFiles/antimicro.dir/src/main.cpp.o
    [ 37%] Building CXX object CMakeFiles/antimicro.dir/src/mainwindow.cpp.o
    [ 37%] Building CXX object CMakeFiles/antimicro.dir/src/joybuttonwidget.cpp.o
    [ 37%] Building CXX object CMakeFiles/antimicro.dir/src/joystick.cpp.o
    [ 38%] Building CXX object CMakeFiles/antimicro.dir/src/joybutton.cpp.o
    
    ...
    
    [ 97%] Building CXX object CMakeFiles/antimicro.dir/src/moc_x11extras.cxx.o
    [ 98%] Building CXX object CMakeFiles/antimicro.dir/src/moc_qtx11keymapper.cxx.o
    [ 98%] Building CXX object CMakeFiles/antimicro.dir/src/moc_unixcapturewindowutility.cxx.o
    [ 98%] Building CXX object CMakeFiles/antimicro.dir/src/moc_autoprofilewatcher.cxx.o
    [ 98%] Building CXX object CMakeFiles/antimicro.dir/src/moc_capturedwindowinfodialog.cxx.o
    [100%] Building CXX object CMakeFiles/antimicro.dir/src/eventhandlers/moc_xtesteventhandler.cxx.o
    [100%] Building CXX object CMakeFiles/antimicro.dir/qrc_resources.cxx.o
    Linking CXX executable bin/antimicro
    [100%] Built target antimicro
    
    └─$ cd bin/
    └─$ ./antimicro 
    Segmentation fault
    

    $ gdb ./antimicro

    └─$ gdb ./antimicro
    GNU gdb (GDB) 7.6.1
    Copyright (C) 2013 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
    and "show warranty" for details.
    This GDB was configured as "i486-slackware-linux".
    For bug reporting instructions, please see:
    <http://www.gnu.org/software/gdb/bugs/>...
    Reading symbols from /tmp/antimicro/build/bin/antimicro...done.
    
    (gdb) r
    Starting program: /tmp/antimicro/build/bin/./antimicro 
    warning: Could not load shared library symbols for linux-gate.so.1.
    Do you need "set solib-search-path" or "set sysroot"?
    [Thread debugging using libthread_db enabled]
    Using host libthread_db library "/lib/libthread_db.so.1".
    Traceback (most recent call last):
      File "/usr/share/gdb/auto-load/usr/lib/libgobject-2.0.so.0.3600.4-gdb.py", line 9, in <module>
        from gobject import register
      File "/usr/share/glib-2.0/gdb/gobject.py", line 3, in <module>
        import gdb.backtrace
    ImportError: No module named backtrace
    
    Program received signal SIGSEGV, Segmentation fault.
    0x080c8bc6 in QBasicAtomicInt::ref (this=0x0) at /usr/lib/qt/include/QtCore/qatomic_i386.h:120
    120                  : "memory");
    
    (gdb) thread apply all backtrace
    
    Thread 1 (Thread 0xb67f4980 (LWP 504)):
    #0  0x080c8bc6 in QBasicAtomicInt::ref (this=0x0)
        at /usr/lib/qt/include/QtCore/qatomic_i386.h:120
    #1  0x080c8d12 in QString::QString (this=0x82d32d0 <X11Extras::mouseDeviceName>, other=...)
        at /usr/lib/qt/include/QtCore/qstring.h:726
    #2  0x0820676c in __static_initialization_and_destruction_0 (__initialize_p=1, __priority=65535)
        at /tmp/antimicro/src/x11extras.cpp:32
    #3  0x0820691b in _GLOBAL__sub_I__ZN9X11Extras15mouseDeviceNameE ()
        at /tmp/antimicro/src/x11extras.cpp:864
    #4  0x082299cd in __do_global_ctors_aux ()
    #5  0x080c1c00 in _init ()
    #6  0xb7fdc488 in ?? ()
    Backtrace stopped: previous frame inner to this frame (corrupt stack?)
    

    slackware64-current and qt5(-5.6.1):

    └─$ export CFLAGS="-O0 -g -ggdb"; export CXXFLAGS="-O0 -g -ggdb"; mkdir -p build; cd build; cmake ../; make
    -- The C compiler identification is GNU 5.3.0
    -- The CXX compiler identification is GNU 5.3.0
    -- Check for working C compiler: /usr/bin/cc
    -- Check for working C compiler: /usr/bin/cc -- works
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Detecting C compile features
    -- Detecting C compile features - done
    -- Check for working CXX compiler: /usr/bin/c++
    -- Check for working CXX compiler: /usr/bin/c++ -- works
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    -- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1") 
    -- Checking for module 'sdl2'
    --   Found sdl2, version 2.0.4
    -- Looking for XOpenDisplay in /usr/lib64/libX11.so;/usr/lib64/libXext.so                                    
    -- Looking for XOpenDisplay in /usr/lib64/libX11.so;/usr/lib64/libXext.so - found                            
    -- Looking for gethostbyname                                                                                 
    -- Looking for gethostbyname - found                                                                         
    -- Looking for connect                                                                                       
    -- Looking for connect - found                                                                               
    -- Looking for remove                                                                                        
    -- Looking for remove - found                                                                                
    -- Looking for shmat                                                                                         
    -- Looking for shmat - found                                                                                 
    -- Looking for IceConnectionNumber in ICE                                                                    
    -- Looking for IceConnectionNumber in ICE - found                                                            
    -- Found X11: /usr/lib64/libX11.so                                                                           
    XTest support allowed for simulating events.
    Compiling with Qt5 support
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /tmp/antimicro/build
    Scanning dependencies of target antimicro_automoc
    
    ...
    
    [ 98%] Building CXX object CMakeFiles/antimicro.dir/qrc_resources.cpp.o
    [100%] Building CXX object CMakeFiles/antimicro.dir/antimicro_automoc.cpp.o
    [100%] Linking CXX executable bin/antimicro
    [100%] Built target antimicro
    
    └─$ gdb ./antimicro
    GNU gdb (GDB) 7.11.1
    Copyright (C) 2016 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
    and "show warranty" for details.
    This GDB was configured as "x86_64-slackware-linux".
    Type "show configuration" for configuration details.
    For bug reporting instructions, please see:
    <http://www.gnu.org/software/gdb/bugs/>.
    Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.
    For help, type "help".
    Type "apropos word" to search for commands related to "word"...
    Reading symbols from ./antimicro...done.
    (gdb) r
    Starting program: /tmp/antimicro/build/bin/antimicro 
    [Thread debugging using libthread_db enabled]
    Using host libthread_db library "/lib64/libthread_db.so.1".
    
    Program received signal SIGSEGV, Segmentation fault.
    0x00000000004af56a in QGenericAtomicOps<QBasicAtomicOps<4> >::load<int> (
        [email protected]: <error reading variable>) at /usr/include/qt5/QtCore/qgenericatomic.h:83
    83              return _q_value;
    (gdb) thread apply all backtrace
    
    Thread 1 (Thread 0x7ffff7f9d740 (LWP 5450)):
    #0  0x00000000004af56a in QBasicAtomicInteger<int>::load() const ([email protected]: <error reading variable>)
        at /usr/include/qt5/QtCore/qgenericatomic.h:83
    #1  0x00000000004af56a in QBasicAtomicInteger<int>::load() const (this=0x0)
        at /usr/include/qt5/QtCore/qbasicatomic.h:116
    #2  0x00000000004aebd8 in QtPrivate::RefCount::ref() (this=0x0) at /usr/include/qt5/QtCore/qrefcount.h:49
    #3  0x00000000004aef81 in QString::QString(QString const&) (this=0x8efcc0 <X11Extras::mouseDeviceName>, other=...) at /usr/include/qt5/QtCore/qstring.h:890
    #4  0x0000000000616001 in __static_initialization_and_destruction_0(int, int) (__initialize_p=1, __priority=65535) at /tmp/antimicro/src/x11extras.cpp:32
    #5  0x00000000006161ed in _GLOBAL__sub_I_x11extras.cpp(void) () at /tmp/antimicro/src/x11extras.cpp:864
    #6  0x000000000063b3c6 in __do_global_ctors_aux ()
    #7  0x0000000000000000 in  ()
    (gdb) 
    
    opened by slacknk 16
  • Not available for Ubuntu 17.04

    Not available for Ubuntu 17.04

    opened by Zeioth 16
  • Auto Profiles not working in Steam

    Auto Profiles not working in Steam

    Seems Antimicro can't recognize programs started via Steam as profiles don't change even when set properly in Auto Profiles.

    Maybe because the programs are a sub-process of the parent Steam.exe, and as such, Antimicro can't see them initiating?

    PS. Big thanks to you who are keeping Antimicro alive. Appreciated.

    documentation 
    opened by Ainson 14
  • Controllers being listed twice

    Controllers being listed twice

    Happening at least on Windows version. Suspect it is related to SDL 2.0.4 and fix for issue #4. First step is to back the change out and rebuild with SDL 2.0.3 and retest.

    bug 
    opened by jsbackus 14
  • Not detecting any controllers.

    Not detecting any controllers.

    Hello, I've built antimicro from source on Ubuntu 17.04 and it seems to not be detecting my controller at all. It just says "No Joysticks have been found." and if I select "Update Joysticks" it still doesn't find anything. I am using a bluetooth controller, and I can verify that it works by using jstest on /dev/input/js0 I don't know what to put here in regards to versions of things. If there is anything that you need to see, like a logfile or a version number, let me know. I'm assuming that I've just done something wrong and that there is an easy fix. Thanks in advance!

    opened by kernel-pan-ic 14
  • PPA has to be updated for ubuntu 16.10

    PPA has to be updated for ubuntu 16.10

    https://launchpad.net/~mystic-mirage/+archive/ubuntu/antimicro doesn't support ubuntu 16.10 yet.

    Also please, add to the readme that the library "libsdl2-dev" is required too.

    documentation 
    opened by Zeioth 11
  • Random Switching

    Random Switching

    I made a profile for Jedi Outcast, but whenever I activate the profile then go to steam, AntiMicro automatically switches to a "new" profile, then when I have Outcast opened and switch back to the correct profile, no button inputs are registered.(I also have trouble with auto profiles for the Jedi Knight/Dark Forces games, but those are likely user errors). Am I just doing something wrong?

    opened by rigby333 10
  • Crashes randomly

    Crashes randomly

    I'm using the 8BitDo Pro2 controller on Switch mode and I have a driver installed for the motion control. I'm using the motion control to move the mouse cursor, then AntiMicro suddenly stops. I tried running it from terminal and an error appeared when it crashes: malloc(): unaligned tcache chunk detected Aborted (core dumped) I tried searching at Google for this but found nothing.

    opened by devsydungo 0
  • need the keybinds 'L Trigger' , 'L Trigger + LS Click' and L Trigger + RS Click for xbox controller

    need the keybinds 'L Trigger' , 'L Trigger + LS Click' and L Trigger + RS Click for xbox controller

    Hello,

    I try to play pubg on the PC with a Xbox Controller but the Key bind translation is a bit tricky. My problem is 'Multi binding' a button with the controller. I have to press the Key 'L Trigger' for aim 'L Trigger + LS Click' for left lean 'L Trigger + RS Click' for right lean can I realize this binds with antimicro.

    thx

    opened by floridoesntknow 0
  • How do I assign Throttle?

    How do I assign Throttle?

    I'm trying to play a flight simulator and I want my joystick throttle to control exact speed. The game doesn't recognize the throttle, only the directional axis and the trigger. If I assign the key for increasing or decreasing speed to my throttle axis then the key is always on as long as the throttle is on. This means I have the choice of maximum speed or minimum speed. I was hoping for options like being and a speed percentage if my throttle was at a percentage, such as 45% throttle then 45% speed. By throttle I mean that slider that's usually on joysticks at the bottom.

    opened by Starfiretbt 5
  • Antimicro mapping working on another device that doesn't have antimicro on it

    Antimicro mapping working on another device that doesn't have antimicro on it

    Basically, a year ago I mapped my pro controller to some mapping in Antimicro and it stuck, as in I could not delete the mapping, even after deleting anti micro from my laptop. Its been a year now and the mapping is still working ON ANOTHER DEVICE ( my pc) IF anyone can help that would be appreciated

    TLDR: Antimicro working past the grave

    opened by Striker434 0
  • antimicro keybinding issue

    antimicro keybinding issue

    is there a way to bind my keys to my controller while at the sametime disable whatever action that controllers button does in game. ts super frustrating that when i bind lb to sprint or something and when i sprint i do some other action at the same time .

    opened by ninefingers27 4
  • Is it possible to set a button to execute a key combination, and execute another command when the button is released.

    Is it possible to set a button to execute a key combination, and execute another command when the button is released.

    Dear all, first of all thanks for this project. You've created great software! For some reason, I need to program a key to execute a key combination (Alt+r) and when I release that button execute another key combination (Alt+right). Is this possible? I'd be glad if you could help me with this one. Thank you and best regards!

    opened by dcagritann 2
  • Windows Sticky Keys not working

    Windows Sticky Keys not working

    Hello. I know I'm probably the only person in the world to need this, but for a project I'm working on, I need to be able to ignore rapid/repeated input.

    I use AntiMicro to emulate the ENTER key on my keyboard. With the windows 10 sticky keys options turned on, my physical keyboard ignores repeated strokes, but when I press the button on the gamepad, I can press ENTER as fast as I can.

    Is there a way to have the stickey keys option to work? Or another way to ignore strokes repeated less than 0.5 seconds ?

    opened by Sheraf83 0
  • Changing Selectors while another key is held will press that key again. Can I turn it off?

    Changing Selectors while another key is held will press that key again. Can I turn it off?

    Sorry I don't know if I'll be able to explain my issue, and english is not my first language, so please bear with me :(

    I'm using antimicro and made a profile with 3 sets. One "normal", and 2 other Sets with the "while held" option.

    I'm using a PSX gamepad so I'm basically using L1 and R1 as modifiers (set changers while held)

    The problem is that when I change subsets (either holding or releasing L1 for instance) with another button held (like square for instace) the PC understands that a new input was made. I want to turn this off because it's affecting my gameplay.

    So, to simplify. My gamepad's "Square" button is "X" on my keyboard on Set1 and "Q" on Set2 My gamepad's "L1" button goes to Set2 while held

    When I hold "L1" and press (and hold) "Square", I get the correct input "Q". But If I release "L1" and keep "Square" held, it autimatically inputs "X" and I don't want that.

    I only want inputs to be made when "Square" is pressed, not when held/released, is there a way to do so? I tought the "toggle" option would do that but maybe it doesn't work when Sets are changed.

    So if I go on my notepad and hold "Square" while holding and pressing "L1" I get the following: XQXQXQXQXQXQXQXQ.... I don't want that. It should just input a single "X" and then nothing else until I actually press the "Square" button again...

    I know a simpler solution would be changing "L1" to "shift" and then changing my ingame keybing of "Q" to "Shift+X", but the game unfortunatelly doesn't support that (DFO) so yeah, it's screwing me hehehe

    Can you guys help me? I hope it's not too confusing. Thanks in advance"

    opened by Hardivh 0
  • 8bitdo pro 2 not detected in xinput mode

    8bitdo pro 2 not detected in xinput mode

    I'm using the newer 8 bitdo sn pro 2 and when i set the controller to xinput mode, it is not detected.

    When i switch the controller to dinput , it is detected but some of my buttons, such as the paddles on the underside are not detected.

    opened by 9s78af9s87f9sd8f7 2
Workrave is a program that assists in the recovery and prevention of Repetitive Strain Injury (RSI). The program frequently alerts you to take micro-pauses, rest breaks and restricts you to your daily limit.

Workrave 1.10 Please visit https://workrave.org for more information. Install Windows: download from https://workrave.org/download Ubuntu: install wit

Rob Caelers 1.1k Nov 30, 2021
Type emoji easily! Virtual keyboard-like emoji palette for Linux with lots of features.

Emoji keyboard Virtual keyboard-like emoji palette for Linux. If you find this software useful, please Emoji support on Linux is shaky at best. Modern

Tomas Ravinskas 248 Nov 19, 2021
Source code for Gramps Genealogical program

The Gramps Project ( https://gramps-project.org ) We strive to produce a genealogy program that is both intuitive for hobbyists and feature-complete f

Gramps Project 1.4k Nov 22, 2021
πŸ”₯ Open source static (serverless) status page. Uses hyperfast Go & Hugo, minimal HTML/CSS/JS, customizable, outstanding browser support (IE8+), preloaded CMS, read-only API, badges & more.

Über fast, backwards compatible (IE8+), tiny, and simple status page built with Hugo. Completely free with Netlify. Comes with Netlify CMS, read-only

cState 1.5k Nov 29, 2021
🎧 Kaku is a highly integrated music player supports different online platform like YouTube, SoundCloud, Vimeo and more. Available on Mac, Windows and Linux.

Kaku Kaku is a highly integrated music player that supports different online platforms like YouTube, SoundCloud, Vimeo and more. Available on Windows,

Chia-Lung Chen 1k Nov 19, 2021
NO LONGER MAINTAINED - Project management and time tracking should be easy. SprintApp is simple to setup, simple to use, and elegant - making you look like a hero in your organization.

SprintApp DEPRECATED This project has not seen any community contributions for a year now, and I have not had time for the project, or the need, for a

Matthew Millsaps-Brewer 302 Nov 5, 2021
Personal CRM. Remember everything about your friends, family and business relationships.

Personal Relationship Manager Monica is a great open source personal relationship management system. Introduction Purpose Features Who is it for? What

Monica 15.4k Nov 23, 2021
The Cyber Swiss Army Knife - a web app for encryption, encoding, compression and data analysis

CyberChef The Cyber Swiss Army Knife CyberChef is a simple, intuitive web app for carrying out all manner of "cyber" operations within a web browser.

GCHQ 13.5k Nov 30, 2021
A Hassle-Free Way to Self-Host Google Fonts. Get eot, ttf, svg, woff and woff2 files + CSS snippets

google-webfonts-helper A Hassle-Free Way to Self-Host Google Fonts This service might be handy if you want to directly download all .eot, .woff, .woff

Mario Ranftl 8.8k Dec 3, 2021
A one-of-a-kind resume builder that keeps your privacy in mind. Completely secure, customizable, portable, open-source and free forever. Try it out today!

A free and open source resume builder. Go to App What is this app all about? Reactive Resume is a free and open source resume builder that’s built to

Amruth Pillai 3.2k Nov 19, 2021
Calibre OPDS (and HTML) PHP Server : web-based light alternative to Calibre content server / Calibre2OPDS to serve ebooks (epub, mobi, pdf, ...)

COPS COPS stands for Calibre OPDS (and HTML) Php Server. See : COPS's home for more details. Don't forget to check the Wiki. Why ? In my opinion Calib

SΓ©bastien Lucas 1.2k Nov 27, 2021
Self Hosted Movie, Series and Anime Watch List

Flox Flox is a self hosted Movie, Series and Animes watch list. It's build on top of Laravel and Vue.js and uses The Movie Database API. The rating ba

Viktor Geringer 1k Nov 27, 2021
Open source back-end server for web, mobile and IoT. The backend for busy developers. (self-hosted or hosted)

A scalable, multitenant backend for the cloud. Para is a scalable, multitenant backend server/framework for object persistence and retrieval. It helps

Erudika 414 Nov 22, 2021
Self-hosted VirusTotal / MetaDefender wannabe with API, demo UI and Scanners running in Docker.

MalwareMultiScan Self-hosted VirusTotal / OPSWAT MetaDefender wannabe API for scanning URLs and files by multiple antivirus solutions. IMPORTANT: vers

Volodymyr Smirnov 245 Nov 17, 2021
A Web app to manage your Two-Factor Authentication (2FA) accounts and generate their security codes

2FAuth A web app to manage your Two-Factor Authentication (2FA) accounts and generate their security codes 2FAuth Demo Credentials (login - password)

null 230 Dec 1, 2021
AlertHub is a simple tool written with NodeJS to get alerted from new GitHub and GitLab repository events.

AlertHub _ _ _ _ /_\ | | ___ _ __| |_ /\ /\_ _| |__ //_\\| |/ _ \ '__| __|/ /_/ / | | | '_ \ / _ \ | __/ | |

Arda Kılıçdağı 103 Nov 13, 2021