code: def kivy_on_key_up(self, browser, keyboard, key):
      # print("---- on_key_up")
      # print("-- key="+str(key))
  
      # Check if kivy-key-code is -1. This means it is a not a key which
      # should be passed to CEF. (Ex: Change keyboard layout)
      if key[0] == -1:
          return
  
      # CEF modifiers
      cef_modifiers = cefpython.EVENTFLAG_NONE
      if self.is_shift1 or self.is_shift2:
          cef_modifiers |= cefpython.EVENTFLAG_SHIFT_DOWN
      if self.is_ctrl1 or self.is_ctrl2:
          cef_modifiers |= cefpython.EVENTFLAG_CONTROL_DOWN
      if self.is_alt1:
          cef_modifiers |= cefpython.EVENTFLAG_ALT_DOWN
  
      keycode = self.get_windows_key_code(key[0])
      charcode = key[0]
  
      # Send key event to cef: KEYUP
      key_event = {
          "type": cefpython.KEYEVENT_KEYUP,
          "windows_key_code": keycode,
          "character": charcode,
          "unmodified_character": charcode,
          "modifiers": cef_modifiers,
      }
      # print("- UP SendKeyEvent: %s" % key_event)
      browser.SendKeyEvent(key_event)
  
      if key[0] == 304:
          self.is_shift1 = False
      elif key[0] == 303:
          self.is_shift2 = False
      elif key[0] == 306:
          self.is_ctrl1 = False
      elif key[0] == 305:
          self.is_ctrl2 = False
      elif key[0] == 308:
          self.is_alt1 = False
      elif key[0] == 313:
          self.is_alt2 = False
  
file_path: SerpentAI/serpent/dashboard/cefbrowser/cefkeyboard.py
imports: from kivy.core.window import Window
  from .cefpython import cefpython
label_desc: Use image node_id 6 for calling the CEFKeyboardManagerSingleton obj's underlying member method code with example usage: obj.kivy_on_key_up(browser, keyboard, key) without return types