Skip to content

Keybinds with 's' flag does not work after scrolling with mouse until a mouse click #8699

@tripleincode

Description

@tripleincode

Already reported ? *

  • I have searched the existing open and closed issues.

Regression?

No

System Info and Version

System Info and Version Hyprland 0.45.2 built from branch at commit 12f9a0d0b93f691d4d9923716557154d74777b0a ([gha] Nix: update inputs). Date: Tue Nov 19 21:47:18 2024 Tag: v0.45.2, commits: 5451 built against aquamarine 0.5.0

flags set:
debug

System Information:
System name: Linux
Node name: Adriatic
Release: 6.12.3-arch1-1
Version: #1 SMP PREEMPT_DYNAMIC Fri, 06 Dec 2024 11:15:43 +0000

GPU information:
04:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Barcelo [1002:15e7] (rev d2) (prog-if 00 [VGA controller])

os-release: NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
ID=arch
BUILD_ID=rolling
ANSI_COLOR="38;2;23;147;209"
HOME_URL="https://archlinux.org/"
DOCUMENTATION_URL="https://wiki.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://gitlab.archlinux.org/groups/archlinux/-/issues"
PRIVACY_POLICY_URL="https://terms.archlinux.org/docs/privacy-policy/"
LOGO=archlinux-logo

plugins:

======Config-Start======

Config File: /home/triple/.config/hypr/hyprland.conf: Read Succeeded

AUTOGENERATED HYPR CONFIG.

PLEASE USE THE CONFIG PROVIDED IN THE GIT REPO /examples/hypr.conf AND EDIT IT,

OR EDIT THIS ONE ACCORDING TO THE WIKI INSTRUCTIONS.

This is an example Hyprland config file.

Refer to the wiki for more information.

https://wiki.hyprland.org/Configuring/

Please note not all available settings / options are set here.

For a full list, see the wiki

You can split this configuration into multiple files

Create your files separately and then link them to this file like this:

source = ~/.config/hypr/myColors.conf

################

MONITORS

################

See https://wiki.hyprland.org/Configuring/Monitors/

monitor=eDP-1,1920x1080@60,0x0,1

###################

MY PROGRAMS

###################

See https://wiki.hyprland.org/Configuring/Keywords/

Set programs that you use

$terminal = kitty
$fileManager = dolphin

#################

AUTOSTART

#################

Autostart necessary processes (like notifications daemons, status bars, etc.)

Or execute your favorite apps at launch like this:

exec-once = hyprpaper
exec-once = systemctl --user start hyprpolkitagent
exec-once = waybar
exec-once = firefox

exec-once = nm-applet &

exec-once = waybar & hyprpaper & firefox

exec-once=dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP

#############################

ENVIRONMENT VARIABLES

#############################

See https://wiki.hyprland.org/Configuring/Environment-variables/

env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24

#####################

LOOK AND FEEL

#####################

Refer to https://wiki.hyprland.org/Configuring/Variables/

https://wiki.hyprland.org/Configuring/Variables/#general

general {
gaps_in = 4
gaps_out = 10

gaps_workspaces = 0

border_size = 3

# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
col.active_border = rgba(070707cc)
col.inactive_border = rgba(07070788)

# Set to true enable resizing windows by clicking and dragging on borders and gaps
resize_on_border = false

# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
allow_tearing = false

layout = dwindle

}

https://wiki.hyprland.org/Configuring/Variables/#decoration

decoration {
rounding = 1

# Change transparency of focused and unfocused windows
active_opacity = 1
inactive_opacity = 1

dim_inactive = false
dim_strength = 0.5

shadow {
    enabled = false
    range = 4
    render_power = 3
    color = rgba(1a1a1aee)
}

# https://wiki.hyprland.org/Configuring/Variables/#blur
blur {
    enabled = false
    size = 1
    passes = 1

    vibrancy = 0.1696
}

}

https://wiki.hyprland.org/Configuring/Variables/#animations

animations {

enabled = yes, please :)

enabled = false

# Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more

bezier = easeOutQuint,0.23,1,0.32,1
bezier = easeInOutCubic,0.65,0.05,0.36,1
bezier = linear,0,0,1,1
bezier = almostLinear,0.5,0.5,0.75,1.0
bezier = quick,0.15,0,0.1,1

animation = global, 1, 10, default
animation = border, 1, 5.39, easeOutQuint
animation = windows, 1, 4.79, easeOutQuint
animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
animation = windowsOut, 1, 1.49, linear, popin 87%
animation = fadeIn, 1, 1.73, almostLinear
animation = fadeOut, 1, 1.46, almostLinear
animation = fade, 1, 3.03, quick
animation = layers, 1, 3.81, easeOutQuint
animation = layersIn, 1, 4, easeOutQuint, fade
animation = layersOut, 1, 1.5, linear, fade
animation = fadeLayersIn, 1, 1.79, almostLinear
animation = fadeLayersOut, 1, 1.39, almostLinear
animation = workspaces, 1, 1.94, almostLinear, fade
animation = workspacesIn, 1, 1.21, almostLinear, fade
animation = workspacesOut, 1, 1.94, almostLinear, fade

}

Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/

