* Return Caps Lock to normal and make Shift + Caps Lock the compose key Caps Lock as compose, with both Shifts as Caps Lock, confused too many people. Stock XKB has no option for compose on the shifted Caps key, so Omarchy defines one in /etc/xkb, which libxkbcommon reads before the system rules. The explicit actions keep the Shift level from toggling Caps Lock. Lone Shift is no longer part of Caps Lock, which leaves it free for input methods. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Require xkbcli so the keymap check cannot silently skip Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
72 lines
2.3 KiB
Lua
72 lines
2.3 KiB
Lua
-- https://wiki.hypr.land/Configuring/Basics/Variables/#input
|
|
|
|
local keyboard = require("default.hypr.keyboard")
|
|
|
|
-- Layouts that can't type Latin letters. Keep in sync with the list in
|
|
-- etc/mkinitcpio.conf.d/omarchy_hooks.conf.
|
|
local non_latin_layouts =
|
|
" af am ara bd bg by et ge gr il in iq ir kg kh kz la lk mk mm mn mv np rs ru sy th tj ua "
|
|
|
|
local vconsole = keyboard.selected()
|
|
|
|
local kb_layout = vconsole.XKBLAYOUT or "us"
|
|
local kb_variant = vconsole.XKBVARIANT or ""
|
|
-- Caps Lock is Caps Lock, and Shift + Caps Lock is the compose key. Stock XKB
|
|
-- has no such option, so Omarchy defines it in /etc/xkb.
|
|
local kb_options = "omarchy:shift_caps_compose"
|
|
|
|
-- Hyprland resolves keybindings against the first entry in kb_layout, not the
|
|
-- layout that's currently active, so Omarchy's Latin-keysym bindings (SUPER + W
|
|
-- and friends) only fire when a Latin layout leads. Installing with a non-Latin
|
|
-- one would otherwise leave the desktop unusable.
|
|
if non_latin_layouts:find(" " .. kb_layout:match("^[^,]*") .. " ", 1, true) then
|
|
kb_layout = "us," .. kb_layout
|
|
kb_variant = "," .. kb_variant
|
|
-- Reach the original layout with Left Alt + Right Alt.
|
|
kb_options = kb_options .. ",grp:alts_toggle"
|
|
end
|
|
|
|
-- Saved selections already include their Latin-leading layout. Keep the
|
|
-- installer's layout-switching shortcut when a non-Latin layout remains.
|
|
if not kb_options:find("grp:alts_toggle", 1, true) then
|
|
for layout in kb_layout:gmatch("[^,]+") do
|
|
if non_latin_layouts:find(" " .. layout .. " ", 1, true) then
|
|
kb_options = kb_options .. ",grp:alts_toggle"
|
|
break
|
|
end
|
|
end
|
|
end
|
|
|
|
hl.config({
|
|
input = {
|
|
kb_layout = kb_layout,
|
|
kb_variant = kb_variant,
|
|
kb_model = "",
|
|
kb_options = kb_options,
|
|
kb_rules = "",
|
|
follow_mouse = 1,
|
|
sensitivity = 0,
|
|
|
|
repeat_rate = 40,
|
|
repeat_delay = 250,
|
|
numlock_by_default = true,
|
|
|
|
touchpad = {
|
|
natural_scroll = false,
|
|
clickfinger_behavior = true,
|
|
scroll_factor = 0.4,
|
|
},
|
|
},
|
|
|
|
misc = {
|
|
key_press_enables_dpms = true,
|
|
mouse_move_enables_dpms = true,
|
|
},
|
|
})
|
|
|
|
-- Scroll nicely in the terminal.
|
|
o.window("(Alacritty|kitty)", { scroll_touchpad = 1.5 })
|
|
-- foot only applies its scrollback multiplier to wheel clicks, not precise touchpad scrolling.
|
|
o.window("foot", { scroll_touchpad = 2.0 })
|
|
o.window("com.mitchellh.ghostty", { scroll_touchpad = 0.2 })
|