mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-06-23 19:45:21 -04:00
0e7901ebbe
fixes #2683
75 lines
2.2 KiB
Go
75 lines
2.2 KiB
Go
package providers
|
|
|
|
import "strings"
|
|
|
|
// Scroll-wheel binds are captured by the shell as niri's keysym names
|
|
// (WheelScrollUp/Down/Left/Right) regardless of the active compositor. Niri
|
|
// consumes them natively; every other provider speaks a different dialect, so the
|
|
// raw niri token must be translated on write and back again on read. Without this
|
|
// the token is emitted verbatim and the compositor rejects the bind (issue #2683).
|
|
|
|
var canonicalScrollKeys = map[string]string{
|
|
"wheelscrollup": "WheelScrollUp",
|
|
"wheelscrolldown": "WheelScrollDown",
|
|
"wheelscrollleft": "WheelScrollLeft",
|
|
"wheelscrollright": "WheelScrollRight",
|
|
}
|
|
|
|
func isScrollKey(token string) bool {
|
|
_, ok := canonicalScrollKeys[strings.ToLower(token)]
|
|
return ok
|
|
}
|
|
|
|
// Hyprland binds the wheel inside a regular bind using mouse_up/down/left/right.
|
|
var hyprlandScrollNative = map[string]string{
|
|
"wheelscrollup": "mouse_up",
|
|
"wheelscrolldown": "mouse_down",
|
|
"wheelscrollleft": "mouse_left",
|
|
"wheelscrollright": "mouse_right",
|
|
}
|
|
|
|
var hyprlandScrollCanonical = map[string]string{
|
|
"mouse_up": "WheelScrollUp",
|
|
"mouse_down": "WheelScrollDown",
|
|
"mouse_left": "WheelScrollLeft",
|
|
"mouse_right": "WheelScrollRight",
|
|
}
|
|
|
|
func hyprlandScrollToNative(token string) (string, bool) {
|
|
v, ok := hyprlandScrollNative[strings.ToLower(token)]
|
|
return v, ok
|
|
}
|
|
|
|
func hyprlandScrollToCanonical(token string) (string, bool) {
|
|
v, ok := hyprlandScrollCanonical[strings.ToLower(token)]
|
|
return v, ok
|
|
}
|
|
|
|
// MangoWC binds the wheel through a dedicated axisbind directive whose key field
|
|
// is a direction (UP/DOWN/LEFT/RIGHT) rather than a keysym.
|
|
const mangowcAxisBindPrefix = "axisbind"
|
|
|
|
var mangowcScrollDirection = map[string]string{
|
|
"wheelscrollup": "UP",
|
|
"wheelscrolldown": "DOWN",
|
|
"wheelscrollleft": "LEFT",
|
|
"wheelscrollright": "RIGHT",
|
|
}
|
|
|
|
var mangowcScrollCanonical = map[string]string{
|
|
"up": "WheelScrollUp",
|
|
"down": "WheelScrollDown",
|
|
"left": "WheelScrollLeft",
|
|
"right": "WheelScrollRight",
|
|
}
|
|
|
|
func mangowcScrollToDirection(token string) (string, bool) {
|
|
v, ok := mangowcScrollDirection[strings.ToLower(token)]
|
|
return v, ok
|
|
}
|
|
|
|
func mangowcDirectionToScroll(direction string) (string, bool) {
|
|
v, ok := mangowcScrollCanonical[strings.ToLower(direction)]
|
|
return v, ok
|
|
}
|