Page 1 of 2

Keyboard and mouse emulation?

Posted: Fri Aug 27, 2021 11:20 pm
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!

Re: Keyboard and mouse emulation?

Posted: Sat Aug 28, 2021 9:02 am
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.

Re: Keyboard and mouse emulation?

Posted: Sat Aug 28, 2021 2:16 pm
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.

Re: Keyboard and mouse emulation?

Posted: Sat Aug 28, 2021 3:02 pm
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

Re: Keyboard and mouse emulation?

Posted: Sun Aug 29, 2021 6:12 am
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.

Re: Keyboard and mouse emulation?

Posted: Sat Nov 13, 2021 6:43 pm
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

Re: Keyboard and mouse emulation?

Posted: Sat Nov 13, 2021 7:14 pm
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.

Re: Keyboard and mouse emulation?

Posted: Sun Nov 14, 2021 10:30 am
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>

Re: Keyboard and mouse emulation?

Posted: Sun Nov 14, 2021 9:00 pm
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

Re: Keyboard and mouse emulation?

Posted: Mon Nov 15, 2021 5:10 pm
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.