new_contents: # pylint: disable=C0111,R0903
  
  """Shows when a key is pressed
  
  Parameters:
      * keys.keys: Comma-separated list of keys to monitor (defaults to "")
  """
  
  import core.module
  import core.widget
  import core.decorators
  import core.event
  
  import util.format
  
  from pynput.keyboard import Listener
  
  NAMES = {
      "Key.cmd": "cmd",
      "Key.ctrl": "ctrl",
      "Key.shift": "shift",
      "Key.alt": "alt",
  }
  
  class Module(core.module.Module):
      @core.decorators.never
      def __init__(self, config, theme):
          super().__init__(config, theme, [])
  
          self._listener = Listener(on_press=self._key_press, on_release=self._key_release)
  
          self._keys = util.format.aslist(self.parameter("keys", "Key.cmd,Key.ctrl,Key.alt,Key.shift"))
  
          for k in self._keys:
              self.add_widget(name=k, full_text=self._display_name(k), hidden=True)
          self._listener.start()
  
      def _display_name(self, key):
          return NAMES.get(key, key)
  
      def _key_press(self, key):
          key = str(key)
          if not key in self._keys: return
          self.widget(key).hidden = False
          core.event.trigger("update", [self.id], redraw_only=False)
  
      def _key_release(self, key):
          key = str(key)
          if not key in self._keys: return
          self.widget(key).hidden = True
          core.event.trigger("update", [self.id], redraw_only=False)
      
      def state(self, widget):
          return widget.name
  
  # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
  
subject: add missing modules