terminal_input.js¶
Gate One's bundled Terminal application JavaScript (Input module) (source).
-
GateOne.Terminal.
Input
¶ Terminal-specific keyboard and mouse input stuff.
-
GateOne.Terminal.Input.
init
()¶ Creates
GateOne.Terminal.Input.inputNode
to capture keys/IME composition and attaches appropriate events.
-
GateOne.Terminal.Input.
sendChars
()¶ pop()s out the current
charBuffer
and sends it to the server.
-
GateOne.Terminal.Input.
onMouseWheel
(e)¶ Attached to the mousewheel event on the Terminal application container; calls
preventDefault()
if "mouse motion" event tracking mode is enabled and instead sends equivalent xterm escape sequences to the server to emulate mouse scroll events.If the
Alt
key is held the user will be able to scroll normally.
-
GateOne.Terminal.Input.
onMouseMove
(e)¶ Attached to the
contextmenu
event on the Terminal application container; callspreventDefault()
if "mouse motion" event tracking mode is enabled to prevent the usual context menu from popping up.If the
Alt
key is held while right-clicking the normal context menu will appear.
-
GateOne.Terminal.Input.
onMouseMove
(e) Attached to the
mousemove
event on the Terminal application container when mouse event tracking is enabled; pre-setsGateOne.Terminal.mouseUpEscSeq
with the current mouse coordinates.
-
GateOne.Terminal.Input.
onMouseDown
(e)¶ Attached to the
mousedown
event on the Terminal application container; performs the following actions based on which mouse button was used:- Left-click: Hides the pastearea.
- Right-click: If no text is highlighted in the terminal, makes sure the pastearea is visible and has focus.
- Middle-click: Makes sure the pastearea is visible and has focus so that middle-click-to-paste events (X11) will work properly. Alternatively, if there is highlighted text in the terminal a paste event will be emulated (regardless of platform).
-
GateOne.Terminal.Input.
onMouseUp
(e)¶ Attached to the
mouseup
event on the Terminal application container; prevents the pastearea from being shown if text is highlighted in the terminal (so users can right-click to copy). Also prevents the pastearea from being instantly re-enabled when clicking in order to allow double-click events to pass through to the terminal (to highlight words).The last thing this function does every time it is called is to change focus to
GateOne.Terminal.Input.inputNode
.
-
GateOne.Terminal.Input.
onCopy
(e)¶ Returns all 'pastearea' elements to a visible state after a copy operation so that the browser's regular context menu will be usable again (for pasting). Also displays a message to the user letting them know that the text was copied successfully (because having your highlighted text suddenly disappear isn't that intuitive).
-
GateOne.Terminal.Input.
capture
()¶ Sets focus on the terminal and attaches all the relevant events (mousedown, mouseup, keydown, etc).
-
GateOne.Terminal.Input.
disableCapture
(e[, force])¶ Disables the various input events that capture mouse and keystroke events. This allows things like input elements and forms to work properly (so keystrokes can pass through without intervention).
-
GateOne.Terminal.Input.
onPaste
(e)¶ Attached to the 'paste' event on the terminal application container; converts pasted text to plaintext and sends it to the selected terminal.
-
GateOne.Terminal.Input.
queue
(text)¶ Adds 'text' to the
GateOne.Terminal.Input.charBuffer
Array (to be sent to the server when ready viaGateOne.Terminal.sendChars()
).
-
GateOne.Terminal.Input.
queue
(cars) Prepends the ESC key string (
String.fromCharCode(27)
) to special character sequences (e.g. PgUp, PgDown, Arrow keys, etc) before adding them to the charBuffer
-
GateOne.Terminal.Input.
onCompositionStart
(e)¶ Called when we encounter the
compositionstart
event which indicates the use of an IME. That would most commonly be a mobile phone software keyboard or foreign language input methods (e.g. Anthy for Japanese, Chinese, etc).Ensures that
GateOne.Terminal.Input.inputNode
is visible and as close to the cursor position as possible.
-
GateOne.Terminal.Input.
onCompositionEnd
(e)¶ Called when we encounter the
compositionend
event which indicates the IME has completed a composition. Sends what was composed to the server and ensures thatGateOne.Terminal.Input.inputNode
is emptied & hidden.
-
GateOne.Terminal.Input.
onCompositionUpdate
(e)¶ Called when we encounter the 'compositionupdate' event which indicates incoming characters; sets
GateOne.Terminal.Input.composition
.
-
GateOne.Terminal.Input.
onKeyUp
(e)¶ Called when the terminal encounters a
keyup
event; just ensures thatGateOne.Terminal.Input.inputNode
is emptied so we don't accidentally send characters we shouldn't.
-
GateOne.Terminal.Input.
onInput
(e)¶ Attached to the
input
event onGateOne.Terminal.Input.inputNode
; sends its contents. If the user is in the middle of composing text via an IME it will wait until their composition is complete before sending the characters.
-
GateOne.Terminal.Input.
onKeyDown
(e)¶ Handles keystroke events by determining which kind of event occurred and how/whether it should be sent to the server as specific characters or escape sequences.
-
GateOne.Terminal.Input.
execKeystroke
(e)¶ For the Terminal application, executes the keystroke or shortcut associated with the given keydown event (e).
-
GateOne.Terminal.Input.
emulateKey
(e, skipF11check)¶ This method handles all regular keys registered via onkeydown events (not onkeypress) If skipF11check is true, the F11 (fullscreen check) logic will be skipped.
Note
Shift+key
also winds up being handled by this function.
-
GateOne.Terminal.Input.
emulateKeyCombo
(e)¶ This method translates ctrl/alt/meta key combos such as
Ctrl-c
into their string equivalents usingGateOne.Terminal.Input.keyTable
and sends them to the server.
-