Jump to content
    1. Welcome to GTAForums!

    1. GTANet.com

    1. GTA Online

      1. Los Santos Drug Wars
      2. Updates
      3. Find Lobbies & Players
      4. Guides & Strategies
      5. Vehicles
      6. Content Creator
      7. Help & Support
    2. Red Dead Online

      1. Blood Money
      2. Frontier Pursuits
      3. Find Lobbies & Outlaws
      4. Help & Support
    3. Crews

    1. Grand Theft Auto Series

      1. Bugs*
      2. St. Andrews Cathedral
    2. GTA VI

    3. GTA V

      1. Guides & Strategies
      2. Help & Support
    4. GTA IV

      1. The Lost and Damned
      2. The Ballad of Gay Tony
      3. Guides & Strategies
      4. Help & Support
    5. GTA San Andreas

      1. Classic GTA SA
      2. Guides & Strategies
      3. Help & Support
    6. GTA Vice City

      1. Classic GTA VC
      2. Guides & Strategies
      3. Help & Support
    7. GTA III

      1. Classic GTA III
      2. Guides & Strategies
      3. Help & Support
    8. Portable Games

      1. GTA Chinatown Wars
      2. GTA Vice City Stories
      3. GTA Liberty City Stories
    9. Top-Down Games

      1. GTA Advance
      2. GTA 2
      3. GTA
    1. Red Dead Redemption 2

      1. PC
      2. Help & Support
    2. Red Dead Redemption

    1. GTA Mods

      1. GTA V
      2. GTA IV
      3. GTA III, VC & SA
      4. Tutorials
    2. Red Dead Mods

      1. Documentation
    3. Mod Showroom

      1. Scripts & Plugins
      2. Maps
      3. Total Conversions
      4. Vehicles
      5. Textures
      6. Characters
      7. Tools
      8. Other
      9. Workshop
    4. Featured Mods

      1. Design Your Own Mission
      2. OpenIV
      3. GTA: Underground
      4. GTA: Liberty City
      5. GTA: State of Liberty
    1. Rockstar Games

    2. Rockstar Collectors

    1. Off-Topic

      1. General Chat
      2. Gaming
      3. Technology
      4. Movies & TV
      5. Music
      6. Sports
      7. Vehicles
    2. Expression

      1. Graphics / Visual Arts
      2. GFX Requests & Tutorials
      3. Writers' Discussion
      4. Debates & Discussion
    1. Announcements

    2. Support

    3. Suggestions

A way to disable controller but not the keyboard?


Jitnaught
 Share

Recommended Posts

Is there a way to disable the controller but not the keyboard, programmatically? Disabling the device itself or unplugging it will not do.

Link to comment
Share on other sites

Why? You really can't restrain yourself from using your controller instead of the keyboard/mouse?

Edited by jedijosh920
Link to comment
Share on other sites

Why? You really can't restrain yourself from using your controller instead of the keyboard/mouse?

For a mod.

Link to comment
Share on other sites

Do you want to accept none at all? You can disable controls and you can detect if the last input was either a controller or kb+m, or do you need to use both at once?

Link to comment
Share on other sites

Do you want to accept none at all? You can disable controls and you can detect if the last input was either a controller or kb+m, or do you need to use both at once?

I would need to use both at the same time.

Link to comment
Share on other sites

 

Do you want to accept none at all? You can disable controls and you can detect if the last input was either a controller or kb+m, or do you need to use both at once?

I would need to use both at the same time.

 

You can use _GET_LAST_INPUT_METHOD

 

For example, look at the script for Superman's LaserEye Heatvision 1.1

I changed "UsingGamepad" to "UsingKeyboard" so it makes more sense.

