[UPDATED] PS4 Controller Exclusive Mode Windows 10


With Windows 10 Update 10532 it looks like the trick to kill explorer to get exclusive mode is no longer required.  There many be some things that required being disabled.  However I get exclusive mode with that new build of Windows 10 without using the trick below.  So follow this guide merely to get PS4 running, skip the section on killing explorer.

This is a matter of opinion but I personally believe the PS4 controller is one of the best controllers to come out since the PS2 controller.  I have always found the feel of the controller to be superior to that of the XB360.  The XB1 controller came a long ways.  I play a lot of tight platformers and the XB360 controllers awful DPad basically soured me for life.

Getting the PS4 controller to work on Windows 10 is rather simple but getting it into Exclusive Mode (so it works as Player 1 in most games) is rather tricky in a subtle way.

Follow this guide to get everything up and running.

Connecting PS4 Controller

Here we will cover the steps to get the controller connected to windows.  This will not make the controller usable quite yet.

  • Go to your Bluetooth Devices, press the Windows Key and type bluetooth, should be the first hit.


  • Put your PS4 Controller into discovery mode by pressing and holding the Playstation button and the Share button until the LED blinks rapidly.


  • Click the controller and select Pair.


  • It should be connected now.

Input Mapper Exclusive Mode

To make the controller usable we will use a program called InputMapper.  The problem with InputMapper on Windows 10 is that Exclusive mode does not work.  Without exclusive mode InputMapper registers the PS4 controller as a second controller.  It then mutes the input on the first controller which is actually the same controller.  So this is fine for many games but some games will default to always using the first connected controller.  Games that do this will not work without exclusive mode.  Rocket League is a good example of a game not working without exclusive mode.

To solve this issue we simply create a script that kills explorer for us.  This seems to release whatever in Windows 10 is preventing exclusive mode from starting.  So we will explorer, bind our controller with InputMapper in exclusive mode and then restart explorer.  We will also need to kill many programs before we do this.

  • Download InputMapper
  • Install InputMapper
  • Download this file or create a new basic text file on your desktop using Notepad (or anywhere) and call it explorer_kill.bat
  • Edit this with Notepad or any basic text editor, add the following:
@echo off
taskkill /IM explorer.exe /f
echo Press any key after connecting your controller.
start explorer.exe
  • Now we will need to kill some programs:
    • Steam
    • Battle.Net
    • GeForce Experience
    • (likely some others, some are holding the controller from getting exclusive mode)
  • Make sure PS4 controller is on or connected (solid blue LED).
  • Open InputMapper.
  • Run the file we just created, your desktop will disappear but InputMapper will remain.


  • Go to InputMapper
  • Press the Playstation button on your controller, wait for it to connect (sometimes takes a few tries).
  • InputMapper should say “in exclusive mode”.


  • Go back to the command prompt which was opened when you launched the script and press any key.


This is a fairly fool proof process.  If it doesn’t get exclusive mode then just close it all down and repeat the process.

  • Close InputMapper.
  • Make sure the controller disconnects.
  • Let explorer come back (press any key in the command prompt window our script opened).
  • Repeat the process.


If anyone discovers example what program in Windows 10 is causing the exclusive mode lock out please comment.



C++ Tiled Tmx Parser

I had a need for a lightweight quick and down to business tmx parser.

For those unfamiliar TMX is the file format used by Tiled.  Tiled is a map editor for tile maps.

The parser at the moment required C++11x but only for one small bit of code which could easily be removed.  The parser is mostly a C library in its usage.  It returns simply an error code and a struct you allocated the memory for containing the entirety of the tmx file.

GitHub Source: libtmx-parser

IOS Launch Image For Landscape Only App for iPhone’s

Nearing the end of an app development cycle it came time to add a splash screen or in IOS SDK terms the LaunchImage.  The app in question is to be locked in landscape mode as per request of the client.  There is no way to specify a launch image for phones in landscape mode.  If you are using Images.xcassets then you have probably already noticed this.

The following is a very quick and simple way to fix this.

  1. To start, you will need to design your launch image using portrait dimensions.  This is very simple, just rotate the image you want to use as a launch image by 90 degrees.
  2. There are several ways to specify your Launch Image and this is not the subject of this document.  For me I used Images.xcassets to setup the Launch Images.  Take your rotated landscape ready portrait dimensions image and place it into the Images.xcassets appropriately.
  3. Re-Enable portrait mode in your Application Settings.  You can do this via YOURAPP-Info.plist or in the project settings.  Make sure if you do it within YOURAPP-Info.plist that portrait mode is first.
  4. Add the following code snippet to AppDelegate.m (change that return value appropriately for your app):

    -(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window

    return UIInterfaceOrientationMaskLandscapeRight;



  5. Everything is working now however you will notice that the status bar appears in a funny position.  Add the following the YOURAPP-Info.plist:
           “Status bar is initially hidden” -> YES

There you have it.  Landscape mode locked application with a clean launch image.



Installing VMware 9 On Ubuntu 13.04 With Kernel 3.8

If you are a VMware user and an Ubuntu user you might have encountered an issue installing vmware’s kernel modules.  Basically as linux kernel development has accelerated over the last year or two, VMware did not keep up.

Skip to end of article for a script to run.

This is done on Ubuntu 13.04 running kernel 3.8.0-26-generic at the time of writing this article.

When you run VMware Workstation for the first time on a new machine after installation you will be presented with a dialogue asking you find the kernel headers.  The following command fixes this issue.  Either Ubuntu or VMware is not following the norm on where to store version.h:

sudo apt-get install build-essential linux-headers-$(uname -r) open-vm-dkms
sudo ln -s /usr/src/linux-headers-$(uname -r)/include/generated/uapi/linux/version.h /usr/src/linux-headers-$(uname -r)/include/linux/version.h

The next command will install the modules.  You can just re-run VMware but doing this from the command line lets you examine any errors:

sudo vmware-modconfig --console --install-all

There is a good chance this will end with an error.  Previous versions of Vmware and the linux kernel this was about all you had to do.  A user on askubuntu posted a nice script that handles the patch required on vmci:


Simply run that script as root all should be well.  If you are nervous of running a random script give it a quick examine, it is pretty simple.