Bethesda did not include native controller support for Oblivion (particularly XBox controller support) which has made playing Oblivion with a controller rather difficult. I know there are a substantial number out there like myself who have been itching to get Oblivion working as close as possible as it does for the Xbox 360 version as some people just prefer to play games with a controller. This article addresses some of the issues that I've come across when it comes to using a controller with Oblivion and some hints, tips, and guides on how to play Oblivion with a controller!

Firstly, I'm by no means a pro at understanding DirectX games or how controllers interface with computers. I'm an engineer, but not that kind of engineer. All of these tidbits come from A LOT of tinkering and learning (mostly by trial and error). So if you have any corrections or clarifications and actually know what you're talking about feel free to chime in! But lets dive into the discussion on why playing Oblivion with a controller is such a pain in the arse.

User interface in this game (and Skyrim) is pretty lackluster. Bethesda made a decent UI for consoles but then stuck PC users with the same UI and the inability to do much to alter it to be more PC friendly, or for that matter, even get it to function like the consoles. This is one of the big reasons I'm a fan of DarN's work, as well as the HUD Status Bar mod, as it allows for a lot of HUD customization and tweaking. Unfortunately it does little to help out with controlling said UI. Which leads to the point of how one can mod the UI/gameplay system and alter the control scheme. As far as UI goes, there is no real way to remap UI controls from the shortcuts Bethesda has already put in (i.e. shortcuts to journal systems with F1-F4, Shift-clicking to delete/drop, etc.). With as limited scope as we are provided for shortcut keys it is very useful to know what all is available. For instance, one can alternate containers in the container menu by using Shift+Left/Right arrow key, or close out of the Container UI or similar dialogs using the Tab key. For a list of controls that you may not have known existed but have heavily desired shortcuts for, I highly recommend looking at: UESP Controls

To change how a user interacts with the interface requires poking into the internals of the engine and the code that sits at the interface between the engine and the user. There are a couple mods that accomplish this interaction in various ways, through dynamic scripts, making new custom menus, spells, etc. In the case of this mod, I can adjust controls (within a very limited set) to allow for navigation of the UI using the xml code used to generate the UI itself. These xml files are originally stored in the Oblivion - Misc.bsa archive, and can be extracted using various tools. DarN took the liberty of editing these files to form the more PC-friendly interface for his mod and I have used his edition as well as altered the stock files to allow this mod to exist. Its interesting to note that the developers left remnants of the console code in these xml files, such as can be seen in these lines:


  • <xbuttonb> <ref src="audio_return_button" trait="clicked"/> </xbuttonb>
  • <xbuttony> <ref src="audio_defaults_button" trait="clicked"/> </xbuttony>

These lines reference the Xbox controller buttons ("X" and "Y", respectively) that are used to interact with the audio option menu and simply provide shortcuts for leaving/accepting changes in the menu. Obviously it would be ideal to simply replace xbuttonb/xbuttony with a keyboard reference and that would alleviate pretty much all the hassle! Unfortunately, there is no clear-cut way that I can see to do this. However, the arrow keys on the keyboard coincidentally correspond to <xup>, <xdown>, <xleft>, and <xright> - the directional keys or analog directions used by the Xbox controllers. This gives somewhat of an in for navigating the UI similar to the Xbox Oblivion version and is primarily what this "mod" uses to allow controller UI interaction.

The next topic worth discussing is what little built-in support Oblivion for PC does have for controllers. I've heard that Oblivion can function pretty well with some non-Xbox controller versions however I cannot speak to that as I have never tried. I've played Oblivion (from day 1) on Xbox and on PC using the 360 controller and have just recently started using the Xbox One controller (because I love ze feels). Some interesting things come to light: Windows recognizes (as do most controller emulation softwares) pretty much all of the available button-set of the Xbox controller. Which is good, considering Microsoft->Microsoft. For an in-depth discussion about XInput vs. DInput, most articles you find on Google can give you a good idea how each one has its uses within Windows. I won't get into it here but just know that it would seem Oblivion (even though it has an Xbox console version) does not seem to be very XInput friendly for any version of Windows.
To test this, we can try calibrating and ensuring the Xbox controller is recognized and performing as expected using the stock Windows system. One achieves this by opening the Devices and Printers Control Panel setting in Windows, navigating to their controller, right-clicking, and selecting Game Controller Settings. From there, find the controller you wish to test in the list and select "Properties." A window will open up with a Test tab and you can now test how Windows views input and feedback from your controller. In the case of the Xbox controller we can see that the Left Joystick is mapped to the X- and Y-Axis, and the Right Joystick is mapped to the X- and Y- Rotation. In addition, the Xbox triggers are observed to affect the Z-axis. Various other buttons can also be shown inside the Test tab for your viewing pleasure.
Now that we know Windows detects and reads our controller just fine, lets try to map it using the Oblivion ini. The relevant lines can be found in the [Controls] section and a helpful note even shows us that:

  • ;X = 1, Y = 2, Z = 3, XRot = 4, YRot = 5, ZRot = 6
  • iJoystickMoveFrontBack=2
  • iJoystickMoveLeftRight=1
  • iJoystickLookUpDown=5
  • iJoystickLookLeftRight=4

