257 lines
4.6 KiB
TypeScript
257 lines
4.6 KiB
TypeScript
/**
|
||
* Copyright (c) 2016 The xterm.js authors. All rights reserved.
|
||
* @license MIT
|
||
*/
|
||
|
||
import { ICharset } from 'common/Types';
|
||
|
||
/**
|
||
* The character sets supported by the terminal. These enable several languages
|
||
* to be represented within the terminal with only 8-bit encoding. See ISO 2022
|
||
* for a discussion on character sets. Only VT100 character sets are supported.
|
||
*/
|
||
export const CHARSETS: { [key: string]: ICharset | undefined } = {};
|
||
|
||
/**
|
||
* The default character set, US.
|
||
*/
|
||
export const DEFAULT_CHARSET: ICharset | undefined = CHARSETS['B'];
|
||
|
||
/**
|
||
* DEC Special Character and Line Drawing Set.
|
||
* Reference: http://vt100.net/docs/vt102-ug/table5-13.html
|
||
* A lot of curses apps use this if they see TERM=xterm.
|
||
* testing: echo -e '\e(0a\e(B'
|
||
* The xterm output sometimes seems to conflict with the
|
||
* reference above. xterm seems in line with the reference
|
||
* when running vttest however.
|
||
* The table below now uses xterm's output from vttest.
|
||
*/
|
||
CHARSETS['0'] = {
|
||
'`': '\u25c6', // '◆'
|
||
'a': '\u2592', // '▒'
|
||
'b': '\u2409', // '␉' (HT)
|
||
'c': '\u240c', // '␌' (FF)
|
||
'd': '\u240d', // '␍' (CR)
|
||
'e': '\u240a', // '␊' (LF)
|
||
'f': '\u00b0', // '°'
|
||
'g': '\u00b1', // '±'
|
||
'h': '\u2424', // '' (NL)
|
||
'i': '\u240b', // '␋' (VT)
|
||
'j': '\u2518', // '┘'
|
||
'k': '\u2510', // '┐'
|
||
'l': '\u250c', // '┌'
|
||
'm': '\u2514', // '└'
|
||
'n': '\u253c', // '┼'
|
||
'o': '\u23ba', // '⎺'
|
||
'p': '\u23bb', // '⎻'
|
||
'q': '\u2500', // '─'
|
||
'r': '\u23bc', // '⎼'
|
||
's': '\u23bd', // '⎽'
|
||
't': '\u251c', // '├'
|
||
'u': '\u2524', // '┤'
|
||
'v': '\u2534', // '┴'
|
||
'w': '\u252c', // '┬'
|
||
'x': '\u2502', // '│'
|
||
'y': '\u2264', // '≤'
|
||
'z': '\u2265', // '≥'
|
||
'{': '\u03c0', // 'π'
|
||
'|': '\u2260', // '≠'
|
||
'}': '\u00a3', // '£'
|
||
'~': '\u00b7' // '·'
|
||
};
|
||
|
||
/**
|
||
* British character set
|
||
* ESC (A
|
||
* Reference: http://vt100.net/docs/vt220-rm/table2-5.html
|
||
*/
|
||
CHARSETS['A'] = {
|
||
'#': '£'
|
||
};
|
||
|
||
/**
|
||
* United States character set
|
||
* ESC (B
|
||
*/
|
||
CHARSETS['B'] = undefined;
|
||
|
||
/**
|
||
* Dutch character set
|
||
* ESC (4
|
||
* Reference: http://vt100.net/docs/vt220-rm/table2-6.html
|
||
*/
|
||
CHARSETS['4'] = {
|
||
'#': '£',
|
||
'@': '¾',
|
||
'[': 'ij',
|
||
'\\': '½',
|
||
']': '|',
|
||
'{': '¨',
|
||
'|': 'f',
|
||
'}': '¼',
|
||
'~': '´'
|
||
};
|
||
|
||
/**
|
||
* Finnish character set
|
||
* ESC (C or ESC (5
|
||
* Reference: http://vt100.net/docs/vt220-rm/table2-7.html
|
||
*/
|
||
CHARSETS['C'] =
|
||
CHARSETS['5'] = {
|
||
'[': 'Ä',
|
||
'\\': 'Ö',
|
||
']': 'Å',
|
||
'^': 'Ü',
|
||
'`': 'é',
|
||
'{': 'ä',
|
||
'|': 'ö',
|
||
'}': 'å',
|
||
'~': 'ü'
|
||
};
|
||
|
||
/**
|
||
* French character set
|
||
* ESC (R
|
||
* Reference: http://vt100.net/docs/vt220-rm/table2-8.html
|
||
*/
|
||
CHARSETS['R'] = {
|
||
'#': '£',
|
||
'@': 'à',
|
||
'[': '°',
|
||
'\\': 'ç',
|
||
']': '§',
|
||
'{': 'é',
|
||
'|': 'ù',
|
||
'}': 'è',
|
||
'~': '¨'
|
||
};
|
||
|
||
/**
|
||
* French Canadian character set
|
||
* ESC (Q
|
||
* Reference: http://vt100.net/docs/vt220-rm/table2-9.html
|
||
*/
|
||
CHARSETS['Q'] = {
|
||
'@': 'à',
|
||
'[': 'â',
|
||
'\\': 'ç',
|
||
']': 'ê',
|
||
'^': 'î',
|
||
'`': 'ô',
|
||
'{': 'é',
|
||
'|': 'ù',
|
||
'}': 'è',
|
||
'~': 'û'
|
||
};
|
||
|
||
/**
|
||
* German character set
|
||
* ESC (K
|
||
* Reference: http://vt100.net/docs/vt220-rm/table2-10.html
|
||
*/
|
||
CHARSETS['K'] = {
|
||
'@': '§',
|
||
'[': 'Ä',
|
||
'\\': 'Ö',
|
||
']': 'Ü',
|
||
'{': 'ä',
|
||
'|': 'ö',
|
||
'}': 'ü',
|
||
'~': 'ß'
|
||
};
|
||
|
||
/**
|
||
* Italian character set
|
||
* ESC (Y
|
||
* Reference: http://vt100.net/docs/vt220-rm/table2-11.html
|
||
*/
|
||
CHARSETS['Y'] = {
|
||
'#': '£',
|
||
'@': '§',
|
||
'[': '°',
|
||
'\\': 'ç',
|
||
']': 'é',
|
||
'`': 'ù',
|
||
'{': 'à',
|
||
'|': 'ò',
|
||
'}': 'è',
|
||
'~': 'ì'
|
||
};
|
||
|
||
/**
|
||
* Norwegian/Danish character set
|
||
* ESC (E or ESC (6
|
||
* Reference: http://vt100.net/docs/vt220-rm/table2-12.html
|
||
*/
|
||
CHARSETS['E'] =
|
||
CHARSETS['6'] = {
|
||
'@': 'Ä',
|
||
'[': 'Æ',
|
||
'\\': 'Ø',
|
||
']': 'Å',
|
||
'^': 'Ü',
|
||
'`': 'ä',
|
||
'{': 'æ',
|
||
'|': 'ø',
|
||
'}': 'å',
|
||
'~': 'ü'
|
||
};
|
||
|
||
/**
|
||
* Spanish character set
|
||
* ESC (Z
|
||
* Reference: http://vt100.net/docs/vt220-rm/table2-13.html
|
||
*/
|
||
CHARSETS['Z'] = {
|
||
'#': '£',
|
||
'@': '§',
|
||
'[': '¡',
|
||
'\\': 'Ñ',
|
||
']': '¿',
|
||
'{': '°',
|
||
'|': 'ñ',
|
||
'}': 'ç'
|
||
};
|
||
|
||
/**
|
||
* Swedish character set
|
||
* ESC (H or ESC (7
|
||
* Reference: http://vt100.net/docs/vt220-rm/table2-14.html
|
||
*/
|
||
CHARSETS['H'] =
|
||
CHARSETS['7'] = {
|
||
'@': 'É',
|
||
'[': 'Ä',
|
||
'\\': 'Ö',
|
||
']': 'Å',
|
||
'^': 'Ü',
|
||
'`': 'é',
|
||
'{': 'ä',
|
||
'|': 'ö',
|
||
'}': 'å',
|
||
'~': 'ü'
|
||
};
|
||
|
||
/**
|
||
* Swiss character set
|
||
* ESC (=
|
||
* Reference: http://vt100.net/docs/vt220-rm/table2-15.html
|
||
*/
|
||
CHARSETS['='] = {
|
||
'#': 'ù',
|
||
'@': 'à',
|
||
'[': 'é',
|
||
'\\': 'ç',
|
||
']': 'ê',
|
||
'^': 'î',
|
||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
||
'_': 'è',
|
||
'`': 'ô',
|
||
'{': 'ä',
|
||
'|': 'ö',
|
||
'}': 'ü',
|
||
'~': 'û'
|
||
};
|