After reloading, sway sends bogus key events
Author: WhyNotHugoCreated Aug 25, 2025Updated Sep 17, 2026
Labelsbug
Please read the following before submitting:
Please fill out the following:
Sway Version:
sway version 1.11(although this has been an issue for years)
Configuration File:
- I don't believe that anything from my config is related, but it's available here.
Stack Trace:
- n/a
Description:
When I reload sway via a terminal, I type swaymsg reload and press Enter. The key event for this last keypress is sent multiple times (and my terminal prints a bunch of empty lines).
Here's the relevant portion of WAYLAND_DEBUG, with some comments of my own:
// This is the key event for when I press Enter after typing the command.
[ 739727.528] {Default Queue} wl_keyboard#26.key(66578, 82334358, 28, 1)
// Here foot changes its title to the command currently executing.
[ 739733.488] {Default Queue} -> xdg_toplevel#35.set_title("swaymsg reload [~]")
[ 739734.414] {Default Queue} -> wl_surface#3.damage_buffer(240, 36, 15, 36)
[ 739734.450] {Default Queue} -> wl_surface#3.damage_buffer(0, 72, 15, 36)
[ 739734.466] {Default Queue} -> wl_surface#3.frame(new id wl_callback#43)
[ 739734.479] {Default Queue} -> wl_surface#3.set_buffer_scale(1)
[ 739734.490] {Default Queue} -> wp_viewport#32.set_destination(1031, 836)
[ 739734.503] {Default Queue} -> wl_surface#3.attach(wl_buffer#42, 0, 0)
[ 739734.514] {Default Queue} -> wl_surface#3.commit()
[ 739734.525] {Default Queue} -> zwp_text_input_v3#19.set_cursor_rectangle(0, 43, 9, 21)
[ 739734.536] {Default Queue} -> zwp_text_input_v3#19.commit()
[ 739741.251] {Default Queue} wl_buffer#42.release()
[ 740622.922] {Default Queue} wl_keyboard#26.keymap(1, fd 15, 67281)
[ 740630.399] {Default Queue} wl_keyboard#26.repeat_info(25, 600)
[ 740630.407] {Default Queue} wl_keyboard#26.modifiers(66581, 0, 0, 16, 0)
[ 740632.313] {Default Queue} -> xdg_toplevel#35.set_title("zsh [~]")
[ 740671.275] {Display Queue} wl_display#1.delete_id(43)
[ 740671.282] {Default Queue} wl_callback#43.done(82335261)
[ 740672.967] {Default Queue} -> wl_surface#3.damage_buffer(0, 72, 15, 36)
[ 740672.972] {Default Queue} -> wl_surface#3.damage_buffer(0, 360, 1710, 1008)
[ 740672.975] {Default Queue} -> wl_surface#3.frame(new id wl_callback#43)
[ 740672.978] {Default Queue} -> wl_surface#3.set_buffer_scale(1)
[ 740672.980] {Default Queue} -> wp_viewport#32.set_destination(1031, 836)
[ 740672.982] {Default Queue} -> wl_surface#3.attach(wl_buffer#42, 0, 0)
[ 740672.985] {Default Queue} -> wl_surface#3.commit()
[ 740672.987] {Default Queue} -> zwp_text_input_v3#19.set_cursor_rectangle(0, 499, 9, 21)
[ 740672.990] {Default Queue} -> zwp_text_input_v3#19.commit()
// All these events are bogus events. I didn't press anything at this point.
[ 740672.992] {Default Queue} wl_keyboard#26.key(66640, 82334358, 28, 0)
[ 740672.998] {Default Queue} wl_keyboard#26.key(66641, 82334358, 28, 1)
[ 740673.006] {Default Queue} wl_keyboard#26.key(66642, 82334358, 28, 0)
[ 740673.008] {Default Queue} wl_keyboard#26.key(66643, 82334358, 28, 1)
[ 740673.011] {Default Queue} wl_keyboard#26.key(66644, 82334358, 28, 0)
[ 740673.014] {Default Queue} wl_keyboard#26.key(66645, 82334358, 28, 1)
[ 740673.017] {Default Queue} wl_keyboard#26.key(66646, 82334358, 28, 0)
[ 740673.019] {Default Queue} wl_keyboard#26.key(66647, 82334358, 28, 1)
[ 740673.022] {Default Queue} wl_keyboard#26.keymap(1, fd 15, 67229)
[ 740677.923] {Default Queue} wl_keyboard#26.modifiers(66648, 0, 0, 16, 0)
[ 740677.927] {Default Queue} wl_keyboard#26.keymap(1, fd 16, 67281)
[ 740682.752] {Default Queue} wl_keyboard#26.modifiers(66649, 0, 0, 16, 0)
[ 740682.757] {Default Queue} wl_keyboard#26.keymap(1, fd 17, 67229)
[ 740687.633] {Default Queue} wl_keyboard#26.modifiers(66650, 0, 0, 16, 0)
[ 740687.639] {Default Queue} wl_keyboard#26.keymap(1, fd 18, 67281)
[ 740692.528] {Default Queue} wl_keyboard#26.modifiers(66651, 0, 0, 16, 0)
[ 740692.533] {Default Queue} wl_keyboard#26.keymap(1, fd 19, 67229)
[ 740697.428] {Default Queue} wl_keyboard#26.modifiers(66652, 0, 0, 16, 0)
[ 740697.433] {Default Queue} wl_keyboard#26.keymap(1, fd 20, 67281)
[ 740702.292] {Default Queue} wl_keyboard#26.modifiers(66653, 0, 0, 16, 0)
[ 740702.297] {Default Queue} wl_keyboard#26.keymap(1, fd 21, 67229)
[ 740707.140] {Default Queue} wl_keyboard#26.modifiers(66654, 0, 0, 16, 0)
[ 740707.145] {Default Queue} wl_keyboard#26.keymap(1, fd 22, 67281)
[ 740712.079] {Default Queue} wl_keyboard#26.modifiers(66655, 0, 0, 16, 0)
[ 740712.085] {Default Queue} wl_keyboard#26.keymap(1, fd 23, 67229)
[ 740716.930] {Default Queue} wl_keyboard#26.modifiers(66656, 0, 0, 16, 0)
// Here are a couple more repetitions of the same key event
[ 740716.935] {Default Queue} wl_keyboard#26.key(66657, 82334358, 28, 0)
[ 740716.942] {Default Queue} wl_keyboard#26.key(66658, 82334358, 28, 1)
[ 740716.949] {Default Queue} wl_keyboard#26.key(66659, 82334358, 28, 0)
[ 740716.951] {Default Queue} wl_keyboard#26.key(66660, 82334358, 28, 1)
[ 740716.955] {Default Queue} wl_keyboard#26.key(66661, 82334358, 28, 0)
[ 740716.957] {Default Queue} wl_keyboard#26.key(66662, 82334358, 28, 1)
[ 740716.960] {Default Queue} wl_keyboard#26.key(66663, 82334358, 28, 0)
[ 740716.962] {Default Queue} wl_keyboard#26.key(66664, 82334358, 28, 1)
[ 740716.965] {Default Queue} wl_keyboard#26.keymap(1, fd 24, 67281)
[ 740721.852] {Default Queue} wl_keyboard#26.modifiers(66665, 0, 0, 16, 0)
[ 740721.858] {Default Queue} wl_keyboard#26.keymap(1, fd 25, 67229)
[ 740726.710] {Default Queue} wl_keyboard#26.modifiers(66666, 0, 0, 16, 0)
[ 740726.715] {Default Queue} wl_keyboard#26.keymap(1, fd 26, 67281)
[ 740732.329] {Default Queue} wl_keyboard#26.modifiers(66667, 0, 0, 16, 0)
[ 740732.334] {Default Queue} wl_keyboard#26.keymap(1, fd 27, 67229)
[ 740737.472] {Default Queue} wl_keyboard#26.modifiers(66668, 0, 0, 16, 0)
// Tangential, but it seems that wl_output.geometry events are delivered twice?
[ 740737.497] {Default Queue} wl_output#22.geometry(0, 0, 310, 170, 0, "ASUSTek COMPUTER INC", "ASUS PA148", 0)
[ 740737.502] {Default Queue} wl_output#22.scale(2)
[ 740737.504] {Default Queue} wl_output#24.geometry(0, 0, 800, 340, 0, "Ancor Communications Inc", "ROG PG348Q", 0)
[ 740737.507] {Default Queue} wl_output#24.scale(2)
[ 740737.509] {Default Queue} wl_output#22.geometry(0, 0, 310, 170, 0, "ASUSTek COMPUTER INC", "ASUS PA148", 0)
[ 740737.512] {Default Queue} wl_output#22.scale(2)
[ 740737.514] {Default Queue} wl_output#24.geometry(0, 0, 800, 340, 0, "Ancor Communications Inc", "ROG PG348Q", 0)
[ 740737.516] {Default Queue} wl_output#24.scale(2)
[ 740737.518] {Default Queue} wl_keyboard#26.key(66673, 82334358, 28, 0)
[ 740737.523] {Default Queue} wl_keyboard#26.key(66674, 82334358, 28, 1)
[ 740737.529] {Default Queue} wl_keyboard#26.keymap(1, fd 15, 67281)
// After this line is the next "real" event produced be me.Source: swaywm/sway