isoterm
Version:
A Terminal With Precisely Configurable Fonts Using CSS Unicode Ranges
200 lines (171 loc) • 6.81 kB
text/coffeescript
'use strict'
console.log '^ops-late@4^', 'OK'
log "^ops-late@5^ OPS loaded"
console.log '^ops-late@5^', term
copy_keys = [
'xxx'
'key'
'code'
'keyCode' ]
modifier_names = [
'Alt'
'AltGraph'
'Control'
'Meta'
'Shift'
'CapsLock' ]
locations = [
'standard'
'left'
'right'
'numpad' ]
xxx_from_event = ( event ) ->
d = {}
d[ k ] = event[ k ] for k in copy_keys
xxx = []
location = locations[ event.location ]
if location isnt 'standard'
d.location = location
xxx.push location
for k in modifier_names
continue unless event.getModifierState k
xxx.push k
d[ k ] = true
xxx.push d.key
d.xxx = xxx.join '+'
d.event = event
return d
handle_hotkeys = ( d ) ->
switch d.xxx
when 'Control+l'
log '^ops-late@6^', "prevent activation of address bar"
d.event.stopPropagation()
d.event.preventDefault()
return false
when 'Control+q'
log '^ops-late@6^', "quit app"
d.event.stopPropagation()
d.event.preventDefault()
return false
return null
handle_keys = ( event ) ->
log '^ops-late@7^', event
log '^ops-late@7^', xxx_from_event event
return handle_hotkeys xxx_from_event event
µ.DOM.on document.documentElement, 'keydown', ( event ) -> handle_keys event
term.onKey ( event ) -> handle_keys event.domEvent
log '^ops-late@7^', require 'guy'
log '^ops-late@7^', require 'datom'
public addMarker(cursorYOffset: number): IMarker | undefined {
public attachCustomKeyEventHandler(customKeyEventHandler: CustomKeyEventHandler): void {
public bell(): void {
public bindMouse(): void {
public blur(): void {
public browser: IBrowser = Browser as any;
public cancel(ev: Event, force?: boolean): boolean | undefined {
public clear(): void {
public clearSelection(): void {
public clearTextureAtlas(): void {
public deregisterCharacterJoiner(joinerId: number): void {
public deregisterLinkMatcher(matcherId: number): void {
public dispose(): void {
public element: HTMLElement | undefined;
public focus(): void {
public get buffer(): IBuffer {
public get markers(): IMarker[] {
public get onA11yChar(): IEvent<string> { return this._onA11yCharEmitter.event; }
public get onA11yTab(): IEvent<number> { return this._onA11yTabEmitter.event; }
public get onBell(): IEvent<void> { return this._onBell.event; }
public get onBlur(): IEvent<void> { return this._onBlur.event; }
public get onCursorMove(): IEvent<void> { return this._onCursorMove.event; }
public get onFocus(): IEvent<void> { return this._onFocus.event; }
public get onKey(): IEvent<{ key: string, domEvent: KeyboardEvent }> { return this._onKey.event; }
public get onRender(): IEvent<{ start: number, end: number }> { return this._onRender.event; }
public get onSelectionChange(): IEvent<void> { return this._onSelectionChange.event; }
public get onTitleChange(): IEvent<string> { return this._onTitleChange.event; }
public getSelection(): string {
public getSelectionPosition(): ISelectionPosition | undefined {
public hasSelection(): boolean {
public linkifier2: ILinkifier2;
public linkifier: ILinkifier;
public open(parent: HTMLElement): void {
public paste(data: string): void {
public refresh(start: number, end: number): void {
public registerCharacterJoiner(handler: CharacterJoinerHandler): number {
public registerDecoration(decorationOptions: IDecorationOptions): IDecoration | undefined {
public registerLinkMatcher(regex: RegExp, handler: LinkMatcherHandler, options?: ILinkMatcherOptions): number {
public registerLinkProvider(linkProvider: ILinkProvider): IDisposable {
public reset(): void {
public resize(x: number, y: number): void {
public screenElement: HTMLElement | undefined;
public scrollLines(disp: number, suppressScrollEvent?: boolean, source = ScrollSource.TERMINAL): void {
public select(column: number, row: number, length: number): void {
public selectAll(): void {
public selectLines(start: number, end: number): void {
public textarea: HTMLTextAreaElement | undefined;
public updateCursorStyle(ev: KeyboardEvent): void {
public viewport: IViewport | undefined;