Giter Site home page Giter Site logo

hhd's People

Contributors

aarron-lee avatar antheas avatar appsforartists avatar corando98 avatar honjow avatar justinweiss avatar kylegospo avatar nicknamenamenick avatar victor-borges avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

hhd's Issues

[ROG Ally] Cater for triggers that don't register the max value when fully pressed

It's a common issue that the shoulder trigger buttons don't work correctly. That is usually fixed through Armory Crate by setting a max percentage on each triggers.

How easy would it be to make this on option here? Also I don't mind forking and patching and building from source - it get's pretty annoying with racing games for example.

For reference my right trigger when fully pressed goes to around 28000 instead of 32767.
Example - https://www.youtube.com/watch?v=SIXmsfNa0PY

[Question] Does hhd-ui work only in gamescope with wp_presentation?

I noticed this line in logs:

Could not find overlay displays, gamescope is not active.

It explains why hdd-ui doesn't launch in kwin when I press the hotkey, but the hotkey doesn't work even in games launched with gamescope. Is it because it requires wp_presentation? Plasma 5 doesn't support it.

Your Wayland compositor does NOT support wp_presentation/presentation-time which is required for VK_KHR_present_wait and VK_KHR_present_id.

`readme.md` link to `github.com/hhd-dev/bmi260` is parsed wrongly by github.com. Maybe use complete URL with protocol?

The file readme.md has a link to the URL github.com/hhd-dev/bmi260:

To use the gyro, you will need a [dkms package](github.com/hhd-dev/bmi260)
for the Bosch 260 IMU Driver.

The URL https://github.com/hhd-dev/bmi260 (note that https:// is prepended by me or my browser, it does not come from your URL) works, but when viewing the readme.md in github.com that URL is converted to https://github.com/hhd-dev/hhd/blob/master/github.com/hhd-dev/bmi260 which leads to a non-existing page (HTTP error "404 not found").

I think you should either prefix https:// to or remove github.com from your URL.

Regards!

[Feature Request]: Add warning to the Decky Update Script and/or disable it for package manager installs

I just played around with hhd-ui and I found a button "update Decky" there.

It apparently did nothing, but on the terminal where hhd runs it is printed:

Command 'curl -L https://github.com/hhd-dev/hhd-decky/raw/main/update.sh | HOME="/root/" sh' returned non-zero exit status 255.

So it actually invokes remote file download and execution as the local user. Without any warning. Without any looking-at.

This is a major security issue:

  • There is no guarantee that the retrieved file is what it is intended (malicious third party could intercept).
  • It is prone to errors by mistake.

Also, it maybe does stuff on a system even when there is no "Decky" or when the decky plugin is installed via the package manager.

Please remove the option, or move it to an advanced section with an explicit explanation of whait does in the background and a big warning.

Regards!

Controller Emulation breaks after sleep on Aokzoe A1

I recently installed BazziteOS with HHD-decky

My device is Aokzoe A1

Upon restart HHD controller emulation works (e.g. dualsense) which makes the home and quick menu button work. However upon sleep and wake up of the device, the controller reverts to Xbox 360 controller that doesn't have support of the 2 buttons.

Any help would be very much appreciated

[Feature Request] Auto-disable gyro when it is not used

On GPD Win Max 2 (2003) setting Motion HZ to 1600 uses whopping 12% of one cpu core. Setting HZ to 50 reduces load to 2%, but it's still a lot.

Example output from systemd:

     Loaded: loaded (/etc/systemd/system/[email protected]; enabled; preset: disabled)
     Active: active (running) since Thu 2024-05-02 23:01:23 UTC; 31s ago
   Main PID: 12976 (hhd)
      Tasks: 4 (limit: 57414)
     Memory: 38.0M
        CPU: 4.297s

In 30 seconds since the daemon launch, it already used 4 seconds of CPU time.

