mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-06-23 19:45:21 -04:00
@@ -0,0 +1,74 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user