"Smart gaps" / "No gaps when only"

uncomment all if you wish to use that.

workspace = w[tv1], gapsout:0, gapsin:0

workspace = f[1], gapsout:0, gapsin:0

windowrulev2 = bordersize 0, floating:0, onworkspace:w[tv1]

windowrulev2 = rounding 0, floating:0, onworkspace:w[tv1]

windowrulev2 = bordersize 0, floating:0, onworkspace:f[1]

windowrulev2 = rounding 0, floating:0, onworkspace:f[1]

See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more

dwindle {
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = true # You probably want this
}

See https://wiki.hyprland.org/Configuring/Master-Layout/ for more

master {
new_status = master
}

https://wiki.hyprland.org/Configuring/Variables/#misc

misc {
force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers
disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :(
}

#############

INPUT

#############

https://wiki.hyprland.org/Configuring/Variables/#input

input {
kb_layout = us
kb_variant =
kb_model =
kb_options =
kb_rules =

follow_mouse = 1

sensitivity = 0 # -1.0 - 1.0, 0 means no modification.

accel_profile = adaptive

follow_mouse = 2
scroll_factor = 1

touchpad {
    natural_scroll = true
    scroll_factor = 0.5
    tap-to-click = false
}

}

device {
name = logitech-mx-anywhere-2-1
}
device {
name = elan0780:00-04f3:3244-touchpad
}

https://wiki.hyprland.org/Configuring/Variables/#gestures

gestures {
workspace_swipe = false
}

Example per-device config

See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more

device {
name = epic-mouse-v1
sensitivity = -0.5
}

###################

KEYBINDINGS

###################

See https://wiki.hyprland.org/Configuring/Keywords/

$mainMod = SUPER # is windows key

Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more

bind = $mainMod, A, exec, $terminal
bind = $mainMod, F, exec, rofi -show drun
bind = $mainMod, D, exec, discord
bind = $mainMod, Q, exec, mullvad-vpn
binds = Alt_R, R, exec, gedit
bind = $mainMod, C, killactive,
bind = $mainMod, M, exit,
bind = $mainMod, E, exec, $fileManager
bind = $mainMod, V, togglefloating,
bind = $mainMod, P, pseudo, # dwindle
bind = $mainMod, J, togglesplit, # dwindle

Move focus with mainMod + arrow keys

#bind = $mainMod, left, movefocus, l
#bind = $mainMod, right, movefocus, r
#bind = $mainMod, up, movefocus, u
#bind = $mainMod, down, movefocus, d

env = GRIM_DEFAULT_DIR, /home/triple/pictures/screenshots

screenshot binds

bind = , Print, exec, grim -g "$(slurp)" - | wl-copy
bind = SHIFT, Print, exec, grim - | wl-copy
bind = CTRL_SHIFT, Print, exec, grim /home/triple/pictures/fullscreen_captures/$(date +'%s_grim.png')

Switch workspaces with mainMod + [0-9]

bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10

Move active window to a workspace with mainMod + SHIFT + [0-9]

bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10

Example special workspace (scratchpad)

bind = $mainMod, S, togglespecialworkspace, magic
bind = $mainMod SHIFT, S, movetoworkspace, special:magic

Move/resize windows with mainMod + LMB/RMB and dragging

bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow

Laptop multimedia keys for volume and LCD brightness

bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 10%+
bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%-

Requires playerctl

bindl = , XF86AudioNext, exec, playerctl next
bindl = , XF86AudioPause, exec, playerctl play-pause
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previous

##############################

WINDOWS AND WORKSPACES

##############################

See https://wiki.hyprland.org/Configuring/Window-Rules/ for more

See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules

Example windowrule v1

windowrule = float, ^(kitty)$

Example windowrule v2

windowrulev2 = float,class:^(kitty)$,title:^(kitty)$

Ignore maximize requests from apps. You'll probably like this.

windowrulev2 = suppressevent maximize, class:.*

Fix some dragging issues with XWayland

windowrulev2 = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0

======Config-End========

### Description

Keybinds using binds (multikey keybinds) do not activate after using scroll with a mouse wheel until the next click.

There is a mention of this at the bottom of #5966 after it was merged.

The bug seems to come from the original pull request #5966 that added multi-key keybinds. In the handleKeybinds function in KeybindManager.cpp there is a set of if statements that add and remove to a set that keeps track of currently pressed keysyms, which is used to compare to the multi-key keybinds. The scrolling events passed through handleKeybinds have a keySym of 0 and are always considered a press (not a release), so the keySym 0 just stays in the set. A check for if the keySym is 0 when changing the set in handleKeybinds could probably resolve the problem.

P.S. sorry if this is the wrong format or location, I haven't used github like this before.

How to reproduce

Put something like this in Hyprland config:

binds = Alt_R, K, exec, kitty

Click on something and then try the keybind to make sure it works (Right Alt + R here), and then scroll with a mouse scroll wheel, and then try the keybind again. Then click on something and try the keybind and it works again.

Crash reports, logs, images, videos

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions