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
Allow importing xterm into a nodejs application (for instance an electron
application, or perhaps a test environment using phantomjs which
also has a DOM),