ppy / osu

rhythm is just a *click* away!
https://osu.ppy.sh
MIT License
15.1k stars 2.24k forks source link

Add support for absolute trackpad input #3019

Closed KevZhi closed 3 years ago

KevZhi commented 6 years ago

I'm a MacBook user and playing osu! with MacBook Built-in trackpad. imb_qdgu2f

There's an app Inklet can map real trackpad touch location to gameplay screen just like tablet. But this app have some input delay, also needs to manually quit and start mapping mode when selecting songs/mods or playing.

There's some document from apple which may help

https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/EventOverview/TrackingAreaObjects/TrackingAreaObjects.html#//apple_ref/doc/uid/10000060i-CH8-SW3

and new synaptics trackpad on widows laptop support getting raw trackpad touch location.

I hope this feature will be a built-in feature in lazer, thanks anyway.

some "light" players using laptop who doesn't want to have a tablet like pro players, just simply enjoy the game, will like this feature, also, playing with trackpad is way more portable which in the occasion just like you are in airport waiting for a flight, enjoy with a game.

ticotaco72 commented 6 years ago

It would be possibly be hard to do with older synaptics hardware, non synaptics hardware and on Linux (everything should be cross platform). But maybe possible, i don't know this topic.

KevZhi commented 6 years ago

@ticotaco72 syncs.exe is used for get absolute position on trackpad on windows. My opinion is that trackpad absolute mapping should be a external hardware support like wii taiko drum support in osu! so not needed to be cross platform. Actually Synaptics has a large market share of PC trackpad. Also, as long as the laptop can run osu in acceptable quality, I don't think it will have too much possibilities comes with an old shit trackpad.

anyhow, I think that feature will enhance the experience of the players don't want to buy tablets and just want to do some relax game on their laptop.

I think this features can be planned after goes stable, not urgent.

ticotaco72 commented 6 years ago

@KevZhi Not everything old hardware is shit. And how long is available getting raw position in synaptics API? What's definition of old? 2 years, 10 years And why we want to say "people with older hardware or exotic hardware or Linux are worse". Lazer is build for cross-platform

KevZhi commented 6 years ago

@ticotaco72 it's already some softwares here and API is open. its defiantly not a huge work. since windows 7 going out, laptops starts to support multi touch gestures on trackpad. a large amount of main stream laptops supports now.

That feature I mentioned is NOT a necessary to CrossPlatform, it's not a main function. You can either choose to buy a tablet or practice on mouse, or struggle with trackpad without using absolute positioning.

That's not affecting on game playing. osu! just provided us ways to play with all kind of normal input device .

it's just an external support to a certain kind device, just like wii taiko drum does. who has that kinda device, who can enjoy a convenient way playing osu! without buy additional hardware and a large amount of player using laptop has that device.

so why not?

I'm absolutely not meaning that people with old hardware or linux are worse.

As I'm a Chinese user. old osu! Mac(wine package)never supported Chinese characters display, I don't feel any bad about it. After macOS 10.13 release, I can't even play osu because of compatibility problems of wine for serval month or so until new version comes out.

Cuz I know Mac is for work, not for playing games, linux also, if anything happens, it's in expectation .

If I'm a unsupported one I'd rather install a windows or buy a new pc or tablet to enjoy that , instead of asking osu! to add support to my device.

if I can do that kind of code I'm very glad to contribute, I think there will be guys intrested in

peppy commented 6 years ago

This is definitely something we want to support at some point in the future. It shouldn't be too hard to implement as an InputHandler if you'd like to give it a shot.

KevZhi commented 6 years ago

@peppy thanks a lot for putting it on the list!

https://gist.github.com/chamons/6efc2bc14e9e40b33a1d77826a0673bc ,will work on Mac maybe? Actually sorry for that my coding skills can't supports me contribute to it.

edgao commented 4 years ago

@peppy is there an example of how to implement an InputHandler? The only relevant files I've found in the repo seem to be related to replays. I've also never done C# before so this will be a bit of an adventure :P

edgao commented 4 years ago

aha, found https://github.com/ppy/osu-framework/blob/master/osu.Framework/Input/Handlers/InputHandler.cs. I'll dig around and see if I can make sense of how this would look.

peppy commented 4 years ago

yep, best to start by making this work on the framework, completely separate from osu!. feel free to jump on discord and ask if you have any questions regarding the input hierarchy.

AlexGuo1998 commented 4 years ago

Hi devs, recently I'm experimenting with "Precision Touchpad" on Windows. It seems like recent multipoint touchpads that Windows PC supports are using HID protocol. With raw input and HID API, we can read absolute XY values. I wrote a little demo (in C) and will later upload to GitHub, but I don't know much about C# and dotnet. demo screenshot Is there anyone working on this now? Maybe I can provide some help.

Docs from Microsoft:

peppy commented 4 years ago

There is ongoing work to add multitouch support, but no one is specifically adding precision trackpad support yet. You are welcome to implement support (at osu-framework, not here).

AlexGuo1998 commented 4 years ago

OK. I'll take a look there.

edgao commented 4 years ago

sorry folks, turns out an OS-specific input method is a terrible way to learn a new programming language. I haven't made any real progress on the OSX absolute positioning feature - @AlexGuo1998 if you want to pick that up as well it's all yours; I might poke at it a little more but likely won't have time to do much with it

mcendu commented 4 years ago

Should we enable "Touch Device" mod when such type of input is detected to be in use?

smoogipoo commented 4 years ago

Not a discussion that needs to be had right now.

izzues commented 4 years ago

Hey! Any updates on Precision Touchpad support?

smoogipoo commented 4 years ago

None yet.