and if we were lucky, these might be worth a darn when it comes to mapping our Xbox controller. Unfortunately, we're not lucky and while the left joystick can be appropriately mapped to the X- and Y-axis according to our Game Controller Settings test, the X- and Y- rotations will not be detected when Oblivion is running. This means we can't look around which is of course no good!
Thus, keyboard and mouse emulation is about the only option for those wanting to use XInput devices with Oblivion. All hope is not lost though because while we can't use the right joystick to look around, we can still use the left joystick for movement! This leads to some pros and cons in and of itself though, and here's how this setup inevitably works:

  • bUseJoystick must be set to 1 in the Oblivion ini - this allows detection of the X- and Y-axis of the game controller input and analog movement speed
  • The iJoystickMove settings must be mapped correctly
  • One can now utilize the analog movement speed afforded to console players! Yay! But wait!
  • Your player may move at an analog speed, but the direction of movement is still very much keyboard-orientation dependent, i.e. you are only able to go 8 directions of various combinations of the cardinal directions. This is INCREDIBLY clunky, non-intuitive, immersion breaking, and in general, just bad.
  • But wait! That's not all! If you call and set bUseJoystick to 1 now you can also completely ruin and not allow yourself any customization with respect to joystick movement tolerance. So in addition to only being able to move 8 directions, each of those directions is pretty hyper sensitive and you'll more often than not find yourself in the following scenario:

  • Running forward just minding your own business enjoying the lush, green trees of Cyrodiil when all the sudden-SURPRISE YOU'RE GOING DIAGONALLY SIDEWAYS MOTHERFU***!

This is a huge pet peeve of mine and why I typically recommend just leaving bUseJoystick turned off. The other irritating truth about using bUseJoystick with XInput is: try and remap the controls in-game using the Controls option menu. RIP ears and game. Something about the way Oblivion detects your controller input makes changing the mapping of your controller/joystick a real PITA. Admittedly, this might be fixed using a setting in the ini like iXenonMenuStickSpeedThreshold or iXenonMenuStickThreshold but I have not found a safe and meaningful way to adjust this to fix the issue.

So, in the end, what we are left with is pretty much needing to accept that controller emulation programs must be used with XInput and that we must rely on modders to hack in the ability to navigate the UI with keyboard controls in as similar a way as possible to the console version's. Its not ideal, it mostly sucks, but its where we're at. And so this mod and a number of others out there do the best they can to glue together a lack of native controller support in the hope that we that like to kick back with a controller and play our games can finally enjoy a couple hours in Cyrodiil.

P.S. I'll try to post an article or sticky some time in the near future about using controller emulation software and how I like to set mine up to get the most native 360 experience possible.

Article information

Added on

Edited on

Written by

ThinkerTinker

