terminal: add ctrl-shift-l to refresh xterm.js rendering

This is a temporary workaround for
https://github.com/xtermjs/xterm.js/issues/3878.

Bug: b/236205389
Change-Id: I7a669258e9c4e7958a04498abea590e535cb3a55
Reviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/3868649
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Joel Hockey <joelhockey@chromium.org>
diff --git a/terminal/js/terminal_emulator.js b/terminal/js/terminal_emulator.js
index b821926..bf9c2c0 100644
--- a/terminal/js/terminal_emulator.js
+++ b/terminal/js/terminal_emulator.js
@@ -655,6 +655,20 @@
       set(modifiers | Modifier.Shift, keyCode, func);
     };
 
+    // Temporary shortcut to refresh the rendering in case of rendering errors.
+    // TODO(lxj): remove after this is fixed:
+    // https://github.com/xtermjs/xterm.js/issues/3878
+    set(Modifier.Ctrl | Modifier.Shift, keyCodes.L,
+        /** @suppress {missingProperties} */
+        () => {
+          this.scheduleRefreshFont_();
+          // Refresh the cursor layer.
+          if (this.enableWebGL_) {
+            this.term?._core?._renderService?._renderer?._renderLayers[1]
+                ?._clearAll();
+          }
+        },
+    );
 
     // Ctrl+/
     set(Modifier.Ctrl, 191, (ev) => {