dan200 / ComputerCraft

Programmable Computers for Minecraft
Other
982 stars 198 forks source link

Horizontal scroll event #569

Open viluon opened 6 years ago

viluon commented 6 years ago

It'd be nice if there were a mouse_horizontal_scroll (/mouse_horiz_scroll/mouse_hor_scroll, or maybe mouse_scroll_horizontal/...) event, or an extra parameter to the existing mouse_scroll event, either a boolean indicating the scroll axis, or another number equal to the amount of horizontal scrolling performed.

This would enable programs to react on full 2D scrolling on notebook touchpads, for example.

nothjarnan commented 6 years ago

If you're talking about mouse_scroll, it could probably be as simple as to have os.pullEvent("mouse_scroll") return another parameter for horizontal scroll direction, like it does with vertical. so the output would be event, verticalDirection, horizontalDirection, x,y. Though, I'm no expert and there's most likely a better way to do this.

SquidDev commented 6 years ago

I feel it'd be better to do this as a separate event. There's probably a fair few programs that will not cope with the scroll delta being zero (doing if delta > 0 then else and what not).

nothjarnan commented 6 years ago

fair point. so a mouse_scroll_horizontal event would be doable?

viluon commented 6 years ago

Oh right, thanks @nothjarnan, I forgot about the mouse_ prefix. Updated the issue.

SquidDev commented 6 years ago

I believe glfw reports both x and y scroll deltas, so should definitely be possible for 1.13. I suspect 1.12 is feasible, just haven't looked into it.

hugeblank commented 6 years ago

Not to mention that this would enable much higher end mice with horizontal scrolling to be of use like this fabulous one that I personally own and think everyone should have because why wouldn't you.

On a side note, the mouse does have four (maybe six, idk if the DPI shift buttons count) additional buttons. Maybe it's a good call to have a mouse event overhaul in general?

nothjarnan commented 6 years ago

@hugeblank Allow for more mouse buttons? The one issue I could see with that is that programs are made that only work with certain mice, or a mouse that has x amount of buttons. But then it'd just be as easy as asking the author to make the buttons re-bindable, to be fair.

viluon commented 6 years ago

@nothjarnan @hugeblank while this isn't a conversation well suited for this issue, strictly speaking, I believe ComputerCraft already supports more buttons — any extra buttons are simply assigned higher numbers (for example, my back button triggers an event, and is listed as button 5). This may be a perk of CCEmuX, however.

hugeblank commented 6 years ago

I think so. I have tried to use buttons in game and iirc this doesn't work. May have been a CC:T thing too.

SquidDev commented 6 years ago

Yeah, CC explicitly guards against that. CCEmuX really should too:

https://github.com/dan200/ComputerCraft/blob/914df8b0c7cc28451ea56a53808024511ff52642/src/main/java/dan200/computercraft/client/gui/widgets/WidgetTerminal.java#L182

Edit: And it does! Yes, I'm evil.