2 comments

  1. speedingpullet1
    speedingpullet1
    • member
    • 0 kudos


     
    In response to post #26917019.


    Spoiler:  
    Show

    ThinkerTinker wrote:
    Bethesda did not include native controller support for Oblivion (particularly XBox controller support) which has made playing Oblivion with a controller rather difficult. I know there are a substantial number out there like myself who have been itching to get Oblivion working as close as possible as it does for the Xbox 360 version as some people just prefer to play games with a controller. This article addresses some of the issues that I've come across when it comes to using a controller with Oblivion and some hints, tips, and guides on how to play Oblivion with a controller!

    Firstly, I'm by no means a pro at understanding DirectX games or how controllers interface with computers. I'm an engineer, but not that kind of engineer. All of these tidbits come from A LOT of tinkering and learning (mostly by trial and error). So if you have any corrections or clarifications and actually know what you're talking about feel free to chime in! But lets dive into the discussion on why playing Oblivion with a controller is such a pain in the arse.

    User interface in this game (and Skyrim) is pretty lackluster. Bethesda made a decent UI for consoles but then stuck PC users with the same UI and the inability to do much to alter it to be more PC friendly, or for that matter, even get it to function like the consoles. This is one of the big reasons I'm a fan of DarN's work, as well as the HUD Status Bar mod, as it allows for a lot of HUD customization and tweaking. Unfortunately it does little to help out with controlling said UI. Which leads to the point of how one can mod the UI/gameplay system and alter the control scheme. As far as UI goes, there is no real way to remap UI controls from the shortcuts Bethesda has already put in (i.e. shortcuts to journal systems with F1-F4, Shift-clicking to delete/drop, etc.). To change how a user interacts with the interface requires poking into the internals of the engine and the code that sits at the interface between the engine and the user. For example, in the case of this mod, I can adjust controls (within a very limited set) to allow for navigation of the UI using the xml code used to generate the UI itself. These xml files are originally stored in the Oblivion - Misc.bsa archive, and can be extracted using various tools. DarN took the liberty of editing these files to form the more PC-friendly interface for his mod and I have used his edition as well as altered the stock files to allow this mod to exist. Its interesting to note that the developers left remnants of the console code in these xml files, such as can be seen in these lines:


    • <xbuttonb> <ref src="audio_return_button" trait="clicked"/> </xbuttonb>
    • <xbuttony> <ref src="audio_defaults_button" trait="clicked"/> </xbuttony>
    These lines reference the Xbox controller buttons ("X" and "Y", respectively) that are used to interact with the audio option menu and simply provide shortcuts leaving/accepting changes in the menu. Obviously it would be ideal to simply replace xbuttonb/xbuttony with a keyboard reference and that would alleviate pretty much all the hassle! Unfortunately, there is no clear-cut way that I can see to do this. However, the arrow keys on the keyboard coincidentally correspond to <xup>, <xdown>, <xleft>, and <xright> - the directional keys or analog directions used by the Xbox controllers. This gives somewhat of an in for navigating the UI similar to the Xbox Oblivion version and is primarily what this "mod" uses to allow controller UI interaction.

    The next topic worth discussing is what little built-in support Oblivion for PC does have for controllers. I've heard that Oblivion can function pretty well with some non-Xbox controller versions however I cannot speak to that as I have never tried. I've played Oblivion (from day 1) on Xbox and on PC using the 360 controller and have just recently started using the Xbox One controller (because I love ze feels). Some interesting things come to light: Windows recognizes (as do most controller emulation softwares) pretty much all of the available button-set of the Xbox controller. Which is good, considering Microsoft->Microsoft. For an in-depth discussion about XInput vs. DInput, most articles you find on Google can give you a good idea how each one has its uses within Windows. I won't get into it hear but just know that it would seem Oblivion (even though it has an Xbox console version) does not seem to be very XInput friendly even for any version of Windows.
    To test this, we can try calibrating and ensuring the Xbox controller is recognized and performing as expected using the stock Windows system. One achieves this by opening the Devices and Printers Control Panel setting in Windows, navigating to their controller, right-clicking, and selecting Game Controller Settings. From there, find the controller you wish to test in the list and select "Properties." A window will open up with a Test tab and you can now test how Windows views input and feedback from your controller. In the case of the Xbox controller we can see that the Left Joystick is mapped to the X- and Y-Axis, and the Right Joystick is mapped to the X- and Y- Rotation. In addition, the Xbox triggers are observed to affect the Z-axis. Various other buttons can also be shown inside the Test tab for your viewing pleasure.
    Now that we know Windows detects and reads our controller just fine, lets try to map it using the Oblivion ini. The relevant lines can be found in the [Controls] section and a helpful note even shows us that:


    • ;X = 1, Y = 2, Z = 3, XRot = 4, YRot = 5, ZRot = 6
    • iJoystickMoveFrontBack=2
    • iJoystickMoveLeftRight=1
    • iJoystickLookUpDown=5
    • iJoystickLookLeftRight=4
    and if we were lucky, these might be worth a darn when it comes to mapping our Xbox controller. Unfortunately, we're not lucky and while the left joystick can be appropriately mapped to the X- and Y-axis according to our Game Controller Settings test, the X- and Y- rotations will not be detected when Oblivion is running. This means we can't look around which is of course no good!
    Thus, keyboard and mouse emulation is about the only option for those wanting to use XInput devices with Oblivion. All hope is not lost though because while we can't use the right joystick to look around, we can still use it for movement! This leads to some pros and cons in and of itself though, and here's it how this setup inevitably works:


    • bUseJoystick must be set to 1 in the Oblivion ini - this allows detection of the X- and Y-axis of the game controller input
    • The iJoystickMove settings must be mapped correctly
    • One can now utilize the analog movement afforded to console players! Yay! But wait!
    • Your player may move at an analog speed, but the direction of movement is still very much keyboard-orientation dependent, i.e. you are only able to go 8 directions of various combinations of the cardinal directions. This is INCREDIBLY clunky, non-intuitive, immersion breaking, and in general, just bad.
    • But wait! That's not all! If you call and set bUseJoystick to 1 now you can also completely ruin and now allow yourself any customization with respect to joystick movement tolerance. So in addition to only being able to move 8 directions, each of those directions is pretty hyper sensitive and you'll more often than not find yourself in the following scenario:

    • Running forward just minding your own business enjoying the lush, green trees of Cyrodiil when all the sudden-NOPE YOU'RE GOING DIAGONALLY SIDEWAYS MOTHERFU***!
    This is a huge pet peeve of mine and why I typically recommend just leaving bUseJoystick turned off. The other irritating truth about using bUseJoystick with XInput is: try and remap the controls in-game using the Controls option menu. RIP ears and game. Something about the way Oblivion detects your controller input makes changing the mapping of your controller/joystick a real PITA. Admittedly, this might be fixed using a setting in the ini like iXenonMenuStickSpeedThreshold or iXenonMenuStickThreshold but I have not found a safe and meaningful way to adjust this to fix the issue.

    So, in the end, what we are left with is pretty much needing to accept that controller emulation programs must be used with XInput and that we must rely on modders to hack in the ability to navigate the UI with keyboard controls in as similar a way as possible to the console version's. Its not ideal, it mostly sucks, but its where we're at. And so this mod and a number of others out there do the best they can to glue together a lack of native controller support in the hope that we that like to kick back with a controller and play our games can finally enjoy a couple hours in Cyrodiil.

    P.S. I'll try to post an article or sticky some time in the near future about using controller emulation software and how I like to set mine up to get the most native 360 experience possible.


    Hey, I know this thread is a bit old and you already mentioned emulation software, but I wanted to post about JoyToKey. If this already exists elsewhere on nexus, my bad.

    download it here: http://joytokey.net/en/

    I use it for Morrowind, Oblivion, Fable, Kerbal Space Program, you name it. You can set each button to emulate a key on the keyboard, or special actions like mouse movement, etc.

    It's annoying and time consuming to set up the controls if you don't know which buttons are named what in JoyToKey (like Left Trigger is called Axis3(>0)), but I have listed below what JoyToKey calls each of my buttons/triggers/analogs on my Xbox360 controller, so you will easily be able to do it in like 5 minutes. I use a regular, wired xbox 360 controller, so this should be the same for everyone else, however, I haven't tested anything on other PCs or with other controllers, so I can't make any guarantees.

    Here it is:
    JoyToKey Xbox Button Names

    a is BUTTON1
    b is BUTTON2
    x is BUTTON3
    y is BUTTON4
    left bumper is BUTTON5
    right bumper is BUTTON6
    back is BUTTON7
    start is BUTTON8
    left analog press is BUTTON9
    right analog press is BUTTON10
    left trigger is AXIS3(>0)
    right trigger is AXIS3(<0)

    to set leftAnalog = Move:
    AXISX(<0)=A
    AXISX(>0)=D
    AXISY(<0)=W
    AXISY(>0)=S

    to set rightAnalog = Look is:
    AXIS4(<0)=MOUSE:HORIZONTAL(-100)
    AXIS4(>0)=MOUSE:HORIZONTAL(100)
    AXIS5(<0)=MOUSE:VERTICAL(100)
    AXIS5(>0)=MOUSE:VERTICAL(-100)

    DPAD is POV1:UP,RIGHT,etc..

    Compare the xbox controls and PC controls for you game and you'll be able to figure out which keyboard key is equivalent to each button.

    I can also upload my Oblivion.cfg file somewhere, if that would be helpful.
    I also have a config file for Morrowind, but it's not as controller friendly as Oblivion in my opinion.
     


     
     
    Thanks for this! 
    However, I have a stupid question... when I started using Joy2key to map my Xbox Buttons to keyboard controls, I got totally stuck at how to enter the left bumper/right bumper part. The box I tried to assign it to only takes one letter, and I have no idea how to tell it to map it to l/r bumpers. 
     
    I know I'm being dense.  I haven't even started modding the bloody game yet, and already I'm stumped on the Xbox config.... 0_o