code: def hook_key(key, callback, suppress=False):
      
      _listener.start_if_necessary()
      store = _listener.blocking_keys if suppress else _listener.nonblocking_keys
      scan_codes = key_to_scan_codes(key)
      for scan_code in scan_codes:
          store[scan_code].append(callback)
  
      def remove_():
          del _hooks[callback]
          del _hooks[key]
          del _hooks[remove_]
          for scan_code in scan_codes:
              store[scan_code].remove(callback)
      _hooks[callback] = _hooks[key] = _hooks[remove_] = remove_
      return remove_
docs: Hooks key up and key down events for a single key. Returns the event handler
      created. To remove a hooked key use `unhook_key(key)` or
      `unhook_key(handler)`.
  
      Note: this function shares state with hotkeys, so `clear_all_hotkeys`
      affects it aswell.