application cursor key mode in the vt100 emulator

Ian Piumarta ian.piumarta at
Wed Feb 19 14:13:38 UTC 2003


Speaking of telnet clients and state machines, here's a changeset to keep
"vi" users happy.  It fixes the enabling of "application cursor keys" mode
that was preventing the cursor keys from working properly in vi.

-------------- next part --------------
'From Squeak3.2 of 15 January 2002 [latest update: #4881] on 18 February 2003 at 11:07:36 pm'!

!VT102Emulator methodsFor: 'control sequences-DEC' stamp: 'ikp 2/18/2003 23:01'!
decsmSingle: param
	"DEC private Set Mode"

	param == 1	ifTrue: [self trace:		'DECCKM		(cursor key mode: application)'. ^self setCursorKeysApplication].
	param == 2	ifTrue: [self trace:		'DECANM	(ansi mode: ANSI)'.  ^self setMode: #ansi].
	param == 3	ifTrue: [self trace:		'DECCOLM	(column mode: 132)'. ^window setWidth: 132].
	param == 4	ifTrue: [self trace:		'DECSCLM	(scroll mode: smooth)'.  ^window setSmoothScroll: true].
	param == 5	ifTrue: [self trace:		'DECSCNM	(screen mode: reverse)'.  ^window rv: true].
	param == 6	ifTrue: [self trace:		'DECOM		(origin mode: relative)'. ^window setRelativeOrigin: true; activePosition: 1 at 1].
	param == 7	ifTrue: [self trace:		'DECAWM	(autowrap mode: on)'. ^window setAutoWrap: true].
	param == 8	ifTrue: [^self trace:		'DECARM	(autorepeat mode: on)'].
	param == 18	ifTrue: [^self trace:		'DECPFF		(print FF: on)'].
	param == 19	ifTrue: [^self trace:		'DECPEX		(print extent: screen)'].
	"Emacs somtimes sends this.  Ho hum..."
	param == 25	ifTrue: [^window setShowCursor: true].

	self debug: 'DECSM' with: param.! !

!VT102Emulator methodsFor: 'private' stamp: 'ikp 2/18/2003 23:04'!

	| esc |
	esc _ Character escape asString.
		at: 128+28 put: (esc,'OD') asByteArray;		"left"
		at: 128+29 put: (esc,'OC') asByteArray;		"right" 
		at: 128+30 put: (esc,'OA') asByteArray;		"up"
		at: 128+31 put: (esc,'OB') asByteArray.		"down" ! !

More information about the Squeak-dev mailing list