I don't know how it's implemented in HHD, but can you do something about this? Just a couple of ideas out of the top of my head:

  1. Rewrite polling in a lower-level language like C/Rust?
  2. Pause polling when gamepad isn't used. For example, poll just once in 2-3 seconds if standard xbox buttons haven't been used in a minute?

HHD not running on vanilla Fedora Workstation 39 install on Lenovo Legion Go

I have install a fresh, vanilla version of Fedora 39 Workstation Edition on my Lenovo Legion Go.

I have installed the acpi_call dkms package, then I installed hhd, adjuster and hhd-ui with the provided commands:
`# Fedora
sudo dnf copr enable hhd-dev/hhd
sudo dnf install hhd adjustor hhd-ui

sudo systemctl enable hhd@$(whoami)`

Unfortunately hhd does not run correctly.
The output of sudo systemctl status hhd@$(whoami) gave
Main PID: 13944 (code=exited, status=1/FAILURE)

When I ran the command 'hhd' from the terminal, it outputted:
` _______ _______ ______
/ / ╲╲/ / ╲╲_/ ╲╲
/ // // //
/ / / /
╲___//╲/___/╲________/

[22:50] MAIN INFO Handheld Daemon starting...
MAIN INFO Running under an unknown Linux distro.
MAIN WARNING Plugin blacklist not found, using default (empty).
MAIN INFO Running autodetection...
╭─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮
│ /usr/bin/hhd:8 in │
│ │
│ 5 from hhd.main import main │
│ 6 if name == "main": │
│ 7 │ sys.argv[0] = re.sub(r"(-script.pyw|.exe)?$", "", sys.argv[0]) │
│ ❱ 8 │ sys.exit(main()) │
│ 9 │
│ │
│ /usr/lib/python3.12/site-packages/hhd/main.py:193 in main │
│ │
│ 190 │ │ │ if name in blacklist: │
│ 191 │ │ │ │ logger.info(f"Skipping blacklisted provider '{name}'.") │
│ 192 │ │ │ else: │
│ ❱ 193 │ │ │ │ detectors[autodetect.name] = autodetect.resolve() │
│ 194 │ │ │
│ 195 │ │ # Save new blacklist file │
│ 196 │ │ save_blacklist_yaml(blacklist_fn, detector_names, blacklist) │
│ │
│ /usr/lib/python3.12/site-packages/pkg_resources/init.py:2523 in resolve │
│ │
│ 2520 │ │ """ │
│ 2521 │ │ Resolve the entry point from its module and attrs. │
│ 2522 │ │ """ │
│ ❱ 2523 │ │ module = import(self.module_name, fromlist=['name'], level=0) │
│ 2524 │ │ try: │
│ 2525 │ │ │ return functools.reduce(getattr, self.attrs, module) │
│ 2526 │ │ except AttributeError as exc: │
│ │
│ /usr/lib/python3.12/site-packages/hhd/device/gpd/win/init.py:15 in │
│ │
│ 12 │ get_gyro_config, │
│ 13 ) │
│ 14 from hhd.plugins.settings import HHDSettings │
│ ❱ 15 from hhd.controller.lib.hid import enumerate_unique │
│ 16 │
│ 17 from .const import GPD_WIN_MAX_2_2023_MAPPINGS, GPD_WIN_DEFAULT_MAPPINGS │
│ 18 │
│ │
│ /usr/lib/python3.12/site-packages/hhd/controller/lib/hid.py:34 in │
│ │
│ 31 │ error = "Unable to load any of the following libraries:{}".format( │
│ 32 │ │ " ".join(library_paths) │
│ 33 │ ) │
│ ❱ 34 │ raise ImportError(error) │
│ 35 │
│ 36 │
│ 37 hidapi.hid_init() │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
ImportError: Unable to load any of the following libraries:libhidapi-hidraw.so libhidapi-hidraw.so.0
`

Could anyone please advise and assist me on how to get this up and running on Fedora 39 Workstation Edition?

