hyprwm / Hyprland

Hyprland is an independent, highly customizable, dynamic tiling Wayland compositor that doesn't sacrifice on its looks.
https://hyprland.org
BSD 3-Clause "New" or "Revised" License
21.09k stars 882 forks source link

Middle click not working for anything except when pasting/opening links in new tabs for Firefox. #8156

Open almonds-game opened 3 days ago

almonds-game commented 3 days ago

Already reported ? *

Regression?

No

System Info and Version

System/Version info ```sh Hyprland, built from branch at commit 4520b30d498daca8079365bdb909a8dea38e8d55 (version: bump to 0.44.1). Date: Wed Oct 9 12:54:39 2024 Tag: v0.44.1, commits: 5309 built against aquamarine 0.4.2 flags: (if any) System Information: System name: Linux Node name: fedora Release: 6.11.3-200.fc40.x86_64 Version: #1 SMP PREEMPT_DYNAMIC Thu Oct 10 22:31:19 UTC 2024 GPU information: 07: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="Fedora Linux" VERSION="40 (Forty)" ID=fedora VERSION_ID=40 VERSION_CODENAME="" PLATFORM_ID="platform:f40" PRETTY_NAME="Fedora Linux 40 (Forty)" ANSI_COLOR="0;38;2;60;110;180" LOGO=fedora-logo-icon CPE_NAME="cpe:/o:fedoraproject:fedora:40" DEFAULT_HOSTNAME="fedora" HOME_URL="https://fedoraproject.org/" DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/f40/system-administrators-guide/" SUPPORT_URL="https://ask.fedoraproject.org/" BUG_REPORT_URL="https://bugzilla.redhat.com/" REDHAT_BUGZILLA_PRODUCT="Fedora" REDHAT_BUGZILLA_PRODUCT_VERSION=40 REDHAT_SUPPORT_PRODUCT="Fedora" REDHAT_SUPPORT_PRODUCT_VERSION=40 SUPPORT_END=2025-05-13 plugins: ======Config-Start====== Config File: /home/person/.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. # ####################################################################################### # # Please note not all available settings / options are set here. # For a full list, see the wiki # autogenerated = 0 # remove this line to remove the warning # See https://wiki.hyprland.org/Configuring/Monitors/ monitor=,highres,0x0,1 xwayland { force_zero_scaling = true } # See https://wiki.hyprland.org/Configuring/Keywords/ for more # Execute your favorite apps at launch # exec-once = waybar & hyprpaper & firefox exec-once = hyprpaper exec-once = nwg-panel # Source a file (multi-file configs) # source = ~/.config/hypr/myColors.conf # Set programs that you use $terminal = kitty $fileManager = dolphin $menu = wofi --prompt="Search for programs" --show drun # Some default env vars. env = GDK_SCALE,1.5 env = XCURSOR_SIZE,18 env = QT_QPA_PLATFORMTHEME,qt5ct # change to qt6ct if you have that # For all categories, see https://wiki.hyprland.org/Configuring/Variables/ input { kb_layout = us kb_variant = kb_model = kb_options = kb_rules = scroll_method = on_button_down scroll_button = 274 follow_mouse = 2 touchpad { natural_scroll = yes scroll_factor = 0.2 middle_button_emulation = true } sensitivity = 0.2 # -1.0 to 1.0, 0 means no modification. } cursor { no_warps = true } general { # See https://wiki.hyprland.org/Configuring/Variables/ for more gaps_in = 5 gaps_out = 10 border_size = 2 # col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg col.inactive_border = rgba(595959aa) layout = dwindle # no_cursor_warps = true # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on allow_tearing = false } decoration { # See https://wiki.hyprland.org/Configuring/Variables/ for more rounding = 8 blur { enabled = false #size = 3 #passes = 1 } drop_shadow = false #shadow_range = 4 #shadow_render_power = 3 #col.shadow = rgba(1a1a1aee) } animations { enabled = yes # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more bezier = myBezier, 0.05, 0.9, 0.1, 1.05 animation = windows, 1, 7, myBezier animation = windowsOut, 1, 7, default, popin 80% animation = border, 1, 10, default animation = borderangle, 1, 8, default animation = fade, 1, 7, default animation = workspaces, 1, 6, default } dwindle { # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below preserve_split = yes # you probably want this } # master { # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more # new_is_master = true # } gestures { # See https://wiki.hyprland.org/Configuring/Variables/ for more workspace_swipe = on } misc { # See https://wiki.hyprland.org/Configuring/Variables/ for more force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers disable_splash_rendering = true disable_hyprland_logo = true vfr = true middle_click_paste = 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 } # Example windowrule v1 # windowrule = float, ^(kitty)$ # Example windowrule v2 # windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more windowrulev2 = suppressevent maximize, class:.* # You'll probably like this. # See https://wiki.hyprland.org/Configuring/Keywords/ for more $mainMod = SUPER # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more #bind = $mainMod, XKB_KEY_KP_Enter, exec, $terminal bind = $mainMod SHIFT, RETURN, exec, $terminal bind = $mainMod SHIFT, L, exec, librewolf bind = alt SHIFT, 3, exec, grim $(xdg-user-dir PICTURES)/$(date +"Screenshot_%d-%m-%y_%T.png") bind = alt SHIFT, 4, exec, grim -g "$(slurp)" $(xdg-user-dir PICTURES)/$(date +"Screenshot_%d-%m-%y_%T.png") bind = $mainMod, C, killactive, bind = $mainMod SHIFT, F, fullscreen, 0 bind = $mainMod, M, exit, bind = $mainMod, E, exec, $fileManager bind = $mainMod, V, togglefloating, bind = $mainMod, R, exec, $menu 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 bind = $mainMod, left, alterzorder, top bind = $mainMod, right, alterzorder, top bind = $mainMod, up, alterzorder, top bind = $mainMod, down, alterzorder, top # Function media keys bind = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle bind = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 10%- bind = , XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 10%+ bind = , XF86MonBrightnessDown, exec, brightnessctl set 10%- bind = , XF86MonBrightnessUp, exec, brightnessctl set 10%+ bind = alt, XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- bind = alt, XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ bind = alt, XF86MonBrightnessDown, exec, brightnessctl set 5%- bind = alt, XF86MonBrightnessUp, exec, brightnessctl set 5%+ # 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, movetoworkspacesilent, 1 bind = $mainMod SHIFT, 2, movetoworkspacesilent, 2 bind = $mainMod SHIFT, 3, movetoworkspacesilent, 3 bind = $mainMod SHIFT, 4, movetoworkspacesilent, 4 bind = $mainMod SHIFT, 5, movetoworkspacesilent, 5 bind = $mainMod SHIFT, 6, movetoworkspacesilent, 6 bind = $mainMod SHIFT, 7, movetoworkspacesilent, 7 bind = $mainMod SHIFT, 8, movetoworkspacesilent, 8 bind = $mainMod SHIFT, 9, movetoworkspacesilent, 9 bind = $mainMod SHIFT, 0, movetoworkspacesilent, 10 # Example special workspace (scratchpad) bind = $mainMod, S, togglespecialworkspace, magic bind = $mainMod SHIFT, S, movetoworkspace, special:magic # Scroll through existing workspaces with mainMod + scroll bind = $mainMod SHIFT, left, workspace, e-1 bind = $mainMod SHIFT, right, workspace, e+1 # Move/resize windows with mainMod + LMB/RMB and dragging bindm = $mainMod, mouse:272, movewindow bindm = $mainMod, mouse:273, resizewindow ======Config-End======== ```

