class_docstr: Pyglet backend for Canvas abstract class.
class_docstr_tok: ["Pyglet","backend","for","Canvas","abstract","class","."]
code: def on_key_release(self, key, modifiers):
      # Process modifiers
      if key in (
          pyglet.window.key.LCTRL,
          pyglet.window.key.RCTRL,
          pyglet.window.key.LALT,
          pyglet.window.key.RALT,
          pyglet.window.key.LSHIFT,
          pyglet.window.key.RSHIFT,
      ):
          self._current_modifiers.discard(key)
      # Get txt
      try:
          text = chr(key)
      except Exception:
          text = ""
      # Emit
      self._vispy_canvas.events.key_release(
          key=self._processKey(key),
          text=text,
          modifiers=self._modifiers(modifiers),
      )
  
imports: from __future__ import division
  from packaging.version import Version
  from time import sleep
  from ..base import BaseApplicationBackend, BaseCanvasBackend, BaseTimerBackend
  from ...util import keys
  from ...util.ptime import time
  from ...None import config
label_desc: Use image node_id 30 for calling the CanvasBackend obj's underlying member method code with example usage: obj.on_key_release(key, modifiers) without return types