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