Every bind in keybinds.lua now goes through a small wrapper that substitutes the chord from a stored override. Only the chord is taken from settings; the action is always the Lua value written in that file, so an override can move a shortcut but can never make one do something else. That is the property that makes reading them from a file the user can edit safe, and it is why the alternative -- storing dispatchers -- was not considered. Overrides are keyed by the shipped chord rather than the description. Keying by description moved every bind that shared one: rebinding SUPER+C also moved the XF86Calculator hardware key onto the same chord, silently costing it. Chords are unique; descriptions are not. Applying needs hyprctl reload rather than a live hl.bind. Hyprland reports Lua-defined binds with dispatcher "__lua" and a bytecode offset, so the action cannot be reconstructed from outside to re-bind it; reload re-runs the config, which re-reads the settings file. The capture control ignores modifier-only presses, because every chord passes through them and holding Super would otherwise be captured the moment the modifier went down. It refuses a bare letter, which would swallow ordinary typing, and refuses a key with no keysym name rather than storing something that would fail to bind. Rebinding onto a chord already in use is refused rather than shadowing the existing shortcut. The refactor was verified by snapshotting all 113 binds before and after: the keymap is byte-identical, and identical again after applying an override and resetting it. Claude-Session: https://claude.ai/code/session_01BRvzt4H8XXLPVH5MyYdk9L
38 lines
1.3 KiB
Plaintext
38 lines
1.3 KiB
Plaintext
module qs.modules.settings
|
|
AboutPage 1.0 AboutPage.qml
|
|
AppearancePage 1.0 AppearancePage.qml
|
|
ConnectivityPage 1.0 ConnectivityPage.qml
|
|
HomePhonePage 1.0 HomePhonePage.qml
|
|
HomeFavoriteCard 1.0 HomeFavoriteCard.qml
|
|
AvailableLightRow 1.0 AvailableLightRow.qml
|
|
DesktopPage 1.0 DesktopPage.qml
|
|
DisplaysPage 1.0 DisplaysPage.qml
|
|
HomePage 1.0 HomePage.qml
|
|
NotificationsPage 1.0 NotificationsPage.qml
|
|
ScreenIntelligencePage 1.0 ScreenIntelligencePage.qml
|
|
ServicesPage 1.0 ServicesPage.qml
|
|
SettingRow 1.0 SettingRow.qml
|
|
SettingsCard 1.0 SettingsCard.qml
|
|
SettingsButton 1.0 SettingsButton.qml
|
|
SettingsShell 1.0 SettingsShell.qml
|
|
SettingsSidebar 1.0 SettingsSidebar.qml
|
|
SettingsToggle 1.0 SettingsToggle.qml
|
|
SettingsWindow 1.0 SettingsWindow.qml
|
|
ShortcutsPage 1.0 ShortcutsPage.qml
|
|
SoundPage 1.0 SoundPage.qml
|
|
SettingsPage 1.0 SettingsPage.qml
|
|
ToggleRow 1.0 ToggleRow.qml
|
|
SliderRow 1.0 SliderRow.qml
|
|
ChoiceRow 1.0 ChoiceRow.qml
|
|
ActionRow 1.0 ActionRow.qml
|
|
TextRow 1.0 TextRow.qml
|
|
DesktopPreview 1.0 DesktopPreview.qml
|
|
PowerPage 1.0 PowerPage.qml
|
|
DateTimePage 1.0 DateTimePage.qml
|
|
AccessibilityPage 1.0 AccessibilityPage.qml
|
|
WallpaperPicker 1.0 WallpaperPicker.qml
|
|
ApplicationsPage 1.0 ApplicationsPage.qml
|
|
DockPinsEditor 1.0 DockPinsEditor.qml
|
|
DockAppPicker 1.0 DockAppPicker.qml
|
|
ShortcutCapture 1.0 ShortcutCapture.qml
|