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.inputNodeto capture keys/IME composition and attaches appropriate events.
-
GateOne.Terminal.Input.sendChars()¶ pop()s out the current
charBufferand 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
Altkey is held the user will be able to scroll normally.
-
GateOne.Terminal.Input.onMouseMove(e)¶ Attached to the
contextmenuevent 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
Altkey is held while right-clicking the normal context menu will appear.
-
GateOne.Terminal.Input.onMouseMove(e) Attached to the
mousemoveevent on the Terminal application container when mouse event tracking is enabled; pre-setsGateOne.Terminal.mouseUpEscSeqwith the current mouse coordinates.
-
GateOne.Terminal.Input.onMouseDown(e)¶ Attached to the
mousedownevent 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
mouseupevent 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.charBufferArray (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
compositionstartevent 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.inputNodeis visible and as close to the cursor position as possible.
-
GateOne.Terminal.Input.onCompositionEnd(e)¶ Called when we encounter the
compositionendevent which indicates the IME has completed a composition. Sends what was composed to the server and ensures thatGateOne.Terminal.Input.inputNodeis 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
keyupevent; just ensures thatGateOne.Terminal.Input.inputNodeis emptied so we don't accidentally send characters we shouldn't.
-
GateOne.Terminal.Input.onInput(e)¶ Attached to the
inputevent 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+keyalso winds up being handled by this function.
-
GateOne.Terminal.Input.emulateKeyCombo(e)¶ This method translates ctrl/alt/meta key combos such as
Ctrl-cinto their string equivalents usingGateOne.Terminal.Input.keyTableand sends them to the server.
-