diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 8e0af09c3a1..975bcdf7312 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -785,7 +785,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "
[category]
"
for (var/i in kb_categories[category])
var/datum/keybinding/kb = i
- if(!length(user_binds[kb.name]))
+ if(!length(user_binds[kb.name]) || user_binds[kb.name][1] == "Unbound")
dat += " Unbound"
var/list/default_keys = hotkeys ? kb.hotkey_keys : kb.classic_keys
if(LAZYLEN(default_keys))
@@ -1654,6 +1654,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
full_key = "[AltMod][CtrlMod][new_key]"
else
full_key = "[AltMod][CtrlMod][ShiftMod][numpad][new_key]"
+ if(kb_name in key_bindings[full_key]) //We pressed the same key combination that was already bound here, so let's remove to re-add and re-sort.
+ key_bindings[full_key] -= kb_name
if(key_bindings[old_key])
key_bindings[old_key] -= kb_name
if(!length(key_bindings[old_key]))