VT100TerminalView.st
author Jan Vrany <jan.vrany@labware.com>
Mon, 26 Oct 2020 22:34:32 +0000
branchjv
changeset 6247 a1272bf7ae91
parent 6066 fc59a1fcfdcd
child 6248 d11aff65e4cf
permissions -rw-r--r--
`LinkButton`: Use `emphasisAtX:on:` instead of `emphasisAtPoint:on:`
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1361
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
     1
"
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
     2
 COPYRIGHT (c) 1998 by eXept Software AG
5814
70d07365a2d4 Copyright updates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5568
diff changeset
     3
 COPYRIGHT (c) 2017 Jan Vrany
1361
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
     4
              All Rights Reserved
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
     5
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
     6
 This software is furnished under a license and may be used
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
     7
 only in accordance with the terms of that license and with the
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
     8
 inclusion of the above copyright notice.   This software may not
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
     9
 be provided or otherwise made available to, or used by, any
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
    10
 other person.  No title to or ownership of the software is
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
    11
 hereby transferred.
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
    12
"
2076
60558bc12d09 public access to filterStream;
Michael Beyl <mb@exept.de>
parents: 1667
diff changeset
    13
"{ Package: 'stx:libwidg2' }"
60558bc12d09 public access to filterStream;
Michael Beyl <mb@exept.de>
parents: 1667
diff changeset
    14
4800
92d8d63251d8 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4560
diff changeset
    15
"{ NameSpace: Smalltalk }"
92d8d63251d8 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4560
diff changeset
    16
930
3186aa6efe72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
    17
TerminalView subclass:#VT100TerminalView
998
4915be34a1d7 state instvar moved
Claus Gittinger <cg@exept.de>
parents: 978
diff changeset
    18
	instanceVariableNames:'currentParam parameters lastCursorLine'
4269
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
    19
	classVariableNames:'TraceCSI'
920
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	poolDictionaries:''
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
	category:'Views-TerminalViews'
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
!
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    24
!VT100TerminalView class methodsFor:'documentation'!
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    25
2116
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    26
ansiEscapes
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    27
"
4291
fd935fa1dfec class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4289
diff changeset
    28
   see also: http://www.vt100.net/docs/vt100-ug/chapter3.html
fd935fa1dfec class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4289
diff changeset
    29
