mirror of
https://github.com/1f349/voidterm.git
synced 2024-11-13 23:41:38 +00:00
65 lines
2.0 KiB
Go
65 lines
2.0 KiB
Go
package termutil
|
|
|
|
var charSets = map[rune]*map[rune]rune{
|
|
'0': &decSpecGraphics,
|
|
'B': nil, // ASCII
|
|
// @todo 1,2,A
|
|
}
|
|
|
|
var decSpecGraphics = map[rune]rune{
|
|
0x5f: 0x00A0, // NO-BREAK SPACE
|
|
0x60: 0x25C6, // BLACK DIAMOND
|
|
0x61: 0x2592, // MEDIUM SHADE
|
|
0x62: 0x2409, // SYMBOL FOR HORIZONTAL TABULATION
|
|
0x63: 0x240C, // SYMBOL FOR FORM FEED
|
|
0x64: 0x240D, // SYMBOL FOR CARRIAGE RETURN
|
|
0x65: 0x240A, // SYMBOL FOR LINE FEED
|
|
0x66: 0x00B0, // DEGREE SIGN
|
|
0x67: 0x00B1, // PLUS-MINUS SIGN
|
|
0x68: 0x2424, // SYMBOL FOR NEWLINE
|
|
0x69: 0x240B, // SYMBOL FOR VERTICAL TABULATION
|
|
0x6a: 0x2518, // BOX DRAWINGS LIGHT UP AND LEFT
|
|
0x6b: 0x2510, // BOX DRAWINGS LIGHT DOWN AND LEFT
|
|
0x6c: 0x250C, // BOX DRAWINGS LIGHT DOWN AND RIGHT
|
|
0x6d: 0x2514, // BOX DRAWINGS LIGHT UP AND RIGHT
|
|
0x6e: 0x253C, // BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
|
|
0x6f: 0x23BA, // HORIZONTAL SCAN LINE-1
|
|
0x70: 0x23BB, // HORIZONTAL SCAN LINE-3
|
|
0x71: 0x2500, // BOX DRAWINGS LIGHT HORIZONTAL
|
|
0x72: 0x23BC, // HORIZONTAL SCAN LINE-7
|
|
0x73: 0x23BD, // HORIZONTAL SCAN LINE-9
|
|
0x74: 0x251C, // BOX DRAWINGS LIGHT VERTICAL AND RIGHT
|
|
0x75: 0x2524, // BOX DRAWINGS LIGHT VERTICAL AND LEFT
|
|
0x76: 0x2534, // BOX DRAWINGS LIGHT UP AND HORIZONTAL
|
|
0x77: 0x252C, // BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
|
|
0x78: 0x2502, // BOX DRAWINGS LIGHT VERTICAL
|
|
0x79: 0x2264, // LESS-THAN OR EQUAL TO
|
|
0x7a: 0x2265, // GREATER-THAN OR EQUAL TO
|
|
0x7b: 0x03C0, // GREEK SMALL LETTER PI
|
|
0x7c: 0x2260, // NOT EQUAL TO
|
|
0x7d: 0x00A3, // POUND SIGN
|
|
0x7e: 0x00B7, // MIDDLE DOT
|
|
}
|
|
|
|
func (t *Terminal) handleSCS0(pty chan MeasuredRune) bool {
|
|
return t.scsHandler(pty, 0)
|
|
}
|
|
|
|
func (t *Terminal) handleSCS1(pty chan MeasuredRune) bool {
|
|
return t.scsHandler(pty, 1)
|
|
}
|
|
|
|
func (t *Terminal) scsHandler(pty chan MeasuredRune, which int) bool {
|
|
b := <-pty
|
|
|
|
cs, ok := charSets[b.Rune]
|
|
if ok {
|
|
//terminal.logger.Debugf("Selected charset %v into G%v", string(b), which)
|
|
t.activeBuffer.charsets[which] = cs
|
|
return false
|
|
}
|
|
|
|
t.activeBuffer.charsets[which] = nil
|
|
return false
|
|
}
|