code: def register_key_binding(self, keydef, callback_or_cmd, mode='force'):
          
          if not re.match(r'(Shift+)?(Ctrl+)?(Alt+)?(Meta+)?(.|\w+)', keydef):
              raise ValueError('Invalid keydef. Expected format: [Shift+][Ctrl+][Alt+][Meta+]<key>\n'
                      '<key> is either the literal character the key produces (ASCII or Unicode character), or a '
                      'symbolic name (as printed by --input-keylist')
          binding_name = MPV._binding_name(keydef)
          if callable(callback_or_cmd):
              self._key_binding_handlers[binding_name] = callback_or_cmd
              self.register_message_handler('key-binding', self._handle_key_binding_message)
              self.command('define-section',
                      binding_name, '{} script-binding py_event_handler/{}'.format(keydef, binding_name), mode)
          elif isinstance(callback_or_cmd, str):
              self.command('define-section', binding_name, '{} {}'.format(keydef, callback_or_cmd), mode)
          else:
              raise TypeError('register_key_binding expects either an str with an mpv command or a python callable.')
          self.command('enable-section', binding_name, 'allow-hide-cursor+allow-vo-dragging')
docs: Register a key binding. This takes an mpv keydef and either a string containing a mpv command or a python
          callback function.  See ``MPV.key_binding`` for details.