Version: 2.15.1 · Layout: kb_layout = "be" (Belgian AZERTY) · Hyprland 0.56.2
Problem
conf/keybindings/default.lua:16 enables AZERTY key names only for exactly fr:
if content:match('kb_layout%s*=%s*"fr"') and not content:match('kb_variant%s*=%s*"us"') then
With kb_layout = "be", is_fr stays false, so the loop at line 28 binds literal digits. On AZERTY layouts the digits are at shift level 2, so neither SUPER + <n> nor SUPER + SHIFT + <n> ever fires — all 20 workspace binds are silently dead. hyprctl binds shows them registered on keys 1–0, they just can't be produced without SHIFT.
fr_keys is also not reusable for be
Belgian and French differ at indices 6 and 8 (/usr/share/X11/xkb/symbols/):
| index |
fr_keys (line 22) |
Belgian actual |
| 6 |
minus |
section |
| 8 |
underscore |
exclam |
be: key <AE06> {[ section, 6, asciicircum, fiveeighths ]};
key <AE08> {[ exclam, 8, bracketleft, trademark ]};
fr: key <AE06> {[ minus, 6, bar, fiveeighths ]};
key <AE08> {[ underscore, 8, backslash, trademark ]};
So extending the match to be alone would still leave workspaces 6 and 8 broken.
Suggested fix
Key the table on the layout rather than a boolean:
local azerty_keys = {
fr = { "ampersand","eacute","quotedbl","apostrophe","parenleft",
"minus","egrave","underscore","ccedilla","agrave" },
be = { "ampersand","eacute","quotedbl","apostrophe","parenleft",
"section","egrave","exclam","ccedilla","agrave" },
}
Workaround
In custom.lua. Hyprland dispatches every matching bind rather than the first, so the dead digit binds must be unbound, not just shadowed:
local be_keys = { "ampersand","eacute","quotedbl","apostrophe","parenleft",
"section","egrave","exclam","ccedilla","agrave" }
for i = 1, 10 do
local digit = i % 10
hl.unbind("SUPER + " .. digit)
hl.unbind("SUPER + SHIFT + " .. digit)
hl.bind("SUPER + " .. be_keys[i], hl.dsp.focus({ workspace = i }), {})
hl.bind("SUPER + SHIFT + " .. be_keys[i], hl.dsp.window.move({ workspace = i }), {})
end
Version: 2.15.1 · Layout:
kb_layout = "be"(Belgian AZERTY) · Hyprland 0.56.2Problem
conf/keybindings/default.lua:16enables AZERTY key names only for exactlyfr:With
kb_layout = "be",is_frstaysfalse, so the loop at line 28 binds literal digits. On AZERTY layouts the digits are at shift level 2, so neitherSUPER + <n>norSUPER + SHIFT + <n>ever fires — all 20 workspace binds are silently dead.hyprctl bindsshows them registered on keys1–0, they just can't be produced without SHIFT.fr_keysis also not reusable forbeBelgian and French differ at indices 6 and 8 (
/usr/share/X11/xkb/symbols/):fr_keys(line 22)minussectionunderscoreexclamSo extending the match to
bealone would still leave workspaces 6 and 8 broken.Suggested fix
Key the table on the layout rather than a boolean:
Workaround
In
custom.lua. Hyprland dispatches every matching bind rather than the first, so the dead digit binds must be unbound, not just shadowed: