[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference hydra::amiga_v1

Title:AMIGA NOTES
Notice:Join us in the *NEW* conference - HYDRA::AMIGA_V2
Moderator:HYDRA::MOORE
Created:Sat Apr 26 1986
Last Modified:Wed Feb 05 1992
Last Successful Update:Fri Jun 06 1997
Number of topics:5378
Total number of notes:38326

4781.0. "Northgate Keymap" by VERGA::MACDONALD (Home of Digital Realtime Pubs) Thu May 30 1991 00:05

    Does anyone have a keymap for the Northgate Omnikey Ultra thast
    correctly addresses the numeric keypad? The keymap I am using shifts
    the functions of the /, *, -, and + keys as shown below:
    
    A2000 Keypad          Northgate Keypad
    ------------          ----------------
    
    (  )  /  *            Num  /  *  -
    
    7  8  9  -            7   8   9  +
    
    4  5  6  +            4   5   6  =
    
    1  2  3  E            1   2   3  E
             n                       n
    0     .  t            0       .  t
             e                       e
             r                       r
    
    
    
    Here's the Northgate keymap source:
    
    
    (see reply)
    
T.RTitleUserPersonal
Name
DateLines
4781.1Northgate Keymap SourceVERGA::MACDONALDHome of Digital Realtime PubsThu May 30 1991 00:08655
	*********************************************************
	*	Standard USA1  Skeleton KeyMap by BaudMan 	*
	*********************************************************

* Assembly Keycap created by Greg Cunningham, author of DiskMaster
* and Baud Bandit. This code is freeware. Use it, but don't sell
* it or otherwise abuse it.
*
* NorthGate extended keys added by BaudMan
*
* All changes have a "NorthGate" comment.  Use your text search.

* How to assemble using the SAS assembler:
*
*   Asm NorthGate
*   BLink NorthGate.o
*   Copy NorthGate Devs:KeyMaps

**  flags for KeyMapTypes
KC_NOQUAL	EQU	0	; I'll give you my single char/string no matter what
KCF_SHIFT	EQU	1	; I have lowercase & SHIFT (I ignore other quals)
KCF_ALT 	EQU	2	; I have lowercase & ATL (ignore SHIFT and CTRL)
KCF_CONTROL	EQU	4	; I have lowercase & CTLR (ignore SHIFT and ALT)

KC_VANILLA	EQU	KCF_SHIFT!KCF_ALT!KCF_CONTROL ; I've got it all (magic CTRL)

KCF_DOWNUP	EQU	8	; gimme upstroke also (dead only)... wha?

KCF_DEAD	EQU	$20	; use dead prefix bytes (Label); 1 to 8 prefixes
KCF_STRING	EQU	$40	; KeyMap entry is label to string table; 1 to 8
KCF_NOP 	EQU	$80	; NO-OP, this key ain't worth beans


**  dead prefix flags
DPF_CHAR	EQU	0	; DPF_CHAR,'c' ( or 0,'c' ) single char for each
DPF_MOD 	EQU	1	; DPF_MOD,mod_table_offset
DPF_DEAD	EQU	8	; DPF_DEAD,mod_number ; set mod flag to 1-5


**  skip this stuff
DP_2DINDEXMASK	EQU	$0F	; mask for index for 1st of two dead keys
DP_2DFACSHIFT	EQU	4	; shift for factor for 1st of two dead keys


****************************** Reference **************************************
*
* KeyMapType		KeyMap	(None is the lowercase character, ie. 'a')
*
* KCF_NOP		dc.l	0		really really dead
* KC_NOQUAL		dc.b	0,0,0,None	all quals=None
* KCF_SHIFT		dc.b	0,0,SHIFT,None	If SHIFT is down use shift char
* KCF_ALT		dc.b	0,0,ALT,None	If ALT is down use ALT char
* KCF_CONTROL		dc.b	0,0,CTRL,None	If CTRL is down use CTRL char
*
* KCF_SHIFT!KCF_ALT	dc.b	SHIFT-ALT,ALT,SHIFT,None	ignore CTRL
* KCF_SHIFT!KCF_CONTROL dc.b	SHIFT-CTRL,CTRL,SHIFT,None	ignore ALT
* KCF_CONTROL!KCF_ALT	dc.b	CTRL-ALT,ALT,CTRL,None		ignore SHIFT
* KC_VANILLA		dc.b	SHIFT-ALT,ALT,SHIFT,None	CTRL when acceptable
*
* KCF_DEAD		dc.l	Label	define None - 1 dead prefix for all
* KCF_DEAD!KC_NOQUAL	dc.l	Label	<same as above, remember NOQUAL=0>
* KCF_DEAD!KCF_VANILLA	dc.l	Label	define all 8 deads
* KCF_DEAD!KCF_ALT	dc.l	Label	define None & ALT deads
*
* KCF_STRING		dc.l	Label	define None - 1 string for all (NOQUAL)
* KCF_STRING!KCF_SHIFT	dc.l	Label	None,SHIFT
*
* the rest should be simple.... :-)
*******************************************************************************


	SECTION KeyMap,CODE

	moveq	#20,d0
	rts

	dc.l	0
	dc.b	0,0
	dc.l	MapName 		; way way down at the end of the file
	dc.l	LoKeyMapTypes		; why the hi/lo crap anyway?
	dc.l	LoKeyMap
	dc.l	LoCapsable
	dc.l	LoRepeatable
	dc.l	HiKeyMapTypes
	dc.l	HiKeyMap
	dc.l	HiCapsable
	dc.l	HiRepeatable

LoCapsable	;76543210FEDCBA98	----CapsLock will work as SHIFT (+quals)
	dc.w	%0000000000000000 ;0x
	dc.w	%1111111100000011 ;1x (NorthGate 1C)
	dc.w	%1111111100000001 ;2x
	dc.w	%1111111000000000 ;3x

HiCapsable	;76543210FEDCBA98
	dc.w	%0000000000000000 ;4x (NorthGate 47-49)
	dc.w	%0000000000000000 ;5x (A2000     5A-5E)
	dc.w	%0000000000000000 ;6x (NorthGate 6B-6F)
	dc.w	0

LoRepeatable	;76543210FEDCBA98	----Key repeats if held down (any qual)
	dc.w	%1111111110111111 ;0x
	dc.w	%1111111111101111 ;1x (NorthGate 1C)
	dc.w	%1111111111101111 ;2x
	dc.w	%1111111111110111 ;3x

HiRepeatable	;76543210FEDCBA98
	dc.w	%1100011111110111 ;4x (NorthGate 47-49)
	dc.w	%1111111101111111 ;5x (A2000     5A-5E)
	dc.w	%0000000011111000 ;6x (NorthGate 6B-6F)
	dc.w	0

LoKeyMapTypes
	dc.b	KC_VANILLA		; 00 `
	dc.b	KCF_SHIFT!KCF_ALT	; 01 1
	dc.b	KC_VANILLA		; 02 2
	dc.b	KCF_SHIFT!KCF_ALT	; 03 3
	dc.b	KCF_SHIFT!KCF_ALT	; 04 4
	dc.b	KCF_SHIFT!KCF_ALT	; 05 5
	dc.b	KC_VANILLA		; 06 6
	dc.b	KCF_SHIFT!KCF_ALT	; 07 7
	dc.b	KCF_SHIFT!KCF_ALT	; 08 8
	dc.b	KCF_SHIFT!KCF_ALT	; 09 9
	dc.b	KCF_SHIFT!KCF_ALT	; 0A 0
	dc.b	KC_VANILLA		; 0B -
	dc.b	KCF_SHIFT		; 0C =
	dc.b	KC_VANILLA		; 0D \
	dc.b	KCF_NOP 		; 0E
	dc.b	KC_NOQUAL		; 0F keypad 0

	dc.b	KC_VANILLA		; 10 Q
	dc.b	KC_VANILLA		; 11 W
	dc.b	KCF_DEAD!KC_VANILLA	; 12 E
	dc.b	KC_VANILLA		; 13 R
	dc.b	KC_VANILLA		; 14 T
	dc.b	KCF_DEAD!KC_VANILLA	; 15 Y
	dc.b	KCF_DEAD!KC_VANILLA	; 16 U
	dc.b	KCF_DEAD!KC_VANILLA	; 17 I
	dc.b	KCF_DEAD!KC_VANILLA	; 18 O
	dc.b	KC_VANILLA		; 19 P
	dc.b	KC_VANILLA		; 1A [
	dc.b	KC_VANILLA		; 1B ]
	dc.b	KCF_STRING		; 1C NorthGate RateSelect
	dc.b	KC_NOQUAL		; 1D keypad 1
	dc.b	KC_NOQUAL		; 1E keypad 2
	dc.b	KC_NOQUAL		; 1F keypad 3

	dc.b	KCF_DEAD!KC_VANILLA	; 20 A
	dc.b	KC_VANILLA		; 21 S
	dc.b	KC_VANILLA		; 22 D
	dc.b	KCF_DEAD!KC_VANILLA	; 23 F
	dc.b	KCF_DEAD!KC_VANILLA	; 24 G
	dc.b	KCF_DEAD!KC_VANILLA	; 25 H
	dc.b	KCF_DEAD!KC_VANILLA	; 26 J
	dc.b	KCF_DEAD!KC_VANILLA	; 27 K
	dc.b	KC_VANILLA		; 28 L
	dc.b	KCF_SHIFT		; 29 ;
	dc.b	KCF_SHIFT		; 2A '
	dc.b	KCF_NOP 		; 2B
	dc.b	KCF_NOP 		; 2C
	dc.b	KC_NOQUAL		; 2D keypad 4
	dc.b	KC_NOQUAL		; 2E keypad 5
	dc.b	KC_NOQUAL		; 2F keypad 6

	dc.b	KCF_SHIFT!KCF_ALT	; 30	between SHIFT & Z
	dc.b	KC_VANILLA		; 31 Z
	dc.b	KC_VANILLA		; 32 X
	dc.b	KC_VANILLA		; 33 C
	dc.b	KC_VANILLA		; 34 V
	dc.b	KC_VANILLA		; 35 B
	dc.b	KCF_DEAD!KC_VANILLA	; 36 N
	dc.b	KC_VANILLA		; 37 M
	dc.b	KCF_SHIFT		; 38 ,
	dc.b	KCF_SHIFT		; 39 .
	dc.b	KCF_SHIFT		; 3A /
	dc.b	KCF_NOP 		; 3B
	dc.b	KC_NOQUAL		; 3C keypad .
	dc.b	KC_NOQUAL		; 3D keypad 7
	dc.b	KC_NOQUAL		; 3E keypad 8
	dc.b	KC_NOQUAL		; 3F keypad 9

HiKeyMapTypes
	dc.b	KCF_DEAD!KCF_ALT	; 40 SPACE
	dc.b	KC_NOQUAL		; 41 BACKSPACE
	dc.b	KCF_STRING!KCF_SHIFT	; 42 TAB
	dc.b	KC_NOQUAL		; 43 ENTER
	dc.b	KCF_CONTROL		; 44 RETURN
	dc.b	KCF_ALT 		; 45 ESCAPE
	dc.b	KC_NOQUAL		; 46 DEL
	dc.b	KC_NOQUAL		; 47 NorthGate PrintScreen
	dc.b	KC_NOQUAL		; 48 NorthGate ScrollLock
	dc.b	KC_NOQUAL		; 49 NorthGate Pause
	dc.b	KC_NOQUAL		; 4A keypad -
	dc.b	KCF_NOP 		; 4B

	dc.b	KCF_STRING!KCF_SHIFT	; 4C up arrow
	dc.b	KCF_STRING!KCF_SHIFT	; 4D down arrow
	dc.b	KCF_STRING!KCF_SHIFT	; 4E right arrow
	dc.b	KCF_STRING!KCF_SHIFT	; 4F left arrow

	dc.b	KCF_STRING!KCF_SHIFT	; 50 F1
	dc.b	KCF_STRING!KCF_SHIFT	; 51 F2
	dc.b	KCF_STRING!KCF_SHIFT	; 52 F3
	dc.b	KCF_STRING!KCF_SHIFT	; 53 F4
	dc.b	KCF_STRING!KCF_SHIFT	; 54 F5
	dc.b	KCF_STRING!KCF_SHIFT	; 55 F6
	dc.b	KCF_STRING!KCF_SHIFT	; 56 F7
	dc.b	KCF_STRING!KCF_SHIFT	; 57 F8
	dc.b	KCF_STRING!KCF_SHIFT	; 58 F9
	dc.b	KCF_STRING!KCF_SHIFT	; 59 F10

	dc.b	KC_VANILLA		; 5A A2000 keypad (
	dc.b	KC_NOQUAL		; 5B A2000 keypad )
	dc.b	KC_NOQUAL		; 5C A2000 keypad /
	dc.b	KC_NOQUAL		; 5D A2000 keypad *
	dc.b	KC_NOQUAL		; 5E A2000 keypad +
	dc.b	KCF_STRING		; 5F HELP

	dc.b	KCF_NOP 		; 60 Left Shift
	dc.b	KCF_NOP 		; 61 Right Shift
	dc.b	KCF_NOP 		; 62 Caps Lock
	dc.b	KCF_NOP 		; 63 Control
	dc.b	KCF_NOP 		; 64 Left Alt
	dc.b	KCF_NOP 		; 65 Left Alt
	dc.b	KCF_NOP 		; 66 Left Amiga
	dc.b	KCF_NOP 		; 67 Right Amiga

	dc.b	KC_NOQUAL		; 68 NorthGate F11
	dc.b	KC_NOQUAL		; 69 NorthGate F12
	dc.b	KCF_NOP 		; 6A
	dc.b	KCF_STRING		; 6B NorthGate HOME
	dc.b	KCF_STRING		; 6C NorthGate END
	dc.b	KCF_STRING		; 6D NorthGate Page Up
	dc.b	KCF_STRING		; 6E NorthGate Page Down
	dc.b	KC_NOQUAL		; 6F NorthGate keypad =

	dc.b	KCF_NOP 		; 70
	dc.b	KCF_NOP 		; 71
	dc.b	KCF_NOP 		; 72
	dc.b	KCF_NOP 		; 73
	dc.b	KCF_NOP 		; 74
	dc.b	KCF_NOP 		; 75
	dc.b	KCF_NOP 		; 76
	dc.b	KCF_NOP 		; 77

LoKeyMap
	dc.b	'~`~`'			; 00 `
	dc.b	'!�!1'			; 01 1
	dc.b	'@�@2'			; 02 2
	dc.b	'#�#3'			; 03 3
	dc.b	'$�$4'			; 04 4
	dc.b	'%�%5'			; 05 5
	dc.b	'^�^6'			; 06 6
	dc.b	'&�&7'			; 07 7
	dc.b	'*�*8'			; 08 8
	dc.b	'(�(9'			; 09 9
	dc.b	')�)0'			; 0A 0
	dc.b	'_-_-'			; 0B -
	dc.b	'+=+='			; 0C =
	dc.b	'|\|\'			; 0D \
	dc.l	0 			; 0E
	dc.l	'0'			; 0F keypad 0

	dc.b	'��Qq'			; 10 Q
	dc.b	'��Ww'			; 11 W
	dc.l	DeadE			; 12 E
	dc.b	'��Rr'			; 13 R
	dc.b	'�Tt'			; 14 T
	dc.l	DeadY			; 15 Y
	dc.l	DeadU			; 16 U
	dc.l	DeadI			; 17 I
	dc.l	DeadO			; 18 O
	dc.b	'��Pp'			; 19 P
	dc.b	'{[{['			; 1A [
	dc.b	'}]}]'			; 1B ]
	dc.l	RateSel 		; 1C NorthGate Rate Select
	dc.l	'1'			; 1D keypad 1
	dc.l	'2'			; 1E keypad 2
	dc.l	'3'			; 1F keypad 3

	dc.l	DeadA			; 20 A
	dc.b	'��Ss'			; 21 S
	dc.b	'��Dd'			; 22 D
	dc.l	DeadF			; 23 F
	dc.l	DeadG			; 24 G
	dc.l	DeadH			; 25 H
	dc.l	DeadJ			; 26 J
	dc.l	DeadK			; 27 K
	dc.b	'��Ll'			; 28 L
	dc.b	':;:;'			; 29 ;
	dc.b	'"''"'''		; 2A '
	dc.l	0			; 2B
	dc.l	0			; 2C
	dc.l	'4'			; 2D keypad 4
	dc.l	'5'			; 2E keypad 5
	dc.l	'6'			; 2F keypad 6

	dc.b	'��><'			; 30	between SHIFT & Z
	dc.b	'��Zz'			; 31 Z
	dc.b	'��Xx'			; 32 X
	dc.b	'��Cc'			; 33 C
	dc.b	'��Vv'			; 34 V
	dc.b	'��Bb'			; 35 B
	dc.l	DeadN			; 36 N
	dc.b	'��Mm'			; 37 M
	dc.b	'<,<,'			; 38 ,
	dc.b	'>.>.'			; 39 .
	dc.b	'?/?/'			; 3A /
	dc.l	0			; 3B
	dc.l	'.'			; 3C keypad .
	dc.l	'7'			; 3D keypad 7
	dc.l	'8'			; 3E keypad 8
	dc.l	'9'			; 3F keypad 9

HiKeyMap
	dc.l	DeadSP			; 40 space
	dc.l	8			; 41 backspace
	dc.l	Tab			; 42 tab
	dc.l	$0D			; 43 enter
	dc.b	0,0,$0A,$0D		; 44 return
	dc.b	0,0,$9B,$1B		; 45 escape
	dc.l	$7F			; 46 delete
	dc.l	$7F			; 47 NorthGate PrintScreen
	dc.l	$13			; 48 NorthGate Scroll Lock
	dc.l	$11			; 49 NorthGate Pause
	dc.l	'-'			; 4A keypad -
	dc.l	0			; 4B

	dc.l	Up			; 4C up arrow
	dc.l	Dn			; 4D down arrow
	dc.l	Fwd			; 4E right arrow
	dc.l	Bk			; 4F left arrow

	dc.l	F1			; 50 F1
	dc.l	F2			; 51 F2
	dc.l	F3			; 52 F3
	dc.l	F4			; 53 F4
	dc.l	F5			; 54 F5
	dc.l	F6			; 55 F6
	dc.l	F7			; 56 F7
	dc.l	F8			; 57 F8
	dc.l	F9			; 58 F9
	dc.l	F10			; 59 F10

	dc.l	')()('			; 5A A2000 keypad (
	dc.l	')'			; 5B A2000 keypad )
	dc.l	'/'			; 5C A2000 keypad /
	dc.l	'*'			; 5D A2000 keypad *
	dc.l	'+'			; 5E A2000 keypad +
	dc.l	Help			; 5F Help

	dc.l	0			; 60 Left Shift
	dc.l	0			; 61 Right Shift
	dc.l	0			; 62 Caps Lock
	dc.l	0			; 63 Control
	dc.l	0			; 64 Left Alt
	dc.l	0			; 65 Right Alt
	dc.l	0			; 66 Left Amiga
	dc.l	0			; 67 Right Amiga

	dc.l	$11			; 68 NorthGate F11
	dc.l	$13			; 69 NorthGate F12
	dc.l	0			; 6A
	dc.l	NGHome			; 6B NorthGate HOME
	dc.l	NGEnd			; 6C NorthGate END
	dc.l	NGUp			; 6D NorthGate Page Up
	dc.l	NGDn			; 6E NorthGate Page Down
	dc.l	'='			; 6F NorthGate keypad =

	dc.l	0			; 70
	dc.l	0			; 71
	dc.l	0			; 72
	dc.l	0			; 73
	dc.l	0			; 74
	dc.l	0			; 75
	dc.l	0			; 76
	dc.l	0			; 77


********** Dead keys ************

DeadF	dc.b	0,'f'		; None
	dc.b	0,'F'		; SHIFT
	dc.b	DPF_DEAD,1	; ALT		(set modifier to 1)
	dc.b	DPF_DEAD,1	; SHIFT+ALT
	dc.b	0,6		; CTRL
	dc.b	0,6		; SHIFT+CTRL
	dc.b	0,$80!6 	; CTRL+ALT
	dc.b	0,$80!6 	; SHIFT+CTRL+ALT

DeadG	dc.b	0,'g'
	dc.b	0,'G'
	dc.b	DPF_DEAD,2
	dc.b	DPF_DEAD,2
	dc.b	0,7
	dc.b	0,7
	dc.b	0,$80!7
	dc.b	0,$80!7

DeadH	dc.b	0,'h'
	dc.b	0,'H'
	dc.b	DPF_DEAD,3
	dc.b	DPF_DEAD,3
	dc.b	0,8
	dc.b	0,8
	dc.b	0,$80!8
	dc.b	0,$80!8

DeadJ	dc.b	0,'j'
	dc.b	0,'J'
	dc.b	DPF_DEAD,4
	dc.b	DPF_DEAD,4
	dc.b	0,$a
	dc.b	0,$a
	dc.b	0,$80!$a
	dc.b	0,$80!$a

DeadK	dc.b	0,'k'
	dc.b	0,'K'
	dc.b	DPF_DEAD,5
	dc.b	DPF_DEAD,5
	dc.b	0,$b
	dc.b	0,$b
	dc.b	0,$80!$b
	dc.b	0,$80!$b


******** Dead modables (vowels) *********

DeadA	dc.b	DPF_MOD,ANone-DeadA	; None
	dc.b	DPF_MOD,AShft-DeadA	; SHIFT
	dc.b	0,$e6			; ALT
	dc.b	0,$c6			; SHIFT+ALT
	dc.b	0,1			; CTRL
	dc.b	0,1			; SHIFT+CTRL
	dc.b	0,$80!1 		; CTRL+ALT
	dc.b	0,$80!1 		; SHIFT+CTRL+ALT
ANone	dc.b	'a�����'		; None  mod set   (None,F,G,H,J,K)
AShft	dc.b	'A�����'		; Shift mod set

DeadE	dc.b	DPF_MOD,ENone-DeadE
	dc.b	DPF_MOD,EShft-DeadE
	dc.b	0,'�'
	dc.b	0,'�'
	dc.b	0,5
	dc.b	0,5
	dc.b	0,$80!5
	dc.b	0,$80!5
ENone	dc.b	'e���e�'
EShft	dc.b	'E���E�'

DeadI	dc.b	DPF_MOD,INone-DeadI
	dc.b	DPF_MOD,IShft-DeadI
	dc.b	0,$a1
	dc.b	0,$a6
	dc.b	0,9
	dc.b	0,9
	dc.b	0,$80!9
	dc.b	0,$80!9
INone	dc.b	'i���i�'
IShft	dc.b	'I���I�'

DeadN	dc.b	DPF_MOD,NNone-DeadN
	dc.b	DPF_MOD,NShft-DeadN
	dc.b	0,$ad
	dc.b	0,$af
	dc.b	0,$e
	dc.b	0,$e
	dc.b	0,$80!$e
	dc.b	0,$80!$e
NNone	dc.b	'nnnn�n'
NShft	dc.b	'NNNN�N'

DeadO	dc.b	DPF_MOD,ONone-DeadO
	dc.b	DPF_MOD,OShft-DeadO
	dc.b	0,$f8
	dc.b	0,$d8
	dc.b	0,$f
	dc.b	0,$f
	dc.b	0,$80!$f
	dc.b	0,$80!$f
ONone	dc.b	'o���'
OShft	dc.b	'O�����'

DeadU	dc.b	DPF_MOD,UNone-DeadU
	dc.b	DPF_MOD,UShft-DeadU
	dc.b	0,$b5
	dc.b	0,$b5
	dc.b	0,$15
	dc.b	0,$15
	dc.b	0,$80!$15
	dc.b	0,$80!$15
UNone	dc.b	'u���u�'
UShft	dc.b	'U���U�'

DeadY	dc.b	DPF_MOD,YNone-DeadY
	dc.b	DPF_MOD,YShft-DeadY
	dc.b	0,$a4
	dc.b	0,$a5
	dc.b	0,$19
	dc.b	0,$19
	dc.b	0,$80!$19
	dc.b	0,$80!$19
YNone	dc.b	'y�yyy�'
YShft	dc.b	'Y�YYYY'


DeadSP	dc.b	DPF_MOD,SPNone-DeadSP	; None
	dc.b	0,$A0			; Shift
SPNone	dc.b	' �`^~�'		;-Prefix  None,F,G,H,J,K


******** String keys *******

Tab	dc.b	TabShft-TabNone,TabNone-Tab	; None  length,offset
	dc.b	TabStop-TabShft,TabShft-Tab	; SHIFT length,offset

TabNone dc.b	$09
TabShft dc.b	$9B,'Z'
TabStop

Up	dc.b	UpShft-UpNone,UpNone-Up
	dc.b	UpStop-UpShft,UpShft-Up

UpNone	dc.b	$9B,'A'
UpShft	dc.b	$9B,'T'
UpStop

Dn	dc.b	DnShft-DnNone,DnNone-Dn
	dc.b	DnStop-DnShft,DnShft-Dn

DnNone	dc.b	$9B,'B'
DnShft	dc.b	$9B,'S'
DnStop


Fwd	dc.b	FwdShft-FwdNone,FwdNone-Fwd
	dc.b	FwdStop-FwdShft,FwdShft-Fwd

FwdNone dc.b	$9B,'C'
FwdShft dc.b	$9B,' @'
FwdStop


Bk	dc.b	BkShft-BkNone,BkNone-Bk
	dc.b	BkStop-BkShft,BkShft-Bk

BkNone	dc.b	$9B,'D'
BkShft	dc.b	$9B,' A'
BkStop

F1	dc.b	F1Shft-F1None,F1None-F1
	dc.b	F1Stop-F1Shft,F1Shft-F1

F1None	dc.b	$9B,'0~'
F1Shft	dc.b	$9B,'10~'
F1Stop

F2	dc.b	F2Shft-F2None,F2None-F2
	dc.b	F2Stop-F2Shft,F2Shft-F2

F2None	dc.b	$9B,'1~'
F2Shft	dc.b	$9B,'11~'
F2Stop

F3	dc.b	F3Shft-F3None,F3None-F3
	dc.b	F3Stop-F3Shft,F3Shft-F3

F3None	dc.b	$9B,'2~'
F3Shft	dc.b	$9B,'12~'
F3Stop

F4	dc.b	F4Shft-F4None,F4None-F4
	dc.b	F4Stop-F4Shft,F4Shft-F4

F4None	dc.b	$9B,'3~'
F4Shft	dc.b	$9B,'13~'
F4Stop

F5	dc.b	F5Shft-F5None,F5None-F5
	dc.b	F5Stop-F5Shft,F5Shft-F5

F5None	dc.b	$9B,'4~'
F5Shft	dc.b	$9B,'14~'
F5Stop

F6	dc.b	F6Shft-F6None,F6None-F6
	dc.b	F6Stop-F6Shft,F6Shft-F6

F6None	dc.b	$9B,'5~'
F6Shft	dc.b	$9B,'15~'
F6Stop

F7	dc.b	F7Shft-F7None,F7None-F7
	dc.b	F7Stop-F7Shft,F7Shft-F7

F7None	dc.b	$9B,'6~'
F7Shft	dc.b	$9B,'16~'
F7Stop

F8	dc.b	F8Shft-F8None,F8None-F8
	dc.b	F8Stop-F8Shft,F8Shft-F8

F8None	dc.b	$9B,'7~'
F8Shft	dc.b	$9B,'17~'
F8Stop

F9	dc.b	F9Shft-F9None,F9None-F9
	dc.b	F9Stop-F9Shft,F9Shft-F9

F9None	dc.b	$9B,'8~'
F9Shft	dc.b	$9B,'18~'
F9Stop

F10	dc.b	F10Shft-F10None,F10None-F10
	dc.b	F10Stop-F10Shft,F10Shft-F10

F10None dc.b	$9B,'9~'
F10Shft dc.b	$9B,'19~'
F10Stop

Help	dc.b	HlpStop-HlpNone,HlpNone-Help

HlpNone dc.b	$9B,'?~'
HlpStop

RateSel dc.b	RatStop-RatNone,RatNone-RateSel

RatNone dc.b	$9B,'T'
RatStop

NGHome	dc.b	NGHStop-NGHNone,NGHNone-NGHome

NGHNone dc.b	$9B,'T'
NGHStop

NGEnd	dc.b	NGEStop-NGENone,NGENone-NGEnd

NGENone dc.b	$9B,'S'
NGEStop

NGUp	dc.b	NGUStop-NGUNone,NGUNone-NGUp

NGUNone dc.b	$9B,'T'
NGUStop

NGDn	dc.b	NGDStop-NGDNone,NGDNone-NGDn

NGDNone dc.b	$9B,'S'
NGDStop

MapName dc.b	'NorthGate',0

	END