107107 REPLACED_KEYS ,
108108 _character_to_key ,
109109 _get_unicode_name_from_key ,
110+ _normalize_key_list ,
110111 format_key ,
111112)
112113from textual .messages import CallbackType , Prune
@@ -3697,6 +3698,13 @@ def action_help_quit(self) -> None:
36973698 )
36983699 return
36993700
3701+ @classmethod
3702+ def _normalize_keymap (cls , keymap : Keymap ) -> Keymap :
3703+ """Normalizes the keys in a keymap, so they use long form, i.e. "question_mark" rather than "?"."""
3704+ return {
3705+ binding_id : _normalize_key_list (keys ) for binding_id , keys in keymap .items ()
3706+ }
3707+
37003708 def set_keymap (self , keymap : Keymap ) -> None :
37013709 """Set the keymap, a mapping of binding IDs to key strings.
37023710
@@ -3709,7 +3717,8 @@ def set_keymap(self, keymap: Keymap) -> None:
37093717 Args:
37103718 keymap: A mapping of binding IDs to key strings.
37113719 """
3712- self ._keymap = keymap
3720+
3721+ self ._keymap = self ._normalize_keymap (keymap )
37133722 self .refresh_bindings ()
37143723
37153724 def update_keymap (self , keymap : Keymap ) -> None :
@@ -3721,7 +3730,8 @@ def update_keymap(self, keymap: Keymap) -> None:
37213730 Args:
37223731 keymap: A mapping of binding IDs to key strings.
37233732 """
3724- self ._keymap = {** self ._keymap , ** keymap }
3733+
3734+ self ._keymap = {** self ._keymap , ** self ._normalize_keymap (keymap )}
37253735 self .refresh_bindings ()
37263736
37273737 def handle_bindings_clash (
0 commit comments