[net.micro.amiga] Dvorak keymap for 1.2 release

kodiak@amiga.UUCP (Robert [Kodiak] R. Burns) (06/06/86)

So now that I'm wrapping up my work here at Commodore, I find that there's
no better time to share with y'all things such as the structure of a keymap
for 1.2.  I do so with a map for the ever-touted Dvorak keyboard.
If you're REALLY serious about it, note that only the [{ and ]}
keys need to be repainted for this layout.  I have access to spare
keyboards so I repositioned all the keys to this layout -- they're
a little bumpy 'cause the sculpted keys are on different rows, but
it's usable.

The concept of dead keys is what's new for 1.2.  It allows you to
make keys that do nothing, but modify other keys.  This example shows
most of how that is done: the only mystery not revealed here is how to
combine two dead keys to form a third graphic (e.g. combine '` to get
dead ^).  That's used on the German (D) keymap, for example.

I've not been a good citizen and assembled it native, but I have great
faith that, if you have a 1.2 development environment (specifically
the 1.2 devices/.keymap.i file), you'll have no problem.  I'm a little
concerned about the size of this posting: if you have comments about
same please use e-mail to get them to me.

- Kodiak     n_n       phone: (408) 374-3635
            / ..\       uucp: pyramid!amiga!kodiak
             \_m          or: {ihnp4|seismo|caip|allegra}!cbmvax!amiga!kodiak
disclaimer: The views expressed above are not necessarily those of my employer.
codicil: I am self-employed.

--------------------- from here on. -------------------------------------------
**********************************************************************
*
*   usa2 (Dvorak) key map
*
*   Copyright 1986, Commodore-Amiga Inc.  All Rights Reserved.
*
*   Programmer: Bob 'Kodiak' Burns
*
*   Note that this key map requires kickstart release 1.2, which
*   supports the dead keys described here.  The ALT key layout uses
*   the official layout for all 1.2 keymaps, whatever the country.
*   The un-ALTed is my interpretation of the ANSI alternate keymap
*   layout (i.e. Dvorak) as applies to the Amiga.
*
**********************************************************************

	INCLUDE		"exec/types.i"
	INCLUDE		"devices/keymap.i"

		DC.L	0,0		; ln_Succ, ln_Pred
		DC.B	0,0		; ln_Type, ln_Pri
		DC.L	DVName		; ln_Name
		DC.L	DVLowMapType
		DC.L	DVLowMap
		DC.L	DVLCapsable
		DC.L	DVLRepeatable
		DC.L	DVHighMapType
		DC.L	DVHighMap
		DC.L	DVHCapsable
		DC.L	DVHRepeatable


*------ Key Translation Table ----------------------------------------
*
*   00	01  02	03  04	05  06	07  08	09  0A	0B  0C	0D  3D	3E  3F
*	  10  11  12  13  14  15  16  17  18  19  1A  1B    2D	2E  2F
*	   20  21  22  23  24  25  26  27  28  29  2A  2B   1D	1E  1F
*	 30  31	 32  33	 34  35	 36  37	 38  39	 3A	    0F	    3C
*
*   `~	1!  2@	3#  4$	5%  6^	7&  8*	9( 0)  \|  =+  }{   7	8   9
*	  '"  ,<  .>  pP  yY  fF  gG  cC  rR  lL  /?  ][    4	5   6
*	   aA  oO  eE  uU  iI  dD  hH  tT  nN  sS  -_	    1   2   3
*	     ;:  qQ  jJ  kK  xX  bB  mM  wW  vV  zZ	    0	    .
*
*---------------------------------------------------------------------
*
*   for reference, here's USA
*
*   `~	1!  2@	3#  4$	5%  6^	7&  8*	9( 0)  -_  =+  \|   7	8   9
*	  qQ  wW  eE  rR  tT  yY  uU  iI  oO  pP  [{  ]}    4	5   6
*	   aA  sS  dD  fF  gG  hH  jJ  kK  lL  ;:  '"	    1   2   3
*	     zZ	 xX  cC	 vV  bB	 nN  mM	 ,<  .>	 /?	    0	    .
*
*---------------------------------------------------------------------
*
*	40	Space
*	41	Backspace
*	42	Tab
*	43	Enter
*	44	Return
*	45	Escape
*	46	Delete
*	4A	Numeric Pad -
*	4C	Cursor Up
*	4D	Cursor Down
*	4E	Cursor Forward
*	4F	Cursor Backward
*	
*	50-59	Function keys F1-F10
*	5F	Help
*	
*	60	Left Shift
*	61	Right Shift
*	62	Caps Lock
*	63	Control
*	64	Left Alt
*	65	Right Alt
*	66	Left Amiga
*	67	Right Amiga
*	
*	68	Left Mouse Button (not converted)
*	69	Right Mouse Button (not converted)
*	6A	Middle Mouse Button (not converted)
*	
*---------------------------------------------------------------------
DVLCapsable:
		DC.B	%00000000,%00000000,%11111000,%00000011
		DC.B	%11111111,%00000011,%11111100,%00000111

DVHCapsable:
		DC.B	%00000000,%00000000,%00000000,%00000000
		DC.B	%00000000,%00000000,%00000000

DVLRepeatable:
		DC.B	%11111111,%10111111,%11111111,%11101111
		DC.B	%11111111,%11111111,%11111111,%11110111

DVHRepeatable:
		DC.B	%01000111,%11110100,%11111111,%00000011
		DC.B	%00000000,%00000000,%00000000

DVLowMapType:
		DC.B	KC_VANILLA,KCF_SHIFT+KCF_ALT
		DC.B	    KC_VANILLA,KCF_SHIFT+KCF_ALT
		DC.B	KCF_SHIFT+KCF_ALT,KCF_SHIFT+KCF_ALT
		DC.B	    KC_VANILLA,KCF_SHIFT+KCF_ALT
		DC.B	KCF_SHIFT+KCF_ALT,KCF_SHIFT+KCF_ALT
		DC.B	    KCF_SHIFT+KCF_ALT,KC_VANILLA
		DC.B	KCF_SHIFT,KC_VANILLA,KCF_NOP,KC_NOQUAL

		DC.B	KCF_SHIFT+KCF_ALT,KCF_SHIFT+KCF_ALT
		DC.B	    KCF_SHIFT+KCF_ALT,KC_VANILLA
		DC.B	KCF_DEAD+KCF_SHIFT+KCF_ALT+KCF_CONTROL,KC_VANILLA
		DC.B	    KC_VANILLA,KC_VANILLA
		DC.B	KC_VANILLA,KC_VANILLA,KC_VANILLA,KC_VANILLA
		DC.B	KCF_NOP,KC_NOQUAL,KC_NOQUAL,KC_NOQUAL

		DC.B	KCF_DEAD+KCF_SHIFT+KCF_ALT+KCF_CONTROL
		DC.B	    KCF_DEAD+KCF_SHIFT+KCF_ALT+KCF_CONTROL
		DC.B	    KCF_DEAD+KCF_SHIFT+KCF_ALT+KCF_CONTROL
		DC.B	    KCF_DEAD+KCF_SHIFT+KCF_ALT+KCF_CONTROL
		DC.B	KCF_DEAD+KCF_SHIFT+KCF_ALT+KCF_CONTROL
		DC.B	    KCF_DEAD+KCF_SHIFT+KCF_ALT+KCF_CONTROL
		DC.B	    KCF_DEAD+KCF_SHIFT+KCF_ALT+KCF_CONTROL
		DC.B	    KCF_DEAD+KCF_SHIFT+KCF_ALT+KCF_CONTROL
		DC.B	KCF_DEAD+KCF_SHIFT+KCF_ALT+KCF_CONTROL,KC_VANILLA
		DC.B	    KC_VANILLA,KCF_NOP
		DC.B	KCF_NOP,KC_NOQUAL,KC_NOQUAL,KC_NOQUAL

		DC.B	KCF_SHIFT+KCF_ALT,KCF_SHIFT+KCF_ALT
		DC.B	    KC_VANILLA,KC_VANILLA
		DC.B	KC_VANILLA,KC_VANILLA,KC_VANILLA,KC_VANILLA
		DC.B	KC_VANILLA,KC_VANILLA,KC_VANILLA,KCF_NOP
		DC.B	KC_NOQUAL,KC_NOQUAL,KC_NOQUAL,KC_NOQUAL

DVHighMapType:
		DC.B	KCF_DEAD+KCF_ALT,KC_NOQUAL
		DC.B	    KCF_STRING+KCF_SHIFT,KC_NOQUAL
		DC.B	KCF_CONTROL,KCF_ALT,KC_NOQUAL,KCF_NOP
		DC.B	KCF_NOP,KCF_NOP,KC_NOQUAL,KCF_NOP
		DC.B	KCF_STRING+KCF_SHIFT,KCF_STRING+KCF_SHIFT
		DC.B	    KCF_STRING+KCF_SHIFT,KCF_STRING+KCF_SHIFT

		DC.B	KCF_STRING+KCF_SHIFT,KCF_STRING+KCF_SHIFT
		DC.B	    KCF_STRING+KCF_SHIFT,KCF_STRING+KCF_SHIFT
		DC.B	KCF_STRING+KCF_SHIFT,KCF_STRING+KCF_SHIFT
		DC.B	    KCF_STRING+KCF_SHIFT,KCF_STRING+KCF_SHIFT
		DC.B	KCF_STRING+KCF_SHIFT,KCF_STRING+KCF_SHIFT
		DC.B	    KCF_NOP,KCF_NOP
		DC.B	KCF_NOP,KCF_NOP,KCF_NOP,KCF_STRING

		DC.B	KCF_NOP,KCF_NOP,KCF_NOP,KCF_NOP
		DC.B	KCF_NOP,KCF_NOP,KCF_NOP,KCF_NOP
		DC.B	KCF_NOP,KCF_NOP,KCF_NOP,KCF_NOP
		DC.B	KCF_NOP,KCF_NOP,KCF_NOP,KCF_NOP

		DC.B	KCF_NOP,KCF_NOP,KCF_NOP,KCF_NOP
		DC.B	KCF_NOP,KCF_NOP,KCF_NOP,KCF_NOP

DVLowMap:
		DC.B	'~','`','~','`'	; `, ~ / Vanilla
		DC.B	'!',$B9,'!','1'	; 1, !, super 1, !
		DC.B	'@',$B2,'@','2'	; 2, @, super 2, @ / Vanilla
		DC.B	'#',$B3,'#','3'	; 3, #, super 3, #
		DC.B	'$',$A2,'$','4'	; 4, $, cents, $
		DC.B	'%',$BC,'%','5'	; 5, %, 1/4, %
		DC.B	'^',$BD,'^','6'	; 6, ^, 1/2, ^ / Vanilla
		DC.B	'&',$BE,'&','7'	; 7, &, 3/4, &
		DC.B	'*',$B7,'*','8'	; 8, *, bullet, *
		DC.B	'(',$AB,'(','9'	; 9, (, <<, (
		DC.B	')',$BB,')','0'	; 0, ), >>, )
		DC.B	'_','-','|','\'	; \, |, -, _ / Vanilla
		DC.B	'+','=','+','='	; =, +
		DC.B	'|','\','{','}'	; }, {, \, | / Vanilla
		DC.L	0

		DC.B	0,0,0,'0'	; 0

		DC.B	$C5,$E5,'"',$27	; ', ", dot a, dot A
		DC.B	$B0,$B0,'<',','	; ,, <, dot, dot
		DC.B	$A9,$A9,'>','.'	; ., >, (c), (c)
		DC.B	$AE,$AE,'P','p'	; p, P, (r), (r) / Vanilla
		DC.L	key14		; y, Y, thorn, THORN / Accents
		DC.B	$A5,$A4,'F','f'	; f, F, IMS, Yen / Vanilla
		DC.B	$B5,$B5,'G','g'	; g, G, micro, micro / Vanilla
		DC.B	$A6,$A1,'C','c'	; c, C, inverted !, broken | / Vanilla
		DC.B	$D8,$F8,'R','r'	; r, R, slash o, slash O / Vanilla
		DC.B	$B6,$B6,'L','l'	; l, L, paragraph, paragraph / Vanilla
		DC.B	'{','[','?','/'	; /, ?, [, { / Vanilla
		DC.B	'}',']','[',']'	; ], [, ], } / Vanilla
		DC.L	0

		DC.B	0,0,0,'1'	; 1
		DC.B	0,0,0,'2'	; 2
		DC.B	0,0,0,'3'	; 3

		DC.L	key20		; a, A, ae, AE / Accents
		DC.L	key21		; o, O, sharp s, section / Accents
		DC.L	key22		; e, E, bar d, bar D / Accents
		DC.L	key23		; u, U, dead ' / Accents
		DC.L	key24		; i, I, dead ` / Accents
		DC.L	key25		; d, D, dead ^
		DC.L	key26		; h, H, dead ~
		DC.L	key27		; t, T, dead "
		DC.L	key28		; n, N, pound, pound / Accents
		DC.B	':',';','S','s'	; s, S, ;, : / Vanilla
		DC.B	'"',$27,'_','-'	; -, _, ', " / Vanilla
		DC.L	0
		DC.L	0

		DC.B	0,0,0,'4'	; 4
		DC.B	0,0,0,'5'	; 5
		DC.B	0,0,0,'6'	; 6

		DC.B	$BB,$AB,'>','<'	; <, >, <<, >>
		DC.B	$AC,$B1,':',';'	; ;, :, +/-, not
		DC.B	$F7,$D7,'Q','q'	; q, Q, times, divide / Vanilla
		DC.B	$C7,$E7,'J','j'	; j, J, c cedilla, C cedilla / Vanilla
		DC.B	$AA,$AA,'K','k'	; k, K, female ordinal, / Vanilla
		DC.B	$BA,$BA,'X','x'	; x, X, male ordinal / Vanilla
		DC.B	$AF,$AD,'B','b'	; b, B, SHY, overbar / Vanilla
		DC.B	$BF,$B8,'M','m'	; m, M, cedilla, inverted ? / Vanilla
		DC.B	'<',',','W','w'	; w, W, ,, < / Vanilla
		DC.B	'>','.','V','v'	; v, V, ., > / Vanilla
		DC.B	'?','/','Z','z'	; z, Z, /, ? / Vanilla
		DC.L	0

		DC.B	0,0,0,'.'	; .

		DC.B	0,0,0,'7'	; 7
		DC.B	0,0,0,'8'	; 8
		DC.B	0,0,0,'9'	; 9



DVHighMap:
		DC.L	key40
		DC.B	0,0,0,$08
		DC.L	key42
		DC.B	0,0,0,$0D
		DC.B	0,0,$0A,$0D
		DC.B	0,0,$9B,$1B
		DC.B	0,0,0,$7F
		DC.L	0
		DC.L	0
		DC.L	0
		DC.B	0,0,0,'-'
		DC.L	0
		DC.L	key4C
		DC.L	key4D
		DC.L	key4E
		DC.L	key4F

		DC.L	key50
		DC.L	key51
		DC.L	key52
		DC.L	key53
		DC.L	key54
		DC.L	key55
		DC.L	key56
		DC.L	key57
		DC.L	key58
		DC.L	key59
		DC.L	0
		DC.L	0
		DC.L	0
		DC.L	0
		DC.L	0
		DC.L	key5F

		DC.L	0
		DC.L	0
		DC.L	0
		DC.L	0
		DC.L	0
		DC.L	0
		DC.L	0
		DC.L	0
		DC.L	0
		DC.L	0
		DC.L	0
		DC.L	0
		DC.L	0
		DC.L	0
		DC.L	0
		DC.L	0

		DC.L	0
		DC.L	0
		DC.L	0
		DC.L	0
		DC.L	0
		DC.L	0
		DC.L	0
		DC.L	0


;------ dead keys

key14:					; y, Y, thorn, THORN
		DC.B	DPF_MOD,key14u-key14,DPF_MOD,key14s-key14
		DC.B	0,$FE,0,$DE
		DC.B	0,$19,0,$19,0,$99,0,$99	; control translation
key14u:
		DC.B	'y','y',$FD,'y','y',$FF
key14s:
		DC.B	'Y','Y',$DD,'Y','Y','Y'

key20:					; a, A, ae, AE
		DC.B	DPF_MOD,key20u-key20,DPF_MOD,key20s-key20
		DC.B	0,$E6,0,$C6
		DC.B	0,$01,0,$01,0,$81,0,$81	; control translation
key20u:
		DC.B	'a',$E0,$E1,$E2,$E3,$E4
key20s:
		DC.B	'A',$C0,$C1,$C2,$C3,$C4

key21:					; o, O, sharp s, section
		DC.B	DPF_MOD,key21u-key21,DPF_MOD,key21s-key21
		DC.B	0,$DF,0,$A7
		DC.B	0,$0F,0,$0F,0,$8F,0,$8F	; control translation
key21u:
		DC.B	'o',$F2,$F3,$F4,$F5,$F6
key21s:
		DC.B	'O',$D2,$D3,$D4,$D5,$D6

key22:					; e, E, bar d, bar D
		DC.B	DPF_MOD,key22u-key22,DPF_MOD,key22s-key22
		DC.B	0,$F0,0,$D0
		DC.B	0,$05,0,$05,0,$85,0,$85	; control translation
key22u:
		DC.B	'e',$E8,$E9,$EA,'e',$EB
key22s:
		DC.B	'E',$C8,$C9,$CA,'E',$CB

key23:					; u, U, dead '
		DC.B	DPF_MOD,key23u-key23,DPF_MOD,key23s-key23
		DC.B	DPF_DEAD,1,DPF_DEAD,1
		DC.B	0,$15,0,$15,0,$95,0,$95	; control translation
key23u:
		DC.B	'u',$F9,$FA,$FB,'u',$FC
key23s:
		DC.B	'U',$D9,$DA,$DB,'U',$DC

key24:					; i, I, dead `
		DC.B	DPF_MOD,key24u-key24,DPF_MOD,key24s-key24
		DC.B	DPF_DEAD,2,DPF_DEAD,2
		DC.B	0,$09,0,$09,0,$89,0,$89	; control translation
key24u:
		DC.B	'i',$EC,$ED,$EE,'i',$EF
key24s:
		DC.B	'I',$CC,$CD,$CE,'I',$CF

key25:
		DC.B	0,'d',0,'D'	; d, D, dead ^
		DC.B	DPF_DEAD,3,DPF_DEAD,3
		DC.B	0,$04,0,$04,0,$84,0,$84	; control translation

key26:
		DC.B	0,'h',0,'H'	; h, H, dead ~
		DC.B	DPF_DEAD,4,DPF_DEAD,4
		DC.B	0,$08,0,$08,0,$88,0,$88	; control translation

key27:
		DC.B	0,'t',0,'T'	; t, T, dead "
		DC.B	DPF_DEAD,5,DPF_DEAD,5
		DC.B	0,$15,0,$15,0,$95,0,$95	; control translation

key28:					; n, N, pound, pound
		DC.B	DPF_MOD,key28u-key28,DPF_MOD,key28s-key28
		DC.B	0,$A3,0,$A3
		DC.B	0,$0E,0,$0E,0,$8E,0,$8E	; control translation
key28u:
		DC.B	'n','n','n','n',$F1,'n'
key28s:
		DC.B	'N','N','N','N',$D1,'N'

key40:					; space,, NBSP, and accents
		DC.B	DPF_MOD,key40d-key40,0,$A0
key40d:
		DC.B	' ','`',$B4,'^','~',$A8


;------ string keys 

key42:
		DC.B	key42ue-key42us,key42us-key42
		DC.B	key42se-key42ss,key42ss-key42
key42us:
		DC.B	$09
key42ue:
key42ss:
		DC.B	$9B,'Z'
key42se:

key4C:
		DC.B	key4Cue-key4Cus,key4Cus-key4C
		DC.B	key4Cse-key4Css,key4Css-key4C
key4Cus:
		DC.B	$9B,'A'
key4Cue:
key4Css:
		DC.B	$9B,'T'
key4Cse:

key4D:
		DC.B	key4Due-key4Dus,key4Dus-key4D
		DC.B	key4Dse-key4Dss,key4Dss-key4D
key4Dus:
		DC.B	$9B,'B'
key4Due:
key4Dss:
		DC.B	$9B,'S'
key4Dse:

key4E:
		DC.B	key4Eue-key4Eus,key4Eus-key4E
		DC.B	key4Ese-key4Ess,key4Ess-key4E
key4Eus:
		DC.B	$9B,'C'
key4Eue:
key4Ess:
		DC.B	$9B,' ','@'
key4Ese:

key4F:
		DC.B	key4Fue-key4Fus,key4Fus-key4F
		DC.B	key4Fse-key4Fss,key4Fss-key4F
key4Fus:
		DC.B	$9B,'D'
key4Fue:
key4Fss:
		DC.B	$9B,' ','A'
key4Fse:

key50:
		DC.B	key50ue-key50us,key50us-key50
		DC.B	key50se-key50ss,key50ss-key50
key50us:
		DC.B	$9B,'0~'
key50ue:
key50ss:
		DC.B	$9B,'10~'
key50se:

key51:
		DC.B	key51ue-key51us,key51us-key51
		DC.B	key51se-key51ss,key51ss-key51
key51us:
		DC.B	$9B,'1~'
key51ue:
key51ss:
		DC.B	$9B,'11~'
key51se:

key52:
		DC.B	key52ue-key52us,key52us-key52
		DC.B	key52se-key52ss,key52ss-key52
key52us:
		DC.B	$9B,'2~'
key52ue:
key52ss:
		DC.B	$9B,'12~'
key52se:

key53:
		DC.B	key53ue-key53us,key53us-key53
		DC.B	key53se-key53ss,key53ss-key53
key53us:
		DC.B	$9B,'3~'
key53ue:
key53ss:
		DC.B	$9B,'13~'
key53se:

key54:
		DC.B	key54ue-key54us,key54us-key54
		DC.B	key54se-key54ss,key54ss-key54
key54us:
		DC.B	$9B,'4~'
key54ue:
key54ss:
		DC.B	$9B,'14~'
key54se:

key55:
		DC.B	key55ue-key55us,key55us-key55
		DC.B	key55se-key55ss,key55ss-key55
key55us:
		DC.B	$9B,'5~'
key55ue:
key55ss:
		DC.B	$9B,'15~'
key55se:

key56:
		DC.B	key56ue-key56us,key56us-key56
		DC.B	key56se-key56ss,key56ss-key56
key56us:
		DC.B	$9B,'6~'
key56ue:
key56ss:
		DC.B	$9B,'16~'
key56se:

key57:
		DC.B	key57ue-key57us,key57us-key57
		DC.B	key57se-key57ss,key57ss-key57
key57us:
		DC.B	$9B,'7~'
key57ue:
key57ss:
		DC.B	$9B,'17~'
key57se:

key58:
		DC.B	key58ue-key58us,key58us-key58
		DC.B	key58se-key58ss,key58ss-key58
key58us:
		DC.B	$9B,'8~'
key58ue:
key58ss:
		DC.B	$9B,'18~'
key58se:

key59:
		DC.B	key59ue-key59us,key59us-key59
		DC.B	key59se-key59ss,key59ss-key59
key59us:
		DC.B	$9B,'9~'
key59ue:
key59ss:
		DC.B	$9B,'19~'
key59se:

key5F:
		DC.B	key5Fe-key5Fs,key5Fs-key5F
key5Fs:
		DC.B	$9B,'?~'
key5Fe:


DVName:
		DC.B	'usa2',0
kmEnd

		END