Keyboard and mouse emulation?

Discuss everything to do with GIMX here
slowdrums
Posts: 58
Joined: Wed Apr 10, 2019 4:03 pm

Keyboard and mouse emulation?

Post by slowdrums »

Hi. I know that gimx can “emulate” xbox, ps controllers but.. if it’s possible to emulate keyboard and mouse? :mrgreen: I’ll try to explain what I’m trying to do. Modern warfare have a support for keyboard and mouse I know but if its possible to connect keyboard and mouse to PC then gimx the console so I could use macros, profiles etc? Basically I want xbox to recognize it as a keyboard and mouse but with ability to use my own profiles, macros etc. I’m 90% sure i won’t be able to achieve this with gimx but well I had to ask :geek:
If I could save macros on my Logitech mouse g502hero in onboard memory that would be great but unfortunately macros works only with GHUB running and of course I can’t run ghub software on Xbox so I’m trying to find some other solutions. Thanks!
User avatar
GoDlike
Posts: 1318
Joined: Thu Apr 28, 2016 12:47 pm
Location: Poland

Re: Keyboard and mouse emulation?

Post by GoDlike »

I have working keyboard emulation but It never made it to the main branch and was never extensively tested. I am using laptop screen as display for PS5 through HDMI In port and I needed this kind of emulation so I could use laptop keyboard to play instead of connecting external keyboard to PS5.

I can send you the files if you are interested. Keep in mind that there's no mouse support in this emulation. I connect mouse directly to PS5.

Please note that GIMX has Macro capability. I'm often using it to complete tedious trophies on PS5.
My hardware: PS3 Slim CFW 4.80 | PS4 Pro 500 Million LE | PS5 | Xbox Series X
Steam: Godlike_RU | PSN: GoDlike_RU | XBL: GoDlike
slowdrums
Posts: 58
Joined: Wed Apr 10, 2019 4:03 pm

Re: Keyboard and mouse emulation?

Post by slowdrums »

Well actually I would prefer to find something to emulate mouse. Maybe there is a some kind of software that could help me do this? Any idea? In perfect world I would like to test raw accel on my Xbox :p. I would be grateful for any suggestions.
slowdrums
Posts: 58
Joined: Wed Apr 10, 2019 4:03 pm

Re: Keyboard and mouse emulation?

Post by slowdrums »

I’ve been smashing using gimx in warzone. I’ve been using it almost from the beginning of warzone. I’ve decided to switch and play natively as mouse and keyboard player. I’m still good but I’m struggling to find perfect sensitivity. The problem is that because I played a lot on gimx that emulates controller I have some habits. On controller movement is a little bit different. I used to it. And now I’m trying to recreate this feeling. I tried mouse acceleration in mouse settings in warzone but it’s not the same. I want acceleration for movement. Not for ADS. I’ve heard that on pc there is something like raw accel and I think it should help me a lot but for obvious reasons I can’t use it on Xbox. So in short I need to connect mouse to PC and PC to Xbox but it has to detect it as mouse. Not sure if it’s possible though
User avatar
GoDlike
Posts: 1318
Joined: Thu Apr 28, 2016 12:47 pm
Location: Poland

Re: Keyboard and mouse emulation?

Post by GoDlike »

It's possible to make it but we don't have it working for now and as it's very niche feature we probably won't have time to make it. If you have programming knowledge you can try doing it yourself.
My hardware: PS3 Slim CFW 4.80 | PS4 Pro 500 Million LE | PS5 | Xbox Series X
Steam: Godlike_RU | PSN: GoDlike_RU | XBL: GoDlike
slowdrums
Posts: 58
Joined: Wed Apr 10, 2019 4:03 pm

Re: Keyboard and mouse emulation?

Post by slowdrums »

Hey. Hm but i guess for this kind of emulation I would still need to use gimx device for example right?
So what you meant that with some programming skills I could add this function to gimx software? Or maybe it could be done without any additional device only via software? Just usb cable from pc to an Xbox? Sorry i know this is old thread :p
slowdrums
Posts: 58
Joined: Wed Apr 10, 2019 4:03 pm

