For some reason, setting the element's contentEditable value to true within a keyboard event, while the element has focus, did not allow pasting with clipboard, unless the element gets clicked explicitly.
For commands that pass a significant amount of output to the write function,
this prevents the terminal maxing out the CPU and making the UI unresponsive.
While commands can still run beyond what they do on the terminal, it is far
better with a debounce in place as every single terminal manipulation does not
need to be constructed in the DOM.
A side-effect of this is that it makes ^C to interrupt a process seem more
responsive.
Fixes#127Fixes#126
ISO third level keys were not working. That prevented some inputting
important characters (like pipe `|` and caret `^`) on some keyboard
layouts.
Instead of parsing the user-agent string to find the users os, we now
look into the `platform` attribute of the `navigator` object.
Removed the hijacking of the command key `⌘` on Mac OS as the `Alt` key
on other systems.
This commit works fixes scrolling when there were blank lines after the cursor.
Here is what it does (blank rows are those added by running `clear`):
when increasing rows:
if there are blank rows below the cursor:
add a blank row to the bottom
else if there is room in the buffer above the viewport
scroll up
else
add a blank row to the bottom
when decreasing rows:
if there are blank rows below the cursor:
remove a blank row from the bottom
else
scroll down
Fixes#111
Many systems (including MS Windows and many linuxes) map `<Ctrl>` +
`<Insert>` to copy and `<Shift> + <Insert>` to paste. That serves as a
handy fallback when the more common `<Ctrl> + C` and `<Ctrl> + V`
keybindings have their default prevented to send signals to the
terminal.
Currently all keydown-events with the insert key send `\x1b[2~` to the
terminal. This commit won't send that key if either the `shiftKey` or
the `ctrlKey` are present. Instead it will enable `contentEditable` to
allow for pasting.
Lines from the buffer were incorrectly being removed when the viewport was
resized. This change removes the lines when the cursor is above them, if not it
shifts the viewport down. Some basic jsdoc comments were added to some Terminal
properties for future reference.
Fixes#98Fixes#99