[NixOS] README might be slightly wrong on the process to get HHD working on NixOS?

In the README it mentioned adding services.handheld=daemon.enable = true; to your configuration.nix, however, upon doing nixos-rebuiid, the following error is thrown out:

building the system configuration...
error:
       … while calling the 'head' builtin

         at /nix/store/r1g09wfd968168f6drdl7agfaf3msik4-source/lib/attrsets.nix:1541:11:

         1540|         || pred here (elemAt values 1) (head values) then
         1541|           head values
             |           ^
         1542|         else

       … while evaluating the attribute 'value'

         at /nix/store/r1g09wfd968168f6drdl7agfaf3msik4-source/lib/modules.nix:809:9:

          808|     in warnDeprecation opt //
          809|       { value = builtins.addErrorContext "while evaluating the option `${showOption loc}':" value;
             |         ^
          810|         inherit (res.defsFinal') highestPrio;

       (stack trace truncated; use '--show-trace' to show the full trace)

       error: The option `services.handheld-daemon.user' is used but not defined.

I decided to add services.handheld-daemon.user = "USERNAME"; per the error's suggestion and I was able to get a successful rebuild, alongside being able to connect to my HHD service through https://hhd.dev as well.

Is this just an edge case of my install being started out from 23.11 then upgraded to unstable, or is the instruction outdated?
Let me know if you need more info.
-Neon

GPD Win Max 2 (2023), board name `G1619-04`, not supported.

This is a follow up from this post in issue #29:


Your device is supported by the latest version, make sure you are using 1.0.4.

I use latest git checkout, currently at commit c980f91. git describe --tags says v1.1.4-16-gc980f91. (The release installation from the hhd AUR package did not start up at all, so I made a hhd-git package and used this.)

When I start hhd as root, it prints:

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Running as root without a specified user (`--user`). Configs will be placed at `/root/.config`.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   _______   _______    ______  
  /    /  ╲╲/    /  ╲╲_/      ╲╲
 /        //        //        //
/         /         /         / 
╲___/____/╲___/____/╲________/  

[14:15] MAIN  INFO     Handheld Daemon starting...                                                                                                                                                   
        MAIN  INFO     Running autodetection...                                                                                                                                                      
        MAIN  INFO     Found plugin providers: ayaneo, gpd_win, legion_go, powerbuttond, rog_ally                                                                                                    
        MAIN  INFO     Loaded the following plugins:                                                                                                                                                 
                         - powerbuttond: powerbuttond@'uknown'                                                                                                                                       
        PBTN  INFO     Starting isa keyboard powerbutton handler for device 'uknown'.                                                                                                                
        MAIN  INFO     Reloading configuration.                                                                                                                                                      
        PBTN  INFO     Waiting for steam to launch.                                                                                                                                                  
        MAIN  INFO     No profiles found.                                                                                                                                                            
        MAIN  INFO     Initialization Complete!                  

If it still does not work by default, I would greatly appreciate it if you could follow the steps below

OK,

and pull request me.

this I don't know how to do and is to complicated for me. I continue to report here, and you can directly include in your repository in a way that suits your coding.

Having this information is important for supporting devices. https://github.com/hhd-dev/hwinfo/tree/master/devices

It is probably due to a failed DMI check:

On my system, files in /sys/devices/virtual/dmi/id/ say:

  • /sys/devices/virtual/dmi/id/product_name: G1619-04
  • /sys/devices/virtual/dmi/id/board_name: G1619-04
  • /sys/devices/virtual/dmi/id/uevent: MODALIAS=dmi:bvnAmericanMegatrendsInternational,LLC.:bvr0.35:bd09/12/2023:br0.35:efr0.14:svnGPD:pnG1619-04:pvrVer.1.0:rvnGPD:rnG1619-04:rvrVer.1.0:cvnDefaultstring:ct10:cvrDefaultstring:sku7896559068635:

That is different from your G1619-05.

  • /sys/devices/virtual/dmi/id/bios_release: 0.35

Thoughts on adding xpad support to the kernel?

I've submitted a patch to the kernel that adds the Legion Controller USB IDs to xpad. This adds out-of-the-box support for all the buttons except {the rear paddles and the Legion buttons} to the Linux kernel. Due to a quirk with my work email setup and the Linux kernel contribution process, the patch is on hold until January.

I see

Hiding the original xbox controller!

in the README. I presume this means hhd is compatible with the kernel patch, and I should carry-on submitting it when my email troubles are resolved next month. Is this correct?

Controller hiding breaks external controllers

Is there an easy way to toggle off the controller hiding. As far as I can tell it doesn't seem to be done with a udev rule but it still breaks my Xbox elite controller connected via Bluetooth.

Accelerometer does not work

In steam, the accelerometer calibration bar is too high. In addition, for the legion go accelerometer is completely non-functional.

For the working devices, this is due to a scaling math error.

Suspend reverts to native controller on Ally

I'm seeing #51 on the Ally, always reproducible after suspend, running Bazzite. Notably changing device emulation does not fix it here though. I have to systemctl restart hhd@<username>.

<resume at this exact moment>
Apr 26 11:43:22 ally hhd[10125]:         ALLY  ERROR    Received the following error:
Apr 26 11:43:22 ally hhd[10125]:                        <class 'OSError'>: [Errno 19] No such device
Apr 26 11:43:22 ally hhd[10125]:         ALLY  ERROR    Assuming controllers disconnected, restarting after 0.3s.
Apr 26 11:43:22 ally hhd[10125]: Exception in thread Thread-2 (plugin_run):
Apr 26 11:43:22 ally hhd[10125]: Traceback (most recent call last):
Apr 26 11:43:22 ally hhd[10125]:   File "/usr/lib64/python3.12/threading.py", line 1073, in _bootstrap_inner
Apr 26 11:43:22 ally hhd[10125]:     self.run()
Apr 26 11:43:22 ally hhd[10125]:   File "/usr/lib64/python3.12/threading.py", line 1010, in run
Apr 26 11:43:22 ally hhd[10125]:     self._target(*self._args, **self._kwargs)
Apr 26 11:43:22 ally hhd[10125]:   File "/usr/lib/python3.12/site-packages/hhd/device/rog_ally/base.py", line 169, in plugin_run
Apr 26 11:43:22 ally hhd[10125]:     raise e
Apr 26 11:43:22 ally hhd[10125]:   File "/usr/lib/python3.12/site-packages/hhd/device/rog_ally/base.py", line 154, in plugin_run
Apr 26 11:43:22 ally hhd[10125]:     controller_loop(conf.copy(), should_exit, updated, emit)
Apr 26 11:43:22 ally hhd[10125]:   File "/usr/lib/python3.12/site-packages/hhd/device/rog_ally/base.py", line 268, in controller_loop
Apr 26 11:43:22 ally hhd[10125]:     evs.extend(d.produce(r))
Apr 26 11:43:22 ally hhd[10125]:                ^^^^^^^^^^^^
Apr 26 11:43:22 ally hhd[10125]:   File "/usr/lib/python3.12/site-packages/hhd/controller/physical/evdev.py", line 377, in produce
Apr 26 11:43:22 ally hhd[10125]:     for e in self.dev.read():
Apr 26 11:43:22 ally hhd[10125]:   File "/usr/lib64/python3.12/site-packages/evdev/eventio.py", line 71, in read
Apr 26 11:43:22 ally hhd[10125]:     events = _input.device_read_many(self.fd)
Apr 26 11:43:22 ally hhd[10125]:              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Apr 26 11:43:22 ally hhd[10125]: OSError: [Errno 19] No such device

Exposing Gyro to RPCS3

This may be out of scope for HHD, apologies and please close if so.

I am on a ROG Ally, using Bazzite with the dualsense edge configuration applied. I am trying to configure gyro in RPCS3. The instructions are pretty much to just add your user to the input group and to disable Steam input.

However, it looks like gyro is still not exposed in RPCS3 even after doing that. Gyro works fine with my external controller though.

To configure, you open RPCS3, open the pads menu, select SDL, select your controller in the drop-down menu. Click configure under Motion Controls, and move your controller around to make sure it's working.

I am interested in this for Folklore support primarily but a simple game to test this would be Super Rub'a'Dub.

GPD Win 4 Gyro not working

Isn't it supposed to work? In Steam the Gryo test doesn't do anything. PS5 Controller is detected, though.
It's a GPD Win 4 6800U.

grafik

Triggers don’t work on certain titles

Hello, I have a GPD win mini 2024 and certain games aren’t functioning right with the use of the triggers… for example, in both Spider-Man miles morales and Spider-Man remastered the triggers just don’t work at all no input is shown when pushing down the triggers the only way I’ve gotten them to work is by disabling steam input but it’s inconvenient due to the fact that the game still receives input when I’m in the steam menus on bazzite… this problem is also in GTA V, days gone, and X-men origins Wolverine except disabling steam input in those games makes the controller stop working all together… every other game I’ve tried works fine it’s just those games and those are some of my favorite games so it’s unfortunate that this issue is happening with them… any help would be appreciated, thank you

Elite Controller Support

Hi, I'm running Bazzite on Legion Go and wondering how I can emulate the Elite controller, when I choose Xbox it seems to be emulating a standard controller with no back button mapping.

I'm aware I can just use duelsense edge, but I don't use gyro, and prefer the virtual touchpad to the game one. Also, some games force playstation glyphs with it.

It also says in the readme that elite emulation is supported so just wondering if there are extra steps that I haven't found?

FAQ: why spoof a PlayStation controller?

As someone new to Linux and Steam, my understanding of Linux gamepad support is:

  1. controller connects via USB/Bluetooth and advertises which buttons it supports
  2. controller is polled for events
    • controller announces which of the buttons it announced are currently down (and pressures for analog sticks/triggers)

As such, I would expect a novel controller (like the Legion Go) to announce "I have ABXY, start, select, mode, capture, D-pad, 2 sticks, 2 digital shoulders, 2 analog shoulders, 4 rear paddle buttons, and a scroll wheel," and then for those buttons to appear in Steam Input.

The button codes are defined in the kernel, and the mappings for the very similar Steam Deck are documented in the kernel.

Why does HHD pretend to be a PS Edge?

HHD Block System Poweroff

Device: Ayaneo Air (Standard) 16+512
System: Chimera OS 46 Unstable (SK Modified) repo
Version: newest (ce940eb)

Confirmed it was caused by hhd. It got stuck in such loop:

Feb 07 00:51:50 chimeraos kernel: usb 1-4: USB disconnect, device number 87
Feb 07 00:51:49 chimeraos (udev-worker)[4299]: event12: Process '/bin/systemctl start controller-wake@/dev/input/event12.service' failed with exit code 4.
Feb 07 00:51:49 chimeraos systemd[1]: Requested transaction contradicts existing jobs: Transaction for [email protected]/start is destructive (veritysetup.target has 'stop' job queued, but 'start' is included in transaction).
Feb 07 00:51:48 chimeraos (udev-worker)[4300]: js0: Process '/bin/systemctl start controller-wake@/dev/input/js0.service' failed with exit code 4.
Feb 07 00:51:48 chimeraos systemd[1]: Requested transaction contradicts existing jobs: Transaction for [email protected]/start is destructive (systemd-remount-fs.service has 'stop' job queued, but 'start' is included in transaction).
Feb 07 00:51:48 chimeraos (udev-worker)[4299]: input108: Process '/bin/systemctl start [email protected]' failed with exit code 1.
Feb 07 00:51:48 chimeraos kernel: input: Microsoft X-Box 360 pad as /devices/pci0000:00/0000:00:08.1/0000:04:00.3/usb1/1-4/1-4:1.0/input/input108
Feb 07 00:51:48 chimeraos kernel: usb 1-4: Manufacturer: ZhiXu
Feb 07 00:51:48 chimeraos kernel: usb 1-4: Product: Controller
Feb 07 00:51:48 chimeraos kernel: usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Feb 07 00:51:48 chimeraos kernel: usb 1-4: New USB device found, idVendor=045e, idProduct=028e, bcdDevice= 1.10
Feb 07 00:51:48 chimeraos kernel: usb 1-4: new full-speed USB device number 87 using xhci_hcd
Feb 07 00:51:48 chimeraos kernel: xpad 1-4:1.0: xpad_try_sending_next_out_packet - usb_submit_urb failed with result -19
Feb 07 00:51:48 chimeraos kernel: usb 1-4: USB disconnect, device number 86

This situation made hhd not able to gracefully shutdown. It would reach 1min30s timeout of systemd and be killed, then poweroff process continued.

Full log seen here: gist

[Feature Request] Allow command line configuration.

So far, you provide only a HTTP configuration interface.

hhd --help says I can also pass [command], but I find it nowhere documented.

Can you make this configurable also via command line, please?

So far I did not get anything meaningful out of this; I have a GPD Win Max 2 (2023), and hhd only loads the plugin powerbuttond.

Regards!

[Bug] Bazzite Legion Go - Home / QAM input nullification only applies to Legion Button inputs

Handheld Daemon Version: 2.5.3
Handheld Daemon UI Version: 2.2.1
Adjustor (TDP) Version: 2.1.3
HHD Decky Version: 0.1.0
Tested on various recent releases of Bazzite OS based on Fedora 39.

So I have tried multiple different Bazzite releases and a few different versions of HHD that I know used to work and it didn't fix my issue.

The Legion L and R buttons on the True Strike controllers can be mapped to either Home / QAM access buttons or swapped to be Select / Start buttons. I started encountering an issue after some recent updates and maybe a hard reset or two where pressing Legion L / R buttons causes all other controller inputs to not be detected for a good half second or so. I have a feeling this input nullification is meant for the Home / QAM menu navigation, but when I am using those buttons as Start / Select I don't want my analog inputs or held buttons to be ignored or interrupted. At the same time the two buttons that act as Start / Select by default have no input nullification, inputs are not interrupted even when those buttons are mapped to Home / QAM.

I tried deleting every HHD folder within the home directory to no avail, rebasing hasn't helped, downgrading HHD hasn't helped, reinstalling the decky plugin, toggling on and off all settings hasn't helped, also tried factory resetting controllers to no avail. Not sure where else the issue could be but hopefully someone here may have an idea.

[bug] changing http port doesn't take effect until hhd service is restarted

I'm updating the decky plugin to directly pull the port num from the state.yml file.

However, after updating the port num, the http server still keeps serving from the old port until manually restarting the hhd service.

Not sure if this is intentional or not, but filing a bug report just in case.

Regression in 0.2.8: won't start

journalctl | grep hhd
Jan 01 22:57:47 brenton-go hhd[1048]: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Jan 01 22:57:47 brenton-go hhd[1048]: Running as root without a specified user (`--user`). Configs will be placed at `/root/.config`.
Jan 01 22:57:47 brenton-go hhd[1048]: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Jan 01 22:57:47 brenton-go hhd[1048]: Failed getting permissions with error:
Jan 01 22:57:47 brenton-go hhd[1048]: [Errno 25] Inappropriate ioctl for device
Jan 01 22:57:47 brenton-go hhd[1048]: Could not get user information. Exiting...

Rolling back to 0.2.7 works. Adding the modules-load.d rule doesn't change this issue.

[bug] ubuntu 24 install

Hello! Can't install on ubuntu 24.04, error:

$ curl -L https://github.com/hhd-dev/hhd/raw/master/install.sh | sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100  1992  100  1992    0     0   1661      0  0:00:01  0:00:01 --:--:-- 14028
sh: 21: source: not found
sh: 22: pip: not found

after edit install.sh pip -> pip3 it's ok:

$ ./install.sh 
Collecting hhd
  Downloading hhd-2.7.2.tar.gz (170 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 170.1/170.1 kB 264.9 kB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Collecting adjustor
  Downloading adjustor-2.1.5.tar.gz (32 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Requirement already satisfied: evdev>=1.6.1 in /usr/lib/python3/dist-packages (from hhd) (1.7.0)
Requirement already satisfied: PyYAML>=6.0.1 in /usr/lib/python3/dist-packages (from hhd) (6.0.1)
Requirement already satisfied: rich>=13.5.2 in /usr/lib/python3/dist-packages (from hhd) (13.7.1)
Collecting setuptools>=65.5.0 (from hhd)
  Using cached setuptools-69.5.1-py3-none-any.whl.metadata (6.2 kB)
Collecting python-xlib>=0.33 (from hhd)
  Downloading python_xlib-0.33-py2.py3-none-any.whl.metadata (6.2 kB)
Collecting pyroute2>=0.7.3 (from adjustor)
  Downloading pyroute2-0.7.12-py3-none-any.whl.metadata (8.2 kB)
Requirement already satisfied: six>=1.10.0 in /usr/lib/python3/dist-packages (from python-xlib>=0.33->hhd) (1.16.0)
Requirement already satisfied: markdown-it-py>=2.2.0 in /usr/lib/python3/dist-packages (from rich>=13.5.2->hhd) (3.0.0)
Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /usr/lib/python3/dist-packages (from rich>=13.5.2->hhd) (2.17.2)
Requirement already satisfied: mdurl~=0.1 in /usr/lib/python3/dist-packages (from markdown-it-py>=2.2.0->rich>=13.5.2->hhd) (0.1.2)
Downloading pyroute2-0.7.12-py3-none-any.whl (460 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 460.5/460.5 kB 615.7 kB/s eta 0:00:00
Downloading python_xlib-0.33-py2.py3-none-any.whl (182 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 182.2/182.2 kB 806.2 kB/s eta 0:00:00
Using cached setuptools-69.5.1-py3-none-any.whl (894 kB)
Building wheels for collected packages: hhd, adjustor
  Building wheel for hhd (pyproject.toml) ... done
  Created wheel for hhd: filename=hhd-2.7.2-py3-none-any.whl size=191232 sha256=fa56694c74188f331dc3c59b4639105b97899936b6c40cc09f1dec5d234c32f8
  Stored in directory: /home/gene/.cache/pip/wheels/3b/99/90/68c3a7dd6b0569cbf8c462c94ccb66e48263629d6246629224
  Building wheel for adjustor (pyproject.toml) ... done
  Created wheel for adjustor: filename=adjustor-2.1.5-py3-none-any.whl size=37044 sha256=87984208201a506caa288dee4f26b09ac1881811fd893a391a8b6d375840297a
  Stored in directory: /home/gene/.cache/pip/wheels/f6/3c/da/66345fca46ba03ebe5f9a1a00adbd5db929c6f7a01f5b94f83
Successfully built hhd adjustor
Installing collected packages: pyroute2, setuptools, python-xlib, hhd, adjustor
Successfully installed adjustor-2.1.5 hhd-2.7.2 pyroute2-0.7.12 python-xlib-0.33 setuptools-69.5.1
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1400  100  1400    0     0  10129      0 --:--:-- --:--:-- --:--:-- 10144
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   604  100   604    0     0   4676      0 --:--:-- --:--:-- --:--:--  4718
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   191  100   191    0     0   1336      0 --:--:-- --:--:-- --:--:--  1345
ln: не удалось создать символьную ссылку '/home/gene/.local/bin/hhd': Файл существует
ln: не удалось создать символьную ссылку '/home/gene/.local/bin/hhd.contrib': Файл существует
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100  102M  100  102M    0     0  15.1M      0  0:00:06  0:00:06 --:--:-- 22.9M

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!! Do not forget to remove a Bundled Handheld Daemon if your distro preinstalls it. !!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Reboot!

Controller hiding does not work on boot

There is a linux service/rule that runs on boot and after every add trigger of udev that applies group rw to input devices.

The udev rule applied by hhd to hide the controller runs chmod 000 after the rule application, which overrides it. However, on boot, the service/rule starts/is applied after hhd hides the controller, resulting in the controller not being hidden.

Identify what this service/rule is and make hhd run after it.

Swap_legion appears to function opposite as described.

As in description, swap_legion isn't working correctly for me. It also is using terms that are unique to DualShock 4 and older controllers (select and start don't exist anymore, those buttons are "create" and "options" now). Unless, of course this is meant to simulate clicking on the left or right of a DS5 trackpad - despite the steam UI suggesting the "create" and "options" buttons being activtated.

I'll assume that "create" == "select" and "options" == "start" since that appears to be what you mean.

In that case, things still don't line up:

  • True / "l_is_select": Top-Left button (legion L) is QAM, Top-Right button is "Guide". Select/Create is mapped to the hamburger menu button on the left. - I'd instead expect that the Top Left button is "select".
  • "l_is_start": Top-Left button (legion L) is QAM, Top-Right button is "Guide". Select/Create is mapped to the hamburger menu button on the left. - I'd instead expect that the Top Left button is "start"/"options".
  • False: Top-Left button (legion L) is Create/Select. Top-Right is Options/Start. - I'd instead expect this result for "True or l_is_select".

I suspect that the issue could be related to the NoneType you used here - https://github.com/antheas/hhd/blame/3a0e7d2607c97d49d4f51c1a25809d1d985a723f/src/hhd/device/legion_go/base.py#L309

But I haven't had a chance to confirm that yet by trying it locally.

Turn On/Off automatically on exit/enter game mode

On Gpd win mini I'm obliged to open the UI and disable emulation(decky or desktop) to make work again the touchpad in desktop mode with gestures(that on a similar device means using it like a normal device)

Is it eventually possible to add a toggle to make possible an automatic on/off like said in the title?
Cause in gamemode having touchpad emulation (controller or virtual) is the only way to have an effective left click from the touchpad.(while it messes up things on the desktop)

Ps: I'm on bazzite

Feature request: add generalizable macro support

When using the DualSense Edge bindings for the Legion Go, every button is accounted for except Legion R, which gets chorded into two buttons. Unfortunately, the chording prevents this key from being remapped in Steam.

Is it possible to choose which button gets chorded, to allow the others to be mapped in Steam?

Wrong buttons being dispatched

I've just packaged this for NixOS and tested it.

The buttons Steam sees don't match the physical location on the device. For instance:

  • The shape buttons are rotated: circle (back) is the physical Y button.
  • The Legion buttons are registering as L3 (stick click and chorded stick click).
  • The triggers are registering as the right stick.
  • The right stick is registering as the triggers.

I tried remapping them with Setup Device Inputs. When I got to the "click the touchpad" section, it wasn't registering my touchpad clicks. It never asked me for rear paddles.

I guess I'll have to reboot into Windows and use Legion Space to swap my start+select and Legion buttons. I've been doing it in Steam Settings with the xpad driver, but since the menu button is chorded with hhd, it isn't easily swapped in Steam Settings.

Also, I'm still seeing the Legion Controller in Steam Settings in 0.2.6.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.