Re: Keyboard and mouse emulation?

Post by slowdrums »

If it’s not a problem you can send me that keyboard emulation. Maybe with some efforts it’s possible to change it to work with a mouse instead of keyboard.
User avatar
GoDlike
Posts: 1318
Joined: Thu Apr 28, 2016 12:47 pm
Location: Poland

Re: Keyboard and mouse emulation?

Post by GoDlike »

It cannot be done with just software. You need GIMX to introduce itself as mouse and keyboard device to the console.

gimx - https://github.com/GodlikeRU/GIMX/tree/EMUKEYBOARD
gimx-firmwares - https://github.com/GodlikeRU/GIMX-firmwares

This works on PS4, PS5, Xbox One, Xbox Series X and also on any PC. I'm constantly using it to play War Thunder and Call of Duty Warzone.

It uses LUFA's Arduino library to present itself as Keyboard. Check LUFA documentation to get wider list of devices it can present itself as.

Config:

Code: Select all

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <controller id="1" dpi="2800" type="Keyboard">
    <configuration id="1">
      <trigger type="" id="" name="" button_id="" switch_back="no" delay="0"/>
      <mouse_options_list>
        <mouse name="" id="0" mode="Aiming" buffer_size="1" filter="0.00"/>
      </mouse_options_list>
      <intensity_list/>
      <button_map>
        <button id="abs_axis_1" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="q"/>
        </button>
        <button id="abs_axis_2" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="w"/>
        </button>
        <button id="abs_axis_3" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="e"/>
        </button>
        <button id="abs_axis_4" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="r"/>
        </button>
        <button id="abs_axis_5" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="t"/>
        </button>
        <button id="abs_axis_6" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="y"/>
        </button>
        <button id="abs_axis_7" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="u"/>
        </button>
        <button id="abs_axis_8" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="i"/>
        </button>
        <button id="abs_axis_9" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="o"/>
        </button>
        <button id="abs_axis_10" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="p"/>
        </button>
        <button id="abs_axis_11" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="a"/>
        </button>
        <button id="abs_axis_12" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="s"/>
        </button>
        <button id="abs_axis_13" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="d"/>
        </button>
        <button id="abs_axis_14" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="f"/>
        </button>
        <button id="abs_axis_15" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="g"/>
        </button>
        <button id="abs_axis_16" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="h"/>
        </button>
        <button id="abs_axis_17" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="j"/>
        </button>
        <button id="abs_axis_18" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="k"/>
        </button>
        <button id="abs_axis_19" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="l"/>
        </button>
        <button id="abs_axis_20" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="z"/>
        </button>
        <button id="abs_axis_21" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="x"/>
        </button>
        <button id="abs_axis_22" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="c"/>
        </button>
        <button id="abs_axis_23" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="v"/>
        </button>
        <button id="abs_axis_24" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="b"/>
        </button>
        <button id="abs_axis_25" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="n"/>
        </button>
        <button id="abs_axis_26" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="m"/>
        </button>
        <button id="abs_axis_27" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="BACKSPACE"/>
        </button>
        <button id="abs_axis_28" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="RETURN"/>
        </button>
        <button id="abs_axis_29" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="SPACE"/>
        </button>
        <button id="abs_axis_30" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="1"/>
        </button>
        <button id="abs_axis_31" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="2"/>
        </button>
        <button id="abs_axis_32" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="3"/>
        </button>
        <button id="abs_axis_33" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="4"/>
        </button>
        <button id="abs_axis_34" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="5"/>
        </button>
        <button id="abs_axis_35" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="6"/>
        </button>
        <button id="abs_axis_36" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="7"/>
        </button>
        <button id="abs_axis_37" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="8"/>
        </button>
        <button id="abs_axis_38" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="9"/>
        </button>
        <button id="abs_axis_39" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="0"/>
        </button>
        <button id="abs_axis_40" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="LALT"/>
        </button>
        <button id="abs_axis_41" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="RALT"/>
        </button>
        <button id="abs_axis_42" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="LSHIFT"/>
        </button>
        <button id="abs_axis_43" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="RSHIFT"/>
        </button>
        <button id="abs_axis_44" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="LCTRL"/>
        </button>
        <button id="abs_axis_45" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="RCTRL"/>
        </button>
        <button id="abs_axis_46" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="CAPSLOCK"/>
        </button>
        <button id="abs_axis_47" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="TAB"/>
        </button>
        <button id="abs_axis_48" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="BACKQUOTE"/>
        </button>
        <button id="abs_axis_49" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="ESCAPE"/>
        </button>
        <button id="abs_axis_50" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="F1"/>
        </button>
        <button id="abs_axis_51" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="F2"/>
        </button>
        <button id="abs_axis_52" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="F3"/>
        </button>
        <button id="abs_axis_53" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="F4"/>
        </button>
        <button id="abs_axis_54" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="F5"/>
        </button>
        <button id="abs_axis_55" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="F6"/>
        </button>
        <button id="abs_axis_56" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="F7"/>
        </button>
        <button id="abs_axis_57" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="F8"/>
        </button>
        <button id="abs_axis_58" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="F9"/>
        </button>
        <button id="abs_axis_59" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="F10"/>
        </button>
        <button id="abs_axis_60" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="F11"/>
        </button>
        <button id="abs_axis_61" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="F12"/>
        </button>
        <button id="abs_axis_62" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="PRINT"/>
        </button>
        <button id="abs_axis_63" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="PAUSE"/>
        </button>
        <button id="abs_axis_65" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="EQUALS"/>
        </button>
        <button id="abs_axis_66" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="MINUS"/>
        </button>
        <button id="abs_axis_67" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="LEFTBRACKET"/>
        </button>
        <button id="abs_axis_68" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="RIGHTBRACKET"/>
        </button>
        <button id="abs_axis_69" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="BACKSLASH"/>
        </button>
        <button id="abs_axis_70" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="SEMICOLON"/>
        </button>
        <button id="abs_axis_71" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="QUOTE"/>
        </button>
        <button id="abs_axis_72" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="COMMA"/>
        </button>
        <button id="abs_axis_73" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="PERIOD"/>
        </button>
        <button id="abs_axis_74" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="SLASH"/>
        </button>
        <button id="abs_axis_75" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="LEFT"/>
        </button>
        <button id="abs_axis_76" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="RIGHT"/>
        </button>
        <button id="abs_axis_77" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="UP"/>
        </button>
        <button id="abs_axis_78" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="DOWN"/>
        </button>
        <button id="abs_axis_74" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="KP6"/>
        </button>
        <button id="abs_axis_79" label="">
          <device type="keyboard" id="0" name=""/>
          <event type="button" id="HOME"/>
        </button>
      </button_map>
      <axis_map/>
      <joystick_corrections_list/>
    </configuration>
  </controller>
</root>
My hardware: PS3 Slim CFW 4.80 | PS4 Pro 500 Million LE | PS5 | Xbox Series X
Steam: Godlike_RU | PSN: GoDlike_RU | XBL: GoDlike
slowdrums
Posts: 58
Joined: Wed Apr 10, 2019 4:03 pm

Re: Keyboard and mouse emulation?

Post by slowdrums »

Thanks brother. Just wonder how much it would cost me if I would like you to write this custom functionality to gimx? :D
User avatar
GoDlike
Posts: 1318
Joined: Thu Apr 28, 2016 12:47 pm
Location: Poland

Re: Keyboard and mouse emulation?

Post by GoDlike »

I do not have a clue, but it's C and C++ code and programmers who know these aren't cheap. If you have programming knowledge you could modify my code to make adapter present itself as other HID device with both, mouse and keyboard capabilities.
My hardware: PS3 Slim CFW 4.80 | PS4 Pro 500 Million LE | PS5 | Xbox Series X
Steam: Godlike_RU | PSN: GoDlike_RU | XBL: GoDlike
Post Reply