• This repository has been archived on 07/Mar/2018
  • Stars
    star
    218
  • Rank 181,805 (Top 4 %)
  • Language
    C++
  • License
    BSD 3-Clause "New...
  • Created almost 10 years ago
  • Updated about 9 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

HID-compliant Xbox One Controller driver for OS X

Xbox One Controller driver for Mac OS X

Installation

Obtain the driver from the releases page. Unzip, then run Install.command (right click, then choose 'Open') and follow instructions.

Note: while I obtained an Apple Developer license and certificate, the driver is unsigned and has to be installed with kext dev mode enabled on Yosemite beacause Apple refuses to grant kext signing ability to random FOSS developers (see issue #2). The install script will inform you of this fact and will assist in setting the boot arguments.

Usage

Gamepad pops up as a USB HID device, so it's readily usable by most games.

  • Steam: games supporting controllers will work fine once you set up the controller via Big Picture's controller settings. I've uploaded the settings to Steam's servers so it may be shared with anyone and you may not even need to set it up at some point.
  • OpenEmu: until mappings have been added, simply map the buttons yourself in the settings page.

FAQ

Does this driver support multiple controllers at the same time?

Yes.

How are buttons and axes mapped?

Buttons are mapped in the order the hardware reports them:

  • Button 1: "Pair" (wireless)
  • Button 3: "Menu" (start)
  • Button 4: "Window" (select)
  • Button 5: A
  • Button 6: B
  • Button 7: X
  • Button 8: Y
  • Button 9: D-pad up
  • Button 10: D-pad down
  • Button 11: D-pad left
  • Button 12: D-pad right
  • Button 13: LB (shoulder left)
  • Button 14: RB (shoulder right)
  • Button 15: Left Stick click
  • Button 16: Right Stick click
  • Button 17: Xbox button

Axes are mapped the same as for DualShock 4:

  • Axis 1: LS (left-right)
  • Axis 2: LS (up-down)
  • Axis 3: RS (left-right)
  • Axis 6: RS (up-down)
  • Axis 4: Left Trigger
  • Axis 5: Right Trigger

You can easily view and test all of them using software such as Joystick Show.

Where is button 1 located?

That's the pairing button, on top of the controller, next to the USB port.

Where is button 2 located?

There's none, but it may be used by an accessory or something.

Buttons are all mixed up in my favorite game!

This driver makes no attempt to emulate another gamepad and stays as true as possible to the hardware, therefore buttons are reported in hardware order. Be sure to set up the mappings correctly, or beg your favorite game developer to add button mappings for this controller.

I'm a game developer and want to add support for this controller

If you already have HID gamepad support, chances are it already works! With this driver, it's just a HID Class gamepad, just as any other game controller such as Logitech RumblePad 2, DualShock 3 or DualShock 4. If you want to match the hardware to add a button mapping, look for Vendor ID:Product ID 0x02d1:0x045e and/or Vendor Name/Product Name "Microsoft"/"Xbox One Controller".

The controller keeps blinking/wakes my Xbox One when unplugged

This is by (Microsoft's) design. When the controller is unplugged, it starts looking for a wireless connection. This may wake up a nearby Xbox One console if it has been associated already, or if Kinect's IR sensor is in the controller's line of sight (due to Kinect's smart pairing system). Just keep press the Xbox button pressed until it fades away and the controller shuts down, or simply run without batteries if it's a controller dedicated to your computer.

It's not working wirelessly!

It can't, as Xbox 360 and One controllers all use non-standard radio hardware.

How do I uninstall this?

  • Make sure that no controller is plugged
  • sudo kextunload /Library/Extensions/xbox_one_controller.kext (optional, as this gets unloaded automatically after some time)
  • sudo rm -rf /Library/Extensions/xbox_one_controller.kext
  • sudo nvram boot-args="" (but first make sure there are no other flags with nvram boot-args)
  • reboot

Bugs

Please report all bugs via GitHub issues.

License

3-clause BSD. See attached LICENSE file.

More Repositories

1

ex-mode

Ex mode for Atom
CoffeeScript
169
star
2

matterfront

Mattermost frontend app for OS X, Windows and Linux
JavaScript
154
star
3

apply

Simple zero-dependency tool to provision *nix machines
Shell
50
star
4

trim_patcher

Enable TRIM on Mac OS X for non-Apple SSDs
Python
46
star
5

rsync

rsync algorithm in python
Python
38
star
6

dotfiles

My dot files
Shell
28
star
7

ruby-skyjam

A Google Music client gem
Ruby
21
star
8

unelastic

Disable Safari elastic scrolling a.k.a rubberbanding
JavaScript
14
star
9

linux-console-themes

A collection of color themes for the Linux VTs
Perl
11
star
10

sprockets-less

Better Less integration with Sprockets 2.x
Ruby
11
star
11

bitcoinj-wallet-dump

Dump wallets serialized by bitcoinj
Protocol Buffer
9
star
12

toolbelt

Various unix-ish command line tools
Python
8
star
13

py-skyjam

A simple script that lazily downloads your Google Play music.
Python
8
star
14

normandy

Channels for CSP style Ruby
Ruby
6
star
15

ObsidianClock

A Clock MenuExtra replacement for use with Obsidian Menu Bar
Objective-C
5
star
16

vim-one-colorschemes

One Dark and One Light themes from Atom for Vim
Vim Script
5
star
17

python-dcpu_16

DCPU-16 implementation in Python
Python
5
star
18

go_shell

Tutorial - Write a shell in Go
Go
4
star
19

ld48-29

Beneath the Surface
Go
3
star
20

mattermost-newrelic-integration

Send NewRelic alerts to Mattermost
Go
3
star
21

digitalocean-ext4-to-btrfs

Convert debian 8.0 ext4 root to btrfs
Shell
3
star
22

terminal-one-themes

One themes inspired from Atom for OS X Terminal
3
star
23

coreaudio_example

CoreAudio minimalist example (without Xcode)
C++
3
star
24

rebel

Rebel - Ruby-flavored SQL
Ruby
3
star
25

umodule-js

Minimalist CommonJS module definition and requirement implementation, squarely aimed at browsers
CoffeeScript
2
star
26

ruby-tee

Teeing enumerations into procs
Ruby
2
star
27

vimfiles

My Vim configuration files and modules
Vim Script
2
star
28

fishfiles

Fish configuration
Shell
2
star
29

package-ruby

A namespaced package system for Ruby
Ruby
2
star
30

tilt-pdf

Integrates PDF generation into a Tilt flow
Ruby
1
star
31

http-chunked-progress

Chunked Progress extension to HTTP
1
star
32

awesomerc

Awesome WM config files and custom widgets
Lua
1
star
33

wasp

A Lisp that stings
Python
1
star
34

pingscan

A highly threaded python network discovery utility.
Python
1
star
35

local_tunnel

Client for localtunnel.me
Ruby
1
star
36

he_comes

TO͇̹̺ͅƝ̴ȳ̳ TH̘Ë͖́̉ ͠P̯͍̭O̚​N̐Y̡
1
star
37

zipcode-fr

Query french zip codes and cities
Ruby
1
star
38

zipcode-db

Unified interface to query international zip/postal codes
Ruby
1
star
39

debride-slim

Extends debride to analyze Slim files
Ruby
1
star