bool UsingKeyboard = Function.Call<bool>(Hash._GET_LAST_INPUT_METHOD);if (UsingKeyboard == false)            {                if (Game.IsControlPressed(2, GTA.Control.ScriptPadLeft) && Game.IsControlPressed(2, GTA.Control.FrontendAccept))                {                    if (toggle)                    {                        toggle = false;                        UI.ShowSubtitle("HeatVision OFF");                        Wait(200);                    }                    else if (!toggle)                    {                        toggle = true;                        UI.ShowSubtitle("HeatVision ON");                        Wait(200);                    }                }                if (Game.IsControlPressed(2, GTA.Control.ScriptLT) && toggle)                {                    LaserEyeOn = true;                }                else                {                    LaserEyeOn = false;                }            }

Those statements will only work if the last input came from a controller.

TL;DR you can put the parts of your script that you want to run when only using a keyboard or gamepad under the if UsingKeyboard == true or false condition:

bool UsingKeyboard = Function.Call<bool>(Hash._GET_LAST_INPUT_METHOD);if (UsingKeyboard == true) // if using a keyboard{}if (UsingKeyboard == false) //if using a Gamepad/Controller{}
Edited by stillhere
Link to comment
Share on other sites

Thank you, but I don't think that will work either, sorry.

Edited by LetsPlayOrDy
Link to comment
Share on other sites

Do you want to get something where you can control the player with the keyboard while all controller input is ignored, if they both are simultaneously touched?

Link to comment
Share on other sites

Do you want to get something where you can control the player with the keyboard while all controller input is ignored, if they both are simultaneously touched?

Exactly.

Link to comment
Share on other sites

You can hook XInput and filter controller input the way you want (even inject stuff):

 

https://github.com/alex8b/gta5eyetracking/blob/master/Gta5EyeTracking/HidEmulation/ControllerEmulation.cs

I've never done any hooking before, so I just messed with the code a bit to see if I could get it the way I wanted, but couldn't. Could you possibly give me an example of how I could hook XInput and get it to ignore the gamepad? Thanks!

Link to comment
Share on other sites

I've never done any hooking before, so I just messed with the code a bit to see if I could get it the way I wanted, but couldn't. Could you possibly give me an example of how I could hook XInput and get it to ignore the gamepad? Thanks!

 

 

 

You will need EasyHook library:

https://github.com/EasyHook/EasyHook

 

A class that will set up XInputGetState hook

https://github.com/alex8b/gta5eyetracking/blob/master/Gta5EyeTracking/HidEmulation/ControllerEmulation.cs

 

Here's a usage example (input injection and blocking)

https://github.com/alex8b/gta5eyetracking/blob/master/Gta5EyeTracking/ControlsProcessor.cs

Link to comment
Share on other sites

I looked through ControlsProcessor, and (I think) I see where you inject input, but I don't see where you block it (I don't know what it looks like or how you do it). Again, I'm completely new to this. I'll understand if you don't want to waste your time with me.

Link to comment
Share on other sites

I looked through ControlsProcessor, and (I think) I see where you inject input, but I don't see where you block it (I don't know what it looks like or how you do it). Again, I'm completely new to this. I'll understand if you don't want to waste your time with me.

 

With XInput you can read the state of the controller.

 

These things are the thumb sticks, the triggers and all buttons. The thumb sticks and triggers are read as four properties and the buttons are read as a 16-bit unsigned number. I don't know how SharpDX.XInput works, but for me XInput has all properties as read-only, though the class ControllerEmulation seems to work around that? It seems to be a slightly different implementation that gives the (XInput???) EventArgs a setter.

Link to comment
Share on other sites

Check XInputGetState_Hooked(int dwUserIndex, out State state), ProcessState and OnModifyControllerState

 

You receive entire controller state (original) that you can read from SharpDX.XInput as you normally do.

 

But the game receives only whatever you set as out state in XInputGetState_Hooked which calls ProcessState and OnModifyControllerState to modify it.

 

OnModifyControllerState has some code to disable and inject buttons (conditionally)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • 1 User Currently Viewing
    0 members, 0 Anonymous, 1 Guest

×
×
  • Create New...

Important Information

By using GTAForums.com, you agree to our Terms of Use and Privacy Policy.