self._history += [self._input_buffer[:]]
                 self._reset_buffer('')
 
+    def cmd__append(self, to_append: str) -> None:
+        'Append to prompt input buffer.'
+        self.append(to_append)
+
     def cmd__backspace(self) -> None:
         'Truncate current content by one character, if possible.'
         if self._cursor_x > 0:
                     to_paste += ' '
                 else:
                     to_paste += '#'
-            self.broadcast(EventType.PROMPT_ADD, to_paste)
+            self.broadcast(EventType.TUI_CMD,
+                           ('window.prompt.append', to_paste))
         elif yielded in _KEYBINDINGS:
-            self.broadcast(EventType.KEYBINDING, _KEYBINDINGS[yielded])
+            self.broadcast(EventType.TUI_CMD, _KEYBINDINGS[yielded])
         elif len(yielded) == 1:
-            self.broadcast(EventType.PROMPT_ADD, yielded)
+            self.broadcast(EventType.TUI_CMD,
+                           ('window.prompt.append', yielded))
         else:
             self.broadcast(EventType.LOG,
                            f'ALERT: unknown keyboard input: {yielded}')
             conn_win.prompt.update_prompt(nick_confirmed=False)
             if conn_win == self.window:
                 self.window.prompt.draw()
-        elif event.type_ == EventType.KEYBINDING:
+        elif event.type_ == EventType.TUI_CMD:
             cmd = self._cmd_name_to_cmd(event.payload[0])
             assert cmd is not None
             cmd(*event.payload[1:])
-        elif event.type_ == EventType.PROMPT_ADD:
-            self.window.prompt.append(event.payload)
         # elif event.type_ == EventType.DEBUG:
         #     from traceback import format_exception
         #     for line in '\n'.join(format_exception(event.payload)