2116
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    30
                              ANSI ESCAPE SEQUENCES
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    31
===============================================================================
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    32
Wherever you see '#', that should be replaced by the appropriate number.
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    33
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    34
        ESC code sequence                       Function
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    35
       -------------------              ---------------------------
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    36
Cursor Controls:
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    37
         ESC[#;#H or ESC[#;#f           Moves cusor to line #, column #
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    38
         ESC[#A                         Moves cursor up # lines
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    39
         ESC[#B                         Moves cursor down # lines
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    40
         ESC[#C                         Moves cursor forward # spaces
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    41
         ESC[#D                         Moves cursor back # spaces
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    42
         ESC[#;#R                       Reports current cursor line & column
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    43
         ESC[s                          Saves cursor position for recall later
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    44
         ESC[u                          Return to saved cursor position
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    45
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    46
Erase Functions:
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    47
         ESC[2J                         Clear screen and home cursor
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    48
         ESC[K                          Clear to end of line
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    49
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    50
Set Graphics Rendition:
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    51
         ESC[#;#;....;#m                Set display attributes where # is
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    52
                                            0 for normal display
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    53
                                            1 for bold on
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    54
                                            4 underline (mono only)
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    55
                                            5 blink on
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    56
                                            7 reverse video on
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    57
                                            8 nondisplayed (invisible)
4801
86163ae659dd class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4800
diff changeset
    58
2116
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    59
                                            30 black foreground 
4801
86163ae659dd class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4800
diff changeset
    60
                                            31 faint red foreground 
86163ae659dd class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4800
diff changeset
    61
                                            32 faint green foreground 
86163ae659dd class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4800
diff changeset
    62
                                            33 faint yellow foreground 
86163ae659dd class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4800
diff changeset
    63
                                            34 faint blue foreground 
86163ae659dd class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4800
diff changeset
    64
                                            35 faint magenta foreground 
86163ae659dd class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4800
diff changeset
    65
                                            36 faint cyan foreground 
86163ae659dd class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4800
diff changeset
    66
                                            37 faint white (grey) foreground
4800
92d8d63251d8 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4560
diff changeset
    67
                                            39 reset to default foreground
4801
86163ae659dd class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4800
diff changeset
    68
2116
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    69
                                            40 black background
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    70
                                            41 red background
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    71
                                            42 green background
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    72
                                            43 yellow background
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    73
                                            44 blue background
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    74
                                            45 magenta background
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    75
                                            46 cyan background
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    76
                                            47 white background
4800
92d8d63251d8 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4560
diff changeset
    77
                                            49 reset to default background
2116
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    78
4801
86163ae659dd class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4800
diff changeset
    79
                                            90 grey foreground 
86163ae659dd class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4800
diff changeset
    80
                                            91 bright red foreground 
86163ae659dd class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4800
diff changeset
    81
                                            92 bright green foreground 
86163ae659dd class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4800
diff changeset
    82
                                            99 bright yellow foreground 
86163ae659dd class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4800
diff changeset
    83
                                            94 bright blue foreground 
86163ae659dd class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4800
diff changeset
    84
                                            95 bright magenta foreground 
86163ae659dd class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4800
diff changeset
    85
                                            96 bright cyan foreground 
86163ae659dd class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4800
diff changeset
    86
                                            97 bright white foreground
86163ae659dd class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4800
diff changeset
    87
86163ae659dd class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4800
diff changeset
    88
                                           100 grey background 
86163ae659dd class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4800
diff changeset
    89
                                           101 bright red background 
86163ae659dd class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4800
diff changeset
    90
                                           102 bright green background 
86163ae659dd class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4800
diff changeset
    91
                                           109 bright yellow background 
86163ae659dd class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4800
diff changeset
    92
                                           104 bright blue background 
86163ae659dd class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4800
diff changeset
    93
                                           105 bright magenta background 
86163ae659dd class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4800
diff changeset
    94
                                           106 bright cyan background 
86163ae659dd class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4800
diff changeset
    95
                                           107 bright white background
86163ae659dd class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4800
diff changeset
    96
2116
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    97
         ESC[=#;7h or                   Put screen in indicated mode where # is
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    98
         ESC[=h or                          0 for 40 x 25 black & white
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
    99
         ESC[=0h or                         1 for 40 x 25 color
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   100
         ESC[?7h                            2 for 80 x 25 b&w
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   101
                                            3 for 80 x 25 color
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   102
                                            4 for 320 x 200 color graphics
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   103
                                            5 for 320 x 200 b & w graphics
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   104
                                            6 for 640 x 200 b & w graphics
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   105
                                            7 to wrap at end of line 
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   106
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   107
         ESC[=#;7l or ESC[=l or         Resets mode # set with above command
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   108
         ESC[=0l or ESC[?7l
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   109
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   110
Keyboard Reassignments:
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   111
         ESC[#;#;...p                   Keyboard reassignment. The first ASCII
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   112
         or ESC[""string""p               code defines which code is to be 
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   113
         or ESC[#;""string"";#;           changed. The remaining codes define
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   114
            #;""string"";#p               what it is to be changed to.
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   115
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   116
         E.g. Reassign the Q and q keys to the A and a keys (and vice versa).
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   117
         ESC [65;81p                    A becomes Q
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   118
         ESC [97;113p                   a becomes q
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   119
         ESC [81;65p                    Q becomes A
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   120
         ESC [113;97p                   q becomes a
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   121
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   122
         E.g. Reassign the F10 key to a DIR command.
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   123
         ESC [0;68;""dir"";13p            The 0;68 is the extended ASCII code 
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   124
                                        for the F10 key and 13 is the ASCII
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   125
                                        code for a carriage return.
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   126
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   127
         Other function key codes       F1=59,F2=60,F3=61,F4=62,F5=63
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   128
                                        F6=64,F7=65,F8=66,F9=67,F10=68
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   129
"
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   130
!
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   131
1361
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
   132
copyright
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
   133
"
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
   134
 COPYRIGHT (c) 1998 by eXept Software AG
5814
70d07365a2d4 Copyright updates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5568
diff changeset
   135
 COPYRIGHT (c) 2017 Jan Vrany
1361
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
   136
              All Rights Reserved
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
   137
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
   138
 This software is furnished under a license and may be used
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
   139
 only in accordance with the terms of that license and with the
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
   140
 inclusion of the above copyright notice.   This software may not
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
   141
 be provided or otherwise made available to, or used by, any
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
   142
 other person.  No title to or ownership of the software is
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
   143
 hereby transferred.
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
   144
"
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
   145
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
   146
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
   147
!
04c4b21dfc74 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1357
diff changeset
   148
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   149
documentation
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   150
"
5568
a44d0289bfbf `TerminalView`: added (XTerm) keycodes for 'Del' and 'End' keys
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5245
diff changeset
   151
    A VT100 / XTerm terminal emulator.
1418
32a6131b304b documentation
Claus Gittinger <cg@exept.de>
parents: 1361
diff changeset
   152
    Most of the functionality is inherited from my superclass,
5568
a44d0289bfbf `TerminalView`: added (XTerm) keycodes for 'Del' and 'End' keys
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5245
diff changeset
   153
    I redefine/specialize certain methods for VT100 / XTerm escape sequences
a44d0289bfbf `TerminalView`: added (XTerm) keycodes for 'Del' and 'End' keys
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5245
diff changeset
   154
    and VT100 / XTerm keyboard codes
a44d0289bfbf `TerminalView`: added (XTerm) keycodes for 'Del' and 'End' keys
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5245
diff changeset
   155
a44d0289bfbf `TerminalView`: added (XTerm) keycodes for 'Del' and 'End' keys
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5245
diff changeset
   156
    == Keyboard Debugging ==
a44d0289bfbf `TerminalView`: added (XTerm) keycodes for 'Del' and 'End' keys
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5245
diff changeset
   157
a44d0289bfbf `TerminalView`: added (XTerm) keycodes for 'Del' and 'End' keys
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5245
diff changeset
   158
    In case some keys does not work as expected, do the folowing:
a44d0289bfbf `TerminalView`: added (XTerm) keycodes for 'Del' and 'End' keys
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5245
diff changeset
   159
a44d0289bfbf `TerminalView`: added (XTerm) keycodes for 'Del' and 'End' keys
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5245
diff changeset
   160
        1. Turn on keyboard debugging by evaluating:
a44d0289bfbf `TerminalView`: added (XTerm) keycodes for 'Del' and 'End' keys
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5245
diff changeset
   161
a44d0289bfbf `TerminalView`: added (XTerm) keycodes for 'Del' and 'End' keys
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5245
diff changeset
   162
              DebugKeyboard := false
a44d0289bfbf `TerminalView`: added (XTerm) keycodes for 'Del' and 'End' keys
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5245
diff changeset
   163
a44d0289bfbf `TerminalView`: added (XTerm) keycodes for 'Del' and 'End' keys
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5245
diff changeset
   164
        2. Check what it actually sends to the program.
a44d0289bfbf `TerminalView`: added (XTerm) keycodes for 'Del' and 'End' keys
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5245
diff changeset
   165
a44d0289bfbf `TerminalView`: added (XTerm) keycodes for 'Del' and 'End' keys
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5245
diff changeset
   166
        3. Open proper XTerm and run:
a44d0289bfbf `TerminalView`: added (XTerm) keycodes for 'Del' and 'End' keys
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5245
diff changeset
   167
a44d0289bfbf `TerminalView`: added (XTerm) keycodes for 'Del' and 'End' keys
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5245
diff changeset
   168
              export TERM=xterm
a44d0289bfbf `TerminalView`: added (XTerm) keycodes for 'Del' and 'End' keys
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5245
diff changeset
   169
              tput smkx; cat
a44d0289bfbf `TerminalView`: added (XTerm) keycodes for 'Del' and 'End' keys
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5245
diff changeset
   170
a44d0289bfbf `TerminalView`: added (XTerm) keycodes for 'Del' and 'End' keys
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5245
diff changeset
   171
           Then press desired key and see what is its keycode. 
a44d0289bfbf `TerminalView`: added (XTerm) keycodes for 'Del' and 'End' keys
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5245
diff changeset
   172
a44d0289bfbf `TerminalView`: added (XTerm) keycodes for 'Del' and 'End' keys
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5245
diff changeset
   173
        4. Update #vt100KeyCodes / #xtermKeyCodes accordingly
a44d0289bfbf `TerminalView`: added (XTerm) keycodes for 'Del' and 'End' keys
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5245
diff changeset
   174
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   175
1419
55972fc3268f documentation
Claus Gittinger <cg@exept.de>
parents: 1418
diff changeset
   176
    BUGS:
55972fc3268f documentation
Claus Gittinger <cg@exept.de>
parents: 1418
diff changeset
   177
        VT100 wrapMode (at right margin) is not supported
55972fc3268f documentation
Claus Gittinger <cg@exept.de>
parents: 1418
diff changeset
   178
        this may lead to wrong display when a vi is started in a small window.
55972fc3268f documentation
Claus Gittinger <cg@exept.de>
parents: 1418
diff changeset
   179
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   180
    [start with:]
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   181
        VT100TerminalView openShell
1418
32a6131b304b documentation
Claus Gittinger <cg@exept.de>
parents: 1361
diff changeset
   182
32a6131b304b documentation
Claus Gittinger <cg@exept.de>
parents: 1361
diff changeset
   183
    [see also:]
32a6131b304b documentation
Claus Gittinger <cg@exept.de>
parents: 1361
diff changeset
   184
        VT52TerminalView
32a6131b304b documentation
Claus Gittinger <cg@exept.de>
parents: 1361
diff changeset
   185
        TelnetTool
5245
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
   186
        http://vt100.net/docs/vt220-rm/chapter4.html
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   187
"
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   188
! !
920
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
932
af0236d38242 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 930
diff changeset
   190
!VT100TerminalView methodsFor:'defaults'!
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   191
4303
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   192
colorAtIndex:idx bright:bright
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   193
    |rgb|
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   194
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   195
    rgb := #(
4800
92d8d63251d8 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4560
diff changeset
   196
                #( 0 0 0 )      "/ black                        fg: ESC[30m / bg: ESC[40m
6066
fc59a1fcfdcd Cherry-picked changes to `TerminalView` from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5814
diff changeset
   197
                #(170 0 0)      "/ dark red                         ESC[31m / bg: ESC[41m
4800
92d8d63251d8 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4560
diff changeset
   198
                #(0 170 0)      "/ dark green
92d8d63251d8 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4560
diff changeset
   199
                #(170 85 0)     "/ dark yellow
92d8d63251d8 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4560
diff changeset
   200
                #(0 0 170)      "/ dark blue
92d8d63251d8 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4560
diff changeset
   201
                #(170 0 170)    "/ dark magenta
92d8d63251d8 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4560
diff changeset
   202
                #(0 170 170 )   "/ dark cyan
6066
fc59a1fcfdcd Cherry-picked changes to `TerminalView` from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5814
diff changeset
   203
                #(170 170 170)  "/ dark white eg. light grey).      ESC[37m / bg: ESC[47m
4297
da54726fd311 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4296
diff changeset
   204
4800
92d8d63251d8 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4560
diff changeset
   205
                #( 85 85 85 )   "/ bright black eg. darkGray    fg: ESC[90m / bg: ESC[100m  
92d8d63251d8 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4560
diff changeset
   206
                #(255 85 85)    "/ bright red
92d8d63251d8 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4560
diff changeset
   207
                #(85 255 85)    "/ bright green
92d8d63251d8 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4560
diff changeset
   208
                #(255 255 85)   "/ bright yellow
92d8d63251d8 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4560
diff changeset
   209
                #(85 85 255)    "/ bright blue
92d8d63251d8 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4560
diff changeset
   210
                #(255 85 255)   "/ bright magenta
92d8d63251d8 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4560
diff changeset
   211
                #(85 255 255 )  "/ bright cyan
6066
fc59a1fcfdcd Cherry-picked changes to `TerminalView` from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5814
diff changeset
   212
                #(255 255 255)  "/ white                            ESC[97m / bg: ESC[107m
4303
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   213
    ).
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   214
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   215
    ^ Color 
4305
6be463447aa6 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4303
diff changeset
   216
        perform: #'redByte:greenByte:blueByte:' 
4303
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   217
        withArguments:(rgb at:(idx + (bright ifTrue:[8] ifFalse:[0]))).
6066
fc59a1fcfdcd Cherry-picked changes to `TerminalView` from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5814
diff changeset
   218
fc59a1fcfdcd Cherry-picked changes to `TerminalView` from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5814
diff changeset
   219
    "Modified (comment): / 30-05-2017 / 08:48:49 / cg"
4297
da54726fd311 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4296
diff changeset
   220
!
da54726fd311 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4296
diff changeset
   221
4293
ade403689ce1 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4291
diff changeset
   222
vt100AlternativeKeyCodes
ade403689ce1 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4291
diff changeset
   223
    "return the alternative vt100 keyCode table"
ade403689ce1 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4291
diff changeset
   224
ade403689ce1 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4291
diff changeset
   225
    ^ IdentityDictionary withKeysAndValues:
ade403689ce1 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4291
diff changeset
   226
        #(
ade403689ce1 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4291
diff changeset
   227
             #CursorUp    '\eOA'
ade403689ce1 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4291
diff changeset
   228
             #CursorDown  '\eOB'
ade403689ce1 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4291
diff changeset
   229
             #CursorRight '\eOC'
ade403689ce1 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4291
diff changeset
   230
             #CursorLeft  '\eOD'
ade403689ce1 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4291
diff changeset
   231
             #Home        '\eOH'
ade403689ce1 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4291
diff changeset
   232
             #Escape      '\e'
ade403689ce1 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4291
diff changeset
   233
             #BackSpace   '\b'
ade403689ce1 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4291
diff changeset
   234
             #Return      '\r'
ade403689ce1 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4291
diff changeset
   235
             #Delete      '\0177'
ade403689ce1 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4291
diff changeset
   236
             #Tab         '\t'
ade403689ce1 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4291
diff changeset
   237
ade403689ce1 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4291
diff changeset
   238
             #F1          '\eOP'
ade403689ce1 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4291
diff changeset
   239
             #F2          '\eOQ'
ade403689ce1 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4291
diff changeset
   240
             #F3          '\eOR'
ade403689ce1 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4291
diff changeset
   241
             #F4          '\eOS'
ade403689ce1 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4291
diff changeset
   242
             #F5          '\eOt'
ade403689ce1 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4291
diff changeset
   243
             #F6          '\eOu'
ade403689ce1 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4291
diff changeset
   244
             #F7          '\eOv'
ade403689ce1 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4291
diff changeset
   245
             #F8          '\eOl'
ade403689ce1 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4291
diff changeset
   246
             #F9          '\eOw'
ade403689ce1 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4291
diff changeset
   247
         )
ade403689ce1 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4291
diff changeset
   248
!
ade403689ce1 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4291
diff changeset
   249
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   250
vt100KeyCodes
1420
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   251
    "return a vt100 keyCode table"
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   252
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   253
    ^ IdentityDictionary withKeysAndValues:
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   254
        #(
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   255
             #CursorUp    '\e[A'
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   256
             #CursorDown  '\e[B'
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   257
             #CursorRight '\e[C'
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   258
             #CursorLeft  '\e[D'
4293
ade403689ce1 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4291
diff changeset
   259
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   260
             #Home        '\e[H'
5568
a44d0289bfbf `TerminalView`: added (XTerm) keycodes for 'Del' and 'End' keys
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5245
diff changeset
   261
             #End         '\e[F'
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   262
             #Escape      '\e'
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   263
             #BackSpace   '\b'
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   264
             #Return      '\r'
5568
a44d0289bfbf `TerminalView`: added (XTerm) keycodes for 'Del' and 'End' keys
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5245
diff changeset
   265
             #Delete      '\e[3~'
1357
8e7e0d17389e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1355
diff changeset
   266
             #Tab         '\t'
1352
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   267
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   268
             #F1          '\eOP'
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   269
             #F2          '\eOQ'
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   270
             #F3          '\eOR'
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   271
             #F4          '\eOS'
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   272
             #F5          '\eOt'
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   273
             #F6          '\eOu'
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   274
             #F7          '\eOv'
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   275
             #F8          '\eOl'
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   276
             #F9          '\eOw'
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   277
         )
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   278
5568
a44d0289bfbf `TerminalView`: added (XTerm) keycodes for 'Del' and 'End' keys
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5245
diff changeset
   279
    "Created: / 10-06-1998 / 15:13:01 / cg"
a44d0289bfbf `TerminalView`: added (XTerm) keycodes for 'Del' and 'End' keys
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5245
diff changeset
   280
    "Modified: / 05-05-1999 / 15:01:32 / cg"
a44d0289bfbf `TerminalView`: added (XTerm) keycodes for 'Del' and 'End' keys
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5245
diff changeset
   281
    "Modified (comment): / 20-06-2017 / 21:25:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   282
! !
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   283
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   284
!VT100TerminalView methodsFor:'functions'!
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   285
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   286
addLines
1420
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   287
    "Add the appropriate number of blank lines (param 1) 
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   288
     at the cursor position."
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   289
1420
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   290
    self addLines:((parameters at:1) max:1).
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   291
    self endOfSequence
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   292
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   293
    "Created: / 10.6.1998 / 14:48:03 / cg"
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   294
!
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   295
1420
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   296
addLines:aNumber
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   297
    "Add aNumber blank lines at the position indicated by the cursor."
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   298
1420
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   299
    aNumber timesRepeat:[
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   300
        self insertLine:'' before:cursorLine
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   301
    ]
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   302
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   303
    "Created: / 10.6.1998 / 14:49:30 / cg"
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   304
!
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   305
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   306
clearLines:arg
1420
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   307
    "Clear some part of the current line, as indicated by the first parameter:
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   308
     0 - clear to EOL
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   309
     1 - clear from beginning to cursorCol
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   310
     2 - clear entire line
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   311
    "
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   312
1001
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   313
    arg = 0 ifTrue: [^self doClearToEndOfLine].
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   314
    arg = 1 ifTrue: [^self doClearFromBeginningOfLine].
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   315
    arg = 2 ifTrue: [^self doClearEntireLine]
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   316
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   317
    "Created: / 10.6.1998 / 14:44:22 / cg"
1001
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   318
    "Modified: / 21.7.1998 / 20:07:42 / cg"
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   319
!
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   320
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   321
deleteCharacters
1420
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   322
    "Delete the appropriate number of characters (param 1)
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   323
     at the cursor position."
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   324
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   325
    |n|
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   326
4863
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
   327
    n := parameters at: 1.
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
   328
    n isNil ifTrue:[^ self].
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
   329
    n := n max: 1.
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   330
    self deleteFromLine:cursorLine col:cursorCol toLine:cursorLine col:cursorCol+n-1.
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   331
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   332
    "Created: / 12.6.1998 / 21:19:02 / cg"
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   333
    "Modified: / 12.6.1998 / 21:19:15 / cg"
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   334
!
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   335
4296
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   336
deleteLines
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   337
    "Delete the appropriate number of lines (param 1)
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   338
     at the cursor position."
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   339
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   340
    |n|
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   341
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   342
    n := ((parameters at: 1) max: 1).
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   343
self halt:'untested code'.
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   344
    self deleteFromLine:cursorLine toLine:cursorLine+n-1.
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   345
!
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   346
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   347
displayMode:p1
6066
fc59a1fcfdcd Cherry-picked changes to `TerminalView` from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5814
diff changeset
   348
    "ESC-[-<param1>-m 
fc59a1fcfdcd Cherry-picked changes to `TerminalView` from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5814
diff changeset
   349
     Set the current display mode (emphasis) as specified by param 1."
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   350
4297
da54726fd311 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4296
diff changeset
   351
"/    self endEntry.    -- not needed (does not affect characters on screen or buffered or cursor position
da54726fd311 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4296
diff changeset
   352
    p1 == 0 ifTrue:[
da54726fd311 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4296
diff changeset
   353
        self normal.
da54726fd311 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4296
diff changeset
   354
        ^ self.
da54726fd311 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4296
diff changeset
   355
    ].
1352
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   356
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   357
    p1 == 1 ifTrue:[
951
a9e48f549763 fixed scroll-range
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   358
        "/ ESC-[-1-m  -> bold
a9e48f549763 fixed scroll-range
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   359
1287
48e6c847a554 use red color instead of bold
Claus Gittinger <cg@exept.de>
parents: 1056
diff changeset
   360
        "/ workaround: windows bold fonts are
48e6c847a554 use red color instead of bold
Claus Gittinger <cg@exept.de>
parents: 1056
diff changeset
   361
        "/ wider, leading to ugly looking output
48e6c847a554 use red color instead of bold
Claus Gittinger <cg@exept.de>
parents: 1056
diff changeset
   362
        "/ Therefore, use red color instead of bold
5005
28df1acb3d8c device access
Claus Gittinger <cg@exept.de>
parents: 4863
diff changeset
   363
        device isWindowsPlatform ifTrue:[
4298
c9c174303f4e class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4297
diff changeset
   364
            self color:(Color red:80).
1287
48e6c847a554 use red color instead of bold
Claus Gittinger <cg@exept.de>
parents: 1056
diff changeset
   365
        ] ifFalse:[
48e6c847a554 use red color instead of bold
Claus Gittinger <cg@exept.de>
parents: 1056
diff changeset
   366
            self bold.
48e6c847a554 use red color instead of bold
Claus Gittinger <cg@exept.de>
parents: 1056
diff changeset
   367
        ].
951
a9e48f549763 fixed scroll-range
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   368
        ^ self.
a9e48f549763 fixed scroll-range
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   369
    ].
4303
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   370
    p1 == 2 ifTrue:[
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   371
        "/ faint - unsupported
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   372
        ^ self.
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   373
    ].
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   374
    p1 == 3 ifTrue:[
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   375
        "/ ESC-[-3-m  -> italic
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   376
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   377
        self italic.
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   378
        ^ self.
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   379
    ].
1352
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   380
    p1 == 4 ifTrue:[
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   381
        "/ ESC-[-4-m  -> underline
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   382
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   383
        self underline.
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   384
        ^ self.
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   385
    ].
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   386
    p1 == 5 ifTrue:[
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   387
        "/ ESC-[-5-m  -> blink
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   388
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   389
        self color:Color blue.
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   390
        ^ self.
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   391
    ].
4303
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   392
    p1 == 6 ifTrue:[
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   393
        "/ ESC-[-5-m  -> blink rapid - unsupported
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   394
        ^ self.
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   395
    ].
1352
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   396
    p1 == 7 ifTrue:[
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   397
        "/ ESC-[-7-m  -> reverse
951
a9e48f549763 fixed scroll-range
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   398
978
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   399
        self reverse.
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   400
        ^ self.
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   401
    ].
2116
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   402
    p1 == 8 ifTrue:[
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   403
        "/ ESC-[-8-m  -> invisible
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   404
        ^ self.
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   405
    ].
4303
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   406
    p1 == 9 ifTrue:[
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   407
        "/ ESC-[-9-m  -> crossed out - unsupported
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   408
        ^ self.
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   409
    ].
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   410
    p1 == 10 ifTrue:[
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   411
        "/ ESC-[-10-m  -> primary font - unsupported
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   412
        ^ self.
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   413
    ].
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   414
    (p1 between:11 and:19) ifTrue:[
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   415
        "/ alternate fonts - unsupported
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   416
        ^ self.
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   417
    ].
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   418
    p1 == 20 ifTrue:[
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   419
        "/ fraktur - unsupported
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   420
        ^ self.
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   421
    ].
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   422
    p1 == 21 ifTrue:[
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   423
        "/ ESC-[-21-m  -> not bold
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   424
        self notBold.
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   425
        ^ self.
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   426
    ].
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   427
    p1 == 23 ifTrue:[
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   428
        "/ ESC-[-23-m  -> not italic
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   429
        self notItalic.
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   430
        ^ self.
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   431
    ].
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   432
    p1 == 24 ifTrue:[
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   433
        "/ ESC-[-24-m  -> not underline
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   434
        self notUnderline.
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   435
        ^ self.
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   436
    ].
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   437
    p1 == 25 ifTrue:[
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   438
        "/ ESC-[-25-m  -> not blinking - unsupported
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   439
        ^ self.
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   440
    ].
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   441
    p1 == 28 ifTrue:[
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   442
        "/ ESC-[-28-m  -> not invisible/reveal - unsupported
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   443
        ^ self.
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   444
    ].
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   445
    p1 == 29 ifTrue:[
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   446
        "/ ESC-[-29-m  -> not crossed out - unsupported
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   447
        ^ self.
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   448
    ].
2116
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   449
    (p1 between:30 and:37) ifTrue:[
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   450
        "/ ESC-[-30-m  -> black fg color
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   451
        "/ ESC-[-31-m  -> red   fg color
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   452
        "/ ...
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   453
        "/ ESC-[-37-m  -> white fg color
4298
c9c174303f4e class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4297
diff changeset
   454
        noColors ifFalse:[
4303
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   455
            self color:(self colorAtIndex:(p1-30+1) bright:false).
4298
c9c174303f4e class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4297
diff changeset
   456
        ].
2116
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   457
        ^ self.
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   458
    ].
4303
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   459
    p1 == 38 ifTrue:[
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   460
        "/ xterm 256 color - unsupported
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   461
        ^ self
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   462
    ].
4296
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   463
    p1 == 39 ifTrue:[
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   464
        "/ normal fg color
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   465
        self color:nil.
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   466
        ^ self
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   467
    ].
2116
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   468
    (p1 between:40 and:47) ifTrue:[
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   469
        "/ ESC-[-40-m  -> black bg color
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   470
        "/ ...
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   471
        "/ ESC-[-47-m  -> white bg color
4298
c9c174303f4e class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4297
diff changeset
   472
        noColors ifFalse:[
4303
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   473
            self bgColor:(self colorAtIndex:(p1-40+1) bright:false).
4298
c9c174303f4e class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4297
diff changeset
   474
        ].
2116
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   475
        ^ self.
f4ca2a14b8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
   476
    ].
4303
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   477
    p1 == 48 ifTrue:[
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   478
        "/ xterm 256 bg color - unsupported
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   479
        ^ self
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   480
    ].
4296
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   481
    p1 == 49 ifTrue:[
4303
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   482
        "/ normal bg color
4296
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   483
        self bgColor:nil.
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   484
        ^ self
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   485
    ].
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   486
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   487
    (p1 between:90 and:97) ifTrue:[
4303
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   488
        "/ fg color high intensity
4298
c9c174303f4e class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4297
diff changeset
   489
        noColors ifFalse:[
4303
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   490
            self color:(self colorAtIndex:(p1-90+1) bright:true).
4298
c9c174303f4e class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4297
diff changeset
   491
        ].
4296
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   492
        ^ self.
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   493
    ].
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   494
    (p1 between:100 and:107) ifTrue:[
4303
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   495
        "/ bg color high intensity
4298
c9c174303f4e class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4297
diff changeset
   496
        noColors ifFalse:[
4303
fdc31f138ba3 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4298
diff changeset
   497
            self bgColor:(self colorAtIndex:(p1-100+1) bright:true).
4298
c9c174303f4e class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4297
diff changeset
   498
        ].
4296
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   499
        ^ self.
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   500
    ].
1020
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   501
978
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   502
    "/ ESC-[-any-m  -> normal
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   503
    self normal.
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   504
6066
fc59a1fcfdcd Cherry-picked changes to `TerminalView` from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5814
diff changeset
   505
    "Created: / 10-06-1998 / 15:01:16 / cg"
fc59a1fcfdcd Cherry-picked changes to `TerminalView` from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5814
diff changeset
   506
    "Modified: / 05-05-1999 / 00:53:15 / cg"
fc59a1fcfdcd Cherry-picked changes to `TerminalView` from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5814
diff changeset
   507
    "Modified (comment): / 30-05-2017 / 08:56:51 / cg"
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   508
!
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   509
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   510
doClearDisplay:arg
1420
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   511
    "Clear some part of the current screen, as indicated by the first parameter.
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   512
     0 - clear to endOfScreen
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   513
     1 - clear from beginning of screen to cursorCol
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   514
     2 - clear entire screen
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   515
    "
1001
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   516
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   517
    arg = 0 ifTrue: [^self doClearToEndOfScreen].
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   518
    arg = 1 ifTrue: [^self doClearFromBeginningOfScreen].
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   519
    arg = 2 ifTrue: [^self doClearEntireScreen]
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   520
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   521
    "Created: / 21.7.1998 / 20:05:07 / cg"
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   522
    "Modified: / 21.7.1998 / 20:07:36 / cg"
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   523
!
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   524
4296
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   525
doCursorNextLine:n
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   526
    self halt:'unimplemented function'.
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   527
!
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   528
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   529
doCursorPreviousLine:n
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   530
    self halt:'unimplemented function'.
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   531
!
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   532
1020
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   533
insertCharacters
1420
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   534
    "Insert the appropriate number of spaces (param 1) at the cursor position."
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   535
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   536
    |s|
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   537
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   538
    s := String new:((parameters at: 1) max: 1).
1420
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   539
    self insertStringWithoutCRs:s atLine:cursorLine col:cursorCol.
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   540
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   541
    "Modified: / 12.6.1998 / 21:14:25 / cg"
1020
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   542
    "Created: / 28.7.1998 / 00:53:51 / cg"
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   543
!
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   544
4296
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   545
insertLines
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   546
    "Insert the appropriate number of lines (param 1) at the cursor position."
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   547
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   548
    |n|
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   549
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   550
    n := (parameters at: 1) max: 1.
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   551
    self halt:'untested code'.
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   552
    self insertLines:(Array new:n) before:cursorLine
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   553
!
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   554
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   555
move
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   556
    "Move to the locations indicated by the first and second parameters."
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   557
2217
070c39549895 erase sequences and reverse index fixed
penk
parents: 2207
diff changeset
   558
    | row column |
070c39549895 erase sequences and reverse index fixed
penk
parents: 2207
diff changeset
   559
070c39549895 erase sequences and reverse index fixed
penk
parents: 2207
diff changeset
   560
    row := (self getParameter:1 withDefault:1).
070c39549895 erase sequences and reverse index fixed
penk
parents: 2207
diff changeset
   561
    column := (self getParameter:2 withDefault:1).
2202
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
   562
    Debug ifTrue:[
2217
070c39549895 erase sequences and reverse index fixed
penk
parents: 2207
diff changeset
   563
        Transcript show:'move to column/row:'; show:column; show:'/'; showCR:row.
070c39549895 erase sequences and reverse index fixed
penk
parents: 2207
diff changeset
   564
    ].    
070c39549895 erase sequences and reverse index fixed
penk
parents: 2207
diff changeset
   565
    self moveToX:column y:row.
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   566
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   567
    "Created: / 10.6.1998 / 14:40:01 / cg"
978
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   568
    "Modified: / 20.6.1998 / 18:49:12 / cg"
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   569
!
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   570
4296
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   571
moveToColumn
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   572
    "Move to the column indicated by the first."
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   573
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   574
    | column |
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   575
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   576
    column := (self getParameter:1 withDefault:1).
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   577
    Debug ifTrue:[
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   578
        Transcript show:'move to column:'; showCR:column.
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   579
    ].    
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   580
    self cursorVisibleLine:cursorLine col:column.
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   581
!
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   582
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   583
moveToLine
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   584
    "Move to the line indicated by the first param."
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   585
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   586
    | row |
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   587
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   588
    row := (self getParameter:1 withDefault:1).
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   589
    Debug ifTrue:[
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   590
        Transcript show:'move to row:'; showCR:row.
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   591
    ].    
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   592
    self cursorVisibleLine:row col:cursorCol.
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   593
!
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   594
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   595
moveToX: xLocation y: yLocation
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   596
    "Position the cursor at the location given by xLocation and yLocation.
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   597
     Ignore the command if the parameters are outside the allowable range."
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   598
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   599
    Debug ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   600
        Transcript show:'numberOfColumns '; showCR:numberOfColumns.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   601
        Transcript show:'numberOfLines '; showCR:numberOfLines.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   602
    ].
978
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   603
"/    (xLocation < 1 or: [xLocation > numberOfColumns]) ifTrue: [^self].
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   604
"/    (yLocation < 1 or: [yLocation > numberOfLines]) ifTrue: [^self].
952
b83678ff6770 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 951
diff changeset
   605
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   606
    self cursorVisibleLine:yLocation col:xLocation.
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   607
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   608
    "Created: / 10.6.1998 / 14:40:49 / cg"
978
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   609
    "Modified: / 20.6.1998 / 20:27:11 / cg"
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   610
!
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   611
4296
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   612
report
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   613
    self halt:'unimplemented function'
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   614
!
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
   615
944
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   616
reportTerminalType
1420
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   617
    "currently, only cursor position is supported (param 6)"
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   618
944
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   619
    (parameters at: 1) == 6 ifTrue:[
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   620
        "/ report position
1020
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   621
        self endEntry.
4286
40cf32b2c3fa class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4283
diff changeset
   622
        Debug ifTrue:[
40cf32b2c3fa class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4283
diff changeset
   623
            Transcript showCR:'report terminal type'
40cf32b2c3fa class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4283
diff changeset
   624
        ].
944
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   625
        inStream nextPut:(Character esc).
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   626
        inStream nextPutAll:'[' 
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   627
                            , cursorLine printString 
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   628
                            , ';' 
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   629
                            , cursorCol printString
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   630
                            , 'R'.
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   631
        ^ self
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   632
    ].
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   633
    (parameters at: 1) == 7 ifTrue:[
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   634
        "/ display name 
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   635
    ].
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   636
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   637
    "Created: / 11.6.1998 / 23:05:50 / cg"
1020
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   638
    "Modified: / 28.7.1998 / 00:54:30 / cg"
944
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   639
!
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   640
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   641
resetDefaults
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   642
    "Reset the default parameters"
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   643
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   644
    |l1 l2|
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   645
978
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   646
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   647
    l1 := (parameters at: 1).
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   648
    l2 := (parameters at: 2).
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   649
    Debug ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   650
        Transcript show:'resetDefaults:'; show:l1;show:' ';showCR:l2.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   651
    ].
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   652
    (l1 ~~ 0 and:[l2 ~~ 0]) ifTrue:[
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   653
        rangeStartLine := l1.
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   654
        rangeEndLine := l2.
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   655
    ] ifFalse:[
978
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   656
"/        self halt.
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   657
    ].
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   658
978
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   659
"/    (rangeStartLine == 1 and:[rangeEndLine == numberOfLines]) ifTrue:[
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   660
"/        rangeEndLine := rangeStartLine := nil.
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   661
"/    ].
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   662
4291
fd935fa1dfec class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4289
diff changeset
   663
    alternateKeypadMode := false.
978
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   664
"/    autoLineFeed := false.
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   665
"/    autoMargin := true.
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   666
"/    displayMode := 0.                "Normal display"!! !!
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   667
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   668
    "Created: / 10.6.1998 / 14:50:53 / cg"
978
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   669
    "Modified: / 20.6.1998 / 20:28:26 / cg"
920
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   670
! !
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   671
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   672
!VT100TerminalView methodsFor:'initialization'!
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   673
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   674
initialize
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   675
    super initialize.
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   676
2268
e3b57c072b89 wrap line at end
penk
parents: 2217
diff changeset
   677
    autoWrapFlag := true.
4291
fd935fa1dfec class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4289
diff changeset
   678
    alternateKeypadMode := false.
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   679
    parameters := Array new:8.
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   680
    self endOfSequence
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   681
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   682
    "Created: / 10.6.1998 / 14:46:07 / cg"
953
59167fd29632 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 952
diff changeset
   683
    "Modified: / 13.6.1998 / 13:58:01 / cg"
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   684
!
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   685
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   686
initializeKeyboardSequences
1420
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   687
    "setup my keyboard sequences for a vt100"
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   688
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   689
    kbdSequences := (self vt100KeyCodes)
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   690
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   691
    "Modified: / 9.6.1998 / 20:49:21 / cg"
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   692
    "Created: / 10.6.1998 / 15:12:32 / cg"
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   693
! !
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   694
4269
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   695
!VT100TerminalView methodsFor:'misc'!
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   696
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   697
traceCSI:char
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   698
    state infoPrint. '-' infoPrint. 
5155
7053555ceac7 #OTHER by mawalch
mawalch
parents: 5005
diff changeset
   699
    char codePoint > 32 ifTrue:[
4269
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   700
        char infoPrint. 
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   701
    ] ifFalse:[
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   702
        '0x' infoPrint. char codePoint hexPrintString infoPrint. 
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   703
    ].
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   704
    currentParam > 1 ifTrue:[
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   705
        ' ' infoPrint. 
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   706
        (parameters at:1) infoPrintCR.
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   707
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   708
        currentParam > 2 ifTrue:[
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   709
            ' ' infoPrint. 
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   710
            (parameters at:2) infoPrintCR.
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   711
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   712
            currentParam > 3 ifTrue:[
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   713
                ' ' infoPrint. 
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   714
                (parameters at:3) infoPrintCR.
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   715
            ].
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   716
        ].
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   717
    ].
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   718
! !
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   719
4221
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   720
!VT100TerminalView methodsFor:'os functions (xterm)'!
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   721
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   722
osCommand
4804
9aa52f6b6682 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4801
diff changeset
   723
    "this is an xterm escape sequence, which controls
9aa52f6b6682 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4801
diff changeset
   724
     the window's title, icon, or other property"
9aa52f6b6682 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4801
diff changeset
   725
     
4221
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   726
    |cmdKey cmdValue|
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   727
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   728
    cmdKey := parameters at:1.
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   729
    cmdValue := parameters at:2.
4269
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   730
4221
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   731
    cmdKey == 0 ifTrue:[
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   732
        "/ change icon name and window title
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   733
        masterWindow notNil ifTrue:[
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   734
            masterWindow label:cmdValue.
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   735
            masterWindow iconLabel:cmdValue.
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   736
        ].
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   737
        self endOfSequence.
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   738
        ^ self.
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   739
    ].
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   740
    cmdKey == 1 ifTrue:[
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   741
        "/ change icon name
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   742
        masterWindow notNil ifTrue:[
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   743
            masterWindow iconLabel:cmdValue.
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   744
        ].
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   745
        self endOfSequence.
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   746
        ^ self.
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   747
    ].
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   748
    cmdKey == 2 ifTrue:[
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   749
        "/ change window title
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   750
        masterWindow notNil ifTrue:[
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   751
            masterWindow label:cmdValue.
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   752
        ].
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   753
        self endOfSequence.
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   754
        ^ self.
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   755
    ].
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   756
    cmdKey == 3 ifTrue:[
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   757
        "/ set x property
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   758
        self endOfSequence.
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   759
        ^ self.
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   760
    ].
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   761
    cmdKey == 4 ifTrue:[
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   762
        "/ change color
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   763
        self endOfSequence.
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   764
        ^ self.
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   765
    ].
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   766
    self breakPoint:#cg.
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   767
    self endOfSequence
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   768
! !
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   769
2498
4b4f91e57dd0 method category rename
Claus Gittinger <cg@exept.de>
parents: 2350
diff changeset
   770
!VT100TerminalView methodsFor:'processing-input'!
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   771
2194
d008bb991def adding comments
penk
parents: 2192
diff changeset
   772
addToParameter:char
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   773
    "The parameter char is a digit. Add it to the current parameter."
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   774
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   775
    | param |
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   776
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   777
    param := (parameters at:currentParam) ? 0.
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   778
    parameters at:currentParam put:(param * 10 + char digitValue)
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   779
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   780
    "Created: / 10.6.1998 / 14:39:00 / cg"
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   781
!
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   782
1420
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   783
endOfSequence
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   784
    "private - reset state-machine at end of escape-sequence"
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   785
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   786
    state := 0. 
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   787
    currentParam := 1. 
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   788
    "/ parameters := Array new:8 withAll:0.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   789
    parameters atAllPut:nil.
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   790
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   791
    "Created: / 10.6.1998 / 14:30:40 / cg"
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   792
    "Modified: / 10.6.1998 / 14:30:57 / cg"
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   793
!
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   794
4269
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   795
evaluateProcessCharacter:char return:aSymbol
4447
1ea9b1d38a4b refactored character processing
Claus Gittinger <cg@exept.de>
parents: 4320
diff changeset
   796
    " evaluate the return value of the process state method except for state 0
2207
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   797
    "
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   798
4271
7b394cc48096 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4270
diff changeset
   799
    aSymbol isNil ifTrue:[
7b394cc48096 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4270
diff changeset
   800
        ^ self.
7b394cc48096 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4270
diff changeset
   801
    ].
2207
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   802
    aSymbol == #waitForNextChar ifTrue:[
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   803
        ^ self.
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   804
    ].
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   805
    aSymbol == #unknown ifTrue:[
4270
d109ce8a73a8 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4269
diff changeset
   806
        ('VT100TerminalView [info]: unknown character %1 in state %2'
4269
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   807
            bindWith:(char codePoint hexPrintString)
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   808
            with:state) infoPrintCR.
2207
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   809
        self doNothing.
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   810
        ^ self
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   811
    ].
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   812
    aSymbol == #sequenceComplete ifTrue:[
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   813
        self endOfSequence.
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   814
        ^ self.
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   815
    ].
4269
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   816
    self halt:'unexpected return value from state processing'
2207
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   817
!
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   818
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   819
nextPut:char 
4286
40cf32b2c3fa class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4283
diff changeset
   820
    " process a character (i.e. from the shell's output)"
937
9823aad16498 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 934
diff changeset
   821
2202
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
   822
    |processCharacterReturn|
932
af0236d38242 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 930
diff changeset
   823
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   824
    Debug ifTrue:[
2202
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
   825
        Transcript                                                       
4286
40cf32b2c3fa class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4283
diff changeset
   826
            show:'VT100: nextPut - state: '; show:state;
40cf32b2c3fa class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4283
diff changeset
   827
            show:' got: ';
2202
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
   828
            showCR:char storeString
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   829
    ].
4291
fd935fa1dfec class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4289
diff changeset
   830
"/ char == Character return ifTrue:[self halt].
4289
c20408301621 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4286
diff changeset
   831
    state == 0 ifTrue:[
c20408301621 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4286
diff changeset
   832
        processCharacterReturn := self processState0:char.
c20408301621 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4286
diff changeset
   833
        self evaluateProcessCharacter:char return:processCharacterReturn.
c20408301621 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4286
diff changeset
   834
        ^ self
c20408301621 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4286
diff changeset
   835
    ].
2207
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   836
    state == #gotReturn ifTrue:[
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   837
        processCharacterReturn := self processStateGotReturn:char.
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   838
        processCharacterReturn == #sequenceComplete ifTrue:[
2350
0f9ca9ecf77a the state have to be reset if sequence is complete in #gotReturn
penk
parents: 2268
diff changeset
   839
            self endOfSequence.
2207
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   840
            ^ self.
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   841
        ].
4269
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   842
        ^ self
2207
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   843
    ].
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   844
    state == #gotESC ifTrue:[
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   845
        processCharacterReturn := self processStateGotESC:char.
4269
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   846
        self evaluateProcessCharacter:char return:processCharacterReturn.
2207
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   847
        ^ self.
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   848
    ].
2207
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   849
    state == #gotCSI ifTrue:[
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   850
        processCharacterReturn := self processStateGotCSI:char.
4269
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   851
        self evaluateProcessCharacter:char return:processCharacterReturn.
2207
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   852
        ^ self.
2202
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
   853
    ].
2207
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   854
    state == #gotCSI2 ifTrue:[
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   855
        processCharacterReturn := self processStateGotCSI2:char.
4269
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   856
        self evaluateProcessCharacter:char return:processCharacterReturn.
2207
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   857
        ^ self.
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   858
    ].
2207
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   859
    state == #gotCSI3 ifTrue:[
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   860
        processCharacterReturn := self processStateGotCSI3:char.
4269
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   861
        self evaluateProcessCharacter:char return:processCharacterReturn.
2207
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   862
        ^ self.
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   863
    ].
2207
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   864
    state == #gotXTERMCSI ifTrue:[
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   865
        processCharacterReturn := self processStateGotXTERMCSI:char.
4269
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   866
        self evaluateProcessCharacter:char return:processCharacterReturn.
2207
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   867
        ^ self.
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   868
    ].
4221
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   869
    state == #gotXTERMCSI2 ifTrue:[
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   870
        processCharacterReturn := self processStateGotXTERMCSI2:char.
4269
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   871
        self evaluateProcessCharacter:char return:processCharacterReturn.
4221
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   872
        ^ self.
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   873
    ].
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
   874
    self halt:'unknown state'.
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   875
    self doNothing.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   876
    ^ self
2202
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
   877
!
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
   878
2207
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   879
processState0:char 
5245
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
   880
    "next char in initial state
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
   881
     change state or processing character; 
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
   882
     return 
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
   883
        #waitForNextChar - state was changed and wait for next characters
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
   884
        #sequenceComplete - command processed
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
   885
        #unknown - unknown character for this state
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
   886
    "
2202
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
   887
5155
7053555ceac7 #OTHER by mawalch
mawalch
parents: 5005
diff changeset
   888
    char codePoint < 32 ifTrue:[
2207
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   889
        (char == Character esc) ifTrue:[
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   890
            state := #gotESC.
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   891
            ^ #waitForNextChar
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   892
        ].
4269
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   893
2202
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
   894
        (    char == Character nl   "nl or '\n'"
4283
0d1120e6734b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4271
diff changeset
   895
        or:[(char == (Character value:16r0b))]) ifTrue:[
2207
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   896
            translateNLToCRNL == true ifTrue:[
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   897
                self endEntry.
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   898
                self cursorToBeginOfLine.
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   899
            ].
2202
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
   900
            self endEntry.
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
   901
            self doCursorDown:1.
2207
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   902
            ^ #waitForNextChar.
2202
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
   903
        ].
4269
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   904
2202
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
   905
        (char == Character return) ifTrue:[
4291
fd935fa1dfec class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4289
diff changeset
   906
            (rangeEndLine notNil and:[rangeEndLine ~~ numberOfLines]) ifTrue:[
2202
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
   907
                self endEntry.
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
   908
                self cursorToBeginOfLine.
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
   909
            ] ifFalse:[
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
   910
                state := #gotReturn.
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
   911
            ].
2207
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   912
            ^ #waitForNextChar.
2202
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
   913
        ].
4269
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   914
2202
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
   915
        (char == Character backspace) ifTrue:[
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
   916
            self endEntry.
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
   917
            self cursorLeft.
2207
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   918
            ^ #waitForNextChar    "/ doBackspace
2202
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
   919
        ].
4269
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   920
2202
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
   921
        (char == Character bell) ifTrue:[
2782
da507ebdf37d *** empty log message ***
penk
parents: 2498
diff changeset
   922
            self shown ifTrue:[
da507ebdf37d *** empty log message ***
penk
parents: 2498
diff changeset
   923
                self beep.
da507ebdf37d *** empty log message ***
penk
parents: 2498
diff changeset
   924
            ].
2207
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   925
            ^ #waitForNextChar
2202
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
   926
        ].
4269
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   927
2202
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
   928
        (char == (Character value:5)) ifTrue:[
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
   929
            "/ Transmission answerback message
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
   930
            self reportTerminalType.
2207
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   931
            ^ #waitForNextChar                         
2202
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
   932
        ].
4269
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   933
2202
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
   934
        (    char == (Character value:16r18) "/Cancel
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
   935
        or:[ char == (Character value:16r1A) "/Substitute
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
   936
        ]) ifTrue:[
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
   937
            self nextPut:(Character value:16r2).
2207
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   938
            ^ #waitForNextChar                         
2202
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
   939
        ]
4269
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   940
2207
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   941
        "
4269
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   942
        all unsupported control characters (also vt102):
2207
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   943
        Character value:16r3    ->End of text
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   944
        Character value:16r4    ->End of transmission
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   945
        Character tab           ->Horizontal tab
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   946
        Character value:16rc    ->Form feed
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   947
        Character value:16re    ->SO shift out
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   948
        Character value:16rf    ->SI shift in
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   949
        Character value:16r11   ->Device control 1
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   950
        Character value:16r13   ->Device control 3
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   951
        ".
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   952
        char ~~ Character tab ifTrue:[
5155
7053555ceac7 #OTHER by mawalch
mawalch
parents: 5005
diff changeset
   953
            char codePoint ~~ 0 ifTrue:[
2207
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   954
                ('VT100 [info]: unhandled control key: ' , char storeString) infoPrintCR.
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   955
            ].
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   956
            ^ #waitForNextChar.
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
   957
        ]
2202
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
   958
    ].
4447
1ea9b1d38a4b refactored character processing
Claus Gittinger <cg@exept.de>
parents: 4320
diff changeset
   959
    self show:char.
4271
7b394cc48096 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4270
diff changeset
   960
    ^ nil
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   961
!
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   962
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   963
processStateGotCSI2:char
5245
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
   964
    "next char after 'ESC [ ?' (CSI ?)
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
   965
     change state or processing character; 
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
   966
     return 
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
   967
        #waitForNextChar - state was changed and wait for next characters
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
   968
        #sequenceComplete - command processed
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
   969
        #unknown - unknown character for this state
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
   970
    "
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   971
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   972
    char == $; ifTrue: [
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   973
        currentParam := (currentParam + 1) min: 8.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   974
        ^ #waitForNextChar
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   975
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   976
    char isDigit ifTrue: [
2194
d008bb991def adding comments
penk
parents: 2192
diff changeset
   977
        self addToParameter:char.
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   978
        ^ #waitForNextChar
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   979
    ].
4269
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   980
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   981
    TraceCSI == true ifTrue:[ self traceCSI:char ].
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
   982
    (char == $l or:[char == $h]) ifTrue: [
5245
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
   983
        "/ (parameters at: 1) = 1 ifTrue: [app_cur_keys:(char == $h) "DECCKM"].
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
   984
        "/ (parameters at: 1) = 2 ifTrue: [vt52mode:(char == $l) "DECANM"].
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
   985
        "/ (parameters at: 1) = 3 ifTrue: [mode132:(char == $h) "DECCOLM"].
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
   986
        "/ (parameters at: 1) = 4 ifTrue: [smoothScroll:(char == $h) "DECSCLM"].
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
   987
        "/ (parameters at: 1) = 5 ifTrue: [reverseVideo:(char == $h) "DECSCNM"].
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
   988
        "/ (parameters at: 1) = 6 ifTrue: [originMode:(char == $h) "DECOM"].
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
   989
        "/ (parameters at: 1) = 8 ifTrue: [autoKbdRepeat:(char == $h) "DECARM"].
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
   990
        "/ (parameters at: 1) = 25 ifTrue: [cursorVisible:(char == $h) "DECTCEM"].
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   991
        self endEntry.
5245
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
   992
        (parameters at: 1) = 7 ifTrue: [self autoMargin:(char == $h) "DECAWM"].
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   993
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
   994
    ].
5245
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
   995
    (char == $n) ifTrue: [
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
   996
        "/ (parameters at: 1) = 15 ifTrue: [ ... ]. -- What is the printer status?
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
   997
        "/ (parameters at: 1) = 25 ifTrue: [ ... ]. -- Are user-defined keys locked or unlocked?
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
   998
        "/ (parameters at: 1) = 26 ifTrue: [ ... ]. -- What is the keyboard language?
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
   999
    ].    
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1000
    ^ #unknown
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1001
!
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1002
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1003
processStateGotCSI3:char
5245
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1004
    "next char after 'ESC ('
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1005
     change state or processing character; 
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1006
     return 
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1007
        #waitForNextChar - state was changed and wait for next characters
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1008
        #sequenceComplete - command processed
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1009
        #unknown - unknown character for this state
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1010
    "
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1011
4269
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
  1012
    TraceCSI == true ifTrue:[ self traceCSI:char ].
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1013
    ^ #unknown
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1014
!
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1015
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1016
processStateGotCSI:char
5245
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1017
    "next char after 'ESC> [' (CSI)
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1018
     change state or processing character; 
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1019
     return 
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1020
        #waitForNextChar - state was changed and wait for next characters
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1021
        #sequenceComplete - command processed
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1022
        #unknown - unknown character for this state
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1023
    "
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1024
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1025
    char == $? ifTrue: [
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1026
        state := #gotCSI2.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1027
        ^ #waitForNextChar
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1028
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1029
    char == $; ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1030
        currentParam := (currentParam + 1) min: 8.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1031
        ^ #waitForNextChar
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1032
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1033
    char isDigit ifTrue: [
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1034
        self addToParameter:char.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1035
        ^ #waitForNextChar
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1036
    ].
4269
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
  1037
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
  1038
    TraceCSI == true ifTrue:[ self traceCSI:char ].
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1039
    char == $@ ifTrue: [
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1040
        self endEntry.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1041
        self insertCharacters.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1042
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1043
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1044
    char == $A ifTrue: [
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1045
        "/ ESC[#A                         - Moves cursor up # lines
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1046
        self endEntry.
2202
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
  1047
        self doCursorUp:(self getParameter:1 withDefault:1).
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1048
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1049
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1050
    char == $B ifTrue: [
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1051
        "/ ESC[#B                         - Moves cursor down # lines
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1052
        self endEntry.
2202
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
  1053
        self doCursorDown:(self getParameter:1 withDefault:1).
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1054
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1055
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1056
    char == $C ifTrue: [
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1057
        "/ ESC[#C                         - Moves cursor forward # spaces
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1058
        self endEntry.
2202
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
  1059
        self doCursorRight:(self getParameter:1 withDefault:1).
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1060
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1061
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1062
    char == $D ifTrue: [
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1063
        "/ ESC[#D                         - Moves cursor back # spaces
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1064
        self endEntry.
2202
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
  1065
        self doCursorLeft:(self getParameter:1 withDefault:1).
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1066
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1067
    ].
4296
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
  1068
    char == $E ifTrue: [
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
  1069
        "/ ESC[#E                         
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
  1070
        self endEntry.
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
  1071
        self doCursorNextLine:(self getParameter:1 withDefault:1).
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
  1072
        ^ #sequenceComplete
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
  1073
    ].
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
  1074
    char == $F ifTrue: [
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
  1075
        "/ ESC[#F                         
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
  1076
        self endEntry.
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
  1077
        self doCursorPreviousLine:(self getParameter:1 withDefault:1).
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
  1078
        ^ #sequenceComplete
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
  1079
    ].
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
  1080
    (char == $G) ifTrue: [
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
  1081
        "/ ESC[#;#G                       - Moves cusor to column # in current line
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
  1082
        self endEntry.
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
  1083
        self moveToColumn.
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
  1084
        ^ #sequenceComplete
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
  1085
    ].
2202
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
  1086
    (char == $H or:[char == $f]) ifTrue: [
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1087
        "/ ESC[#;#H or ESC[#;#f           - Moves cusor to line #, column #
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1088
        self endEntry.
2202
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
  1089
        self move.
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1090
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1091
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1092
    char == $J ifTrue: [
2217
070c39549895 erase sequences and reverse index fixed
penk
parents: 2207
diff changeset
  1093
        "/ ESC[0J                         - Clear screen to end 
070c39549895 erase sequences and reverse index fixed
penk
parents: 2207
diff changeset
  1094
        "/ ESC[1J                         - Clear screen from beginning 
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1095
        "/ ESC[2J                         - Clear entire screen and home cursor
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1096
        self endEntry.
2207
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
  1097
        self doClearDisplay:(self getParameter:1 withDefault:0).
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1098
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1099
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1100
    char == $K ifTrue: [
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1101
        "/ ESC[K                          - Clear to end of line
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1102
        self endEntry.
2207
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
  1103
        self clearLines:(self getParameter:1 withDefault:0).
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1104
        Debug ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1105
            Transcript showCR:'clear to EOL'.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1106
        ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1107
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1108
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1109
    char == $L ifTrue: [
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1110
        self endEntry.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1111
        self insertLines.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1112
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1113
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1114
    char == $M ifTrue: [
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1115
        self endEntry.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1116
        self deleteLines.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1117
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1118
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1119
    char == $P ifTrue: [
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1120
        self endEntry.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1121
        self deleteCharacters.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1122
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1123
    ].
2202
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
  1124
    char == $R ifTrue: [
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1125
        "/ ESC[#;#R                       - Reports current cursor line & column
2207
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
  1126
        ^ #unknown
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1127
    ].
4296
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
  1128
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
  1129
    char == $c ifTrue:[
6066
fc59a1fcfdcd Cherry-picked changes to `TerminalView` from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5814
diff changeset
  1130
        "/ ESC[c - terminal-type query 3
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1131
        self reportTerminalType.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1132
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1133
    ].
4296
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
  1134
    char == $d ifTrue:[
6066
fc59a1fcfdcd Cherry-picked changes to `TerminalView` from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5814
diff changeset
  1135
        "/ ESC[d                           
4296
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
  1136
        self endEntry.
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
  1137
        self moveToLine.
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
  1138
        ^ #sequenceComplete
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
  1139
    ].
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1140
    char == $n ifTrue: [
6066
fc59a1fcfdcd Cherry-picked changes to `TerminalView` from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5814
diff changeset
  1141
        "/ ESC[n                           
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1142
        self report.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1143
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1144
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1145
    char == $m ifTrue: [
6066
fc59a1fcfdcd Cherry-picked changes to `TerminalView` from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5814
diff changeset
  1146
        "/ ESC[m                           - character attributes (SGR)
fc59a1fcfdcd Cherry-picked changes to `TerminalView` from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5814
diff changeset
  1147
        self endEntry.
4297
da54726fd311 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4296
diff changeset
  1148
        1 to:currentParam do:[:pI |
da54726fd311 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4296
diff changeset
  1149
            self displayMode:(self getParameter:pI withDefault:0).
da54726fd311 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4296
diff changeset
  1150
        ].
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1151
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1152
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1153
    char == $r ifTrue: [
6066
fc59a1fcfdcd Cherry-picked changes to `TerminalView` from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5814
diff changeset
  1154
        "/ ESC[r
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1155
        self endEntry.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1156
        self resetDefaults.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1157
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1158
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1159
    char == $s ifTrue: [
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1160
        "/ ESC[s                          - Saves cursor position for recall later
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1161
        self endEntry.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1162
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1163
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1164
    char == $u ifTrue: [
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1165
        "/ ESC[u                          - Return to saved cursor position
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1166
        self endEntry.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1167
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1168
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1169
    ^ #unknown
6066
fc59a1fcfdcd Cherry-picked changes to `TerminalView` from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5814
diff changeset
  1170
fc59a1fcfdcd Cherry-picked changes to `TerminalView` from CVS
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5814
diff changeset
  1171
    "Modified: / 30-05-2017 / 09:24:50 / cg"
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1172
!
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1173
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1174
processStateGotESC:char
5245
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1175
    "next char after ESC
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1176
     change state or processing character; 
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1177
     return 
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1178
        #waitForNextChar - state was changed and wait for next characters
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1179
        #sequenceComplete - command processed
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1180
        #unknown - unknown character for this state
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1181
    "
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1182
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1183
    char == $[ ifTrue: [ 
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1184
        "/ ESC-[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1185
        state := #gotCSI. 
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1186
        ^ #waitForNextChar
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1187
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1188
    char == $] ifTrue: [ 
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1189
        "/ ESC-]
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1190
        "/xterm sequence
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1191
        state := #gotXTERMCSI. 
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1192
        ^ #waitForNextChar
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1193
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1194
    char == $( ifTrue: [ 
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1195
        "/ ESC-(
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1196
        "/ todo: set-charset 0 ...
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1197
        state := #gotCSI3.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1198
        ^ #waitForNextChar
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1199
    ].
4269
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
  1200
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
  1201
    TraceCSI == true ifTrue:[ self traceCSI:char ].
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1202
    char == $) ifTrue: [ 
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1203
        "/ ESC-(
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1204
        "/ todo: set-charset 1 ...
2207
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
  1205
        ^ #unknown
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1206
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1207
    char == $7 ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1208
        "/ ESC-7
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1209
        self endEntry.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1210
        self saveCursor.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1211
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1212
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1213
    char == $8 ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1214
        "/ ESC-7
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1215
        self endEntry.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1216
        self restoreCursor.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1217
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1218
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1219
    char == $M ifTrue:[
2217
070c39549895 erase sequences and reverse index fixed
penk
parents: 2207
diff changeset
  1220
        "/ ESC-M cursor up
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1221
        self endEntry.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1222
        self doCursorUp:1.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1223
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1224
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1225
    char == $D ifTrue:[
2217
070c39549895 erase sequences and reverse index fixed
penk
parents: 2207
diff changeset
  1226
        "/ ESC-D Index cursor down one line in same column
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1227
        self endEntry.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1228
        self doCursorDown:1.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1229
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1230
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1231
    char == $E ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1232
        "/ ESC-E
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1233
        "/ TODO add_lines
2217
070c39549895 erase sequences and reverse index fixed
penk
parents: 2207
diff changeset
  1234
        self endEntry.
070c39549895 erase sequences and reverse index fixed
penk
parents: 2207
diff changeset
  1235
        self cursorReturn.
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1236
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1237
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1238
    (char == $Z) ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1239
        "/ terminal-type query 2
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1240
        self reportTerminalType.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1241
        ^ #sequenceComplete
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1242
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1243
    char == $= ifTrue: [
4291
fd935fa1dfec class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4289
diff changeset
  1244
        "/ enter application keypad mode
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1245
        "/ ESC-=
4291
fd935fa1dfec class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4289
diff changeset
  1246
        alternateKeypadMode := true.
4293
ade403689ce1 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4291
diff changeset
  1247
        kbdSequences := (self vt100AlternativeKeyCodes).
4291
fd935fa1dfec class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4289
diff changeset
  1248
        ^ #sequenceComplete
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1249
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1250
    char == $> ifTrue: [
4291
fd935fa1dfec class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4289
diff changeset
  1251
        "/ exit application keypad mode
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1252
        "/ ESC-<
4291
fd935fa1dfec class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4289
diff changeset
  1253
        alternateKeypadMode := false.
4293
ade403689ce1 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4291
diff changeset
  1254
        kbdSequences := (self vt100KeyCodes).
4291
fd935fa1dfec class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4289
diff changeset
  1255
        ^ #sequenceComplete
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1256
    ].
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1257
    ^ #unknown
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1258
!
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1259
2202
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
  1260
processStateGotReturn:char
5245
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1261
    "next char after CR
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1262
     change state or processing character; 
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1263
     return 
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1264
        #waitForNextChar - state was changed and wait for next characters
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1265
        #sequenceComplete - command processed
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1266
        #unknown - unknown character for this state
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1267
    "
2202
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
  1268
2207
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
  1269
    state := 0.
2202
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
  1270
    char == Character nl ifTrue:[
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
  1271
        "/ cr-nl
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
  1272
        "/ stay in buffering mode.
4448
da0df393ce27 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4447
diff changeset
  1273
        self cr.
2207
d352a2f0a83a no changes on terminal device anymore
penk
parents: 2203
diff changeset
  1274
        ^ #sequenceComplete.
2202
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
  1275
    ].
4291
fd935fa1dfec class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4289
diff changeset
  1276
2202
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
  1277
    self endEntry.
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
  1278
    self cursorToBeginOfLine.
4448
da0df393ce27 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4447
diff changeset
  1279
da0df393ce27 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4447
diff changeset
  1280
    (char == Character esc) ifTrue:[
da0df393ce27 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4447
diff changeset
  1281
        state := #gotESC.
da0df393ce27 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4447
diff changeset
  1282
    ].
da0df393ce27 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4447
diff changeset
  1283
    "/ continue in initial state
da0df393ce27 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4447
diff changeset
  1284
    ^ #waitForNextChar
2202
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
  1285
!
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
  1286
4221
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
  1287
processStateGotXTERMCSI2:char
5245
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1288
    "next char after 'ESC ] ;'
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1289
     change state or processing character; 
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1290
     return 
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1291
        #waitForNextChar - state was changed and wait for next characters
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1292
        #sequenceComplete - command processed
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1293
        #unknown - unknown character for this state
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1294
    "
4221
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
  1295
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
  1296
    char == (Character value:7) ifTrue: [
4269
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
  1297
        TraceCSI == true ifTrue:[ self traceCSI:char ].
4221
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
  1298
        parameters at:currentParam put:(parameters at:currentParam) contents.
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
  1299
        self osCommand.
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
  1300
        ^ #sequenceComplete
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
  1301
    ].
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
  1302
    "/ add to parameter
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
  1303
    (parameters at:currentParam) nextPut:char.
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
  1304
    ^ #waitForNextChar
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
  1305
!
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
  1306
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1307
processStateGotXTERMCSI:char
5245
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1308
    "next char after 'ESC ]'
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1309
     change state or processing character; 
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1310
     return 
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1311
        #waitForNextChar - state was changed and wait for next characters
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1312
        #sequenceComplete - command processed
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1313
        #unknown - unknown character for this state
32078de67b14 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5155
diff changeset
  1314
    "
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1315
4221
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
  1316
    char == $; ifTrue:[
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
  1317
        currentParam := (currentParam + 1) min: 8.
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
  1318
        parameters at:currentParam put:(WriteStream on:'').
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
  1319
        state := #gotXTERMCSI2. 
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
  1320
        ^ #waitForNextChar
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
  1321
    ].
4269
edb108492a92 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4221
diff changeset
  1322
4221
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
  1323
    char isDigit ifTrue: [
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
  1324
        self addToParameter:char.
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
  1325
        ^ #waitForNextChar
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
  1326
    ].
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 2116
diff changeset
  1327
    ^ #unknown
920
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1328
! !
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1329
930
3186aa6efe72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
  1330
!VT100TerminalView methodsFor:'queries'!
3186aa6efe72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
  1331
2202
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
  1332
getParameter:para withDefault:default
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
  1333
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
  1334
    |parameter|
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
  1335
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
  1336
    parameter := (parameters at:para).
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
  1337
    ^ ((parameter isNil or:[parameter = 0]) ifTrue:[default] ifFalse:[parameter]).
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
  1338
!
263eab24b870 no changes on terminal device anymore
penk
parents: 2194
diff changeset
  1339
930
3186aa6efe72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
  1340
terminalType
1420
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
  1341
    "returns a string describing this terminal (usually, this is
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
  1342
     passed down to the shell as TERM environment variable).
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
  1343
     Here, 'vt100' is returned."
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
  1344
4296
c52538ab6102 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4293
diff changeset
  1345
    "/ ^ 'xterm'.
1355
df09d1e16165 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1352
diff changeset
  1346
    ^ 'vt100'
930
3186aa6efe72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
  1347
3186aa6efe72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
  1348
    "Created: / 10.6.1998 / 16:22:39 / cg"
1355
df09d1e16165 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1352
diff changeset
  1349
    "Modified: / 5.5.1999 / 11:22:40 / cg"
930
3186aa6efe72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
  1350
! !
3186aa6efe72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
  1351
920
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1352
!VT100TerminalView class methodsFor:'documentation'!
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1353
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1354
version
4800
92d8d63251d8 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4560
diff changeset
  1355
    ^ '$Header$'
4286
40cf32b2c3fa class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4283
diff changeset
  1356
!
40cf32b2c3fa class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4283
diff changeset
  1357
40cf32b2c3fa class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4283
diff changeset
  1358
version_CVS
4800
92d8d63251d8 class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 4560
diff changeset
  1359
    ^ '$Header$'
5568
a44d0289bfbf `TerminalView`: added (XTerm) keycodes for 'Del' and 'End' keys
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5245
diff changeset
  1360
!
a44d0289bfbf `TerminalView`: added (XTerm) keycodes for 'Del' and 'End' keys
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5245
diff changeset
  1361
a44d0289bfbf `TerminalView`: added (XTerm) keycodes for 'Del' and 'End' keys
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5245
diff changeset
  1362
version_HG
a44d0289bfbf `TerminalView`: added (XTerm) keycodes for 'Del' and 'End' keys
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5245
diff changeset
  1363
a44d0289bfbf `TerminalView`: added (XTerm) keycodes for 'Del' and 'End' keys
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5245
diff changeset
  1364
    ^ '$Changeset: <not expanded> $'
920
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1365
! !
4221
78dfbf10887b class: VT100TerminalView
Claus Gittinger <cg@exept.de>
parents: 2782
diff changeset
  1366