Description

I have a ThinkPad L14 Gen 3 (AMD) and am trying to use the mouse buttons above the touchpad for games. However, clicking the middle mouse button does nothing (pasting text does work when enabled (including outside of Firefox)). I've tried using an external mouse, clicking the scroll wheel does nothing either. I figured it was an issue with the game itself, but when testing my mouse input on a few sites ((https://www.onlinemictest.com/mouse-test/), https://cpstest.org/mouse-test/) my middle click is not detected. I have middle_button_emulation enabled, but doing a simultaneous left & right mouse click has no effect. However, pressing the button and using the trackpoint does in fact allow me to scroll in any program.

How to reproduce

Relevant part of my config (but feel free to look at the systeminfo output above for the full config):

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

    scroll_method = on_button_down
    scroll_button = 274
    follow_mouse = 2
    touchpad {
        natural_scroll = yes 
        scroll_factor = 0.2
        middle_button_emulation = true
    }

    sensitivity = 0.2 # -1.0 to 1.0, 0 means no modification.
}

Crash reports, logs, images, videos

No response

vaxerski commented 2 days ago

does wev show the event? Maybe you have the middle mouse button bound to something in hyprland?

almonds-game commented 2 days ago

(Ignore the closing & reopening, was a mistake on my part) Yes, wev does register my middle clicks:

[13:      wl_pointer] button: serial: 12280; time: 14270472; button: 274 (middle), state: 0 (released)
[13:      wl_pointer] frame

And, I double checked for any bindings I might've had, but I don't have middle click in any binds :(

vaxerski commented 1 day ago

does it only show "released" or is the "pressed" event above it too?

if both are there, that's a problem with the apps.

You can also try disabling middle click paste in hyprland's config (may require a hl restart)

almonds-game commented 1 day ago

Y'know what, you're right, I do get both "pressed" and "unreleased" states at the same time, only when I release the button though:

[13:      wl_pointer] button: serial: 1623; time: 251982; button: 274 (middle), state: 1 (pressed)
[13:      wl_pointer] frame
[13:      wl_pointer] button: serial: 1624; time: 252076; button: 274 (middle), state: 0 (released)
[13:      wl_pointer] frame

I do have middle click paste disabled now, but still doesn't work normally :(

I'm not too versed in this, but considering I get both pressed & released states at the same time upon release (unlike other keys, where pressing gives me "pressed" and releasing gives me "released" at the appropriate times), could it be something related to input buffers?? I absolutely could be wrong though.

Here is a video, for others to fully get what I'm saying in regards to the press/release output. You probably can't read it due to the quality but you can certainly see 4 lines of output (including the lines saying "frame") upon releasing the middle click button, rather than the typical 2 lines for both press and release respectively for every other key that I demonstrate.

https://github.com/user-attachments/assets/aee9d6df-25c6-400d-8947-525f5567c3ac

vaxerski commented 10 hours ago

that might be a hardware thing then?