Commit 316fc473 authored by Kevin Bracey's avatar Kevin Bracey
Browse files

Added Japan and Iceland to build.

Added hexadecimal keypad code entry.
Changed dead key tilde+space to U+007E, not U+02DC (Denmark needs this).
Added dead key stroke (only Turkey uses this).
parent 03177a74
......@@ -183,6 +183,7 @@ A character name may take the form of
DEFAULT KEYBOARD
CONFIGURED KEYBOARD
DIAL KEYBOARD
DELETE
Most keyboard layouts have the first four keys,
in their standard places. In these cases, you should not include
......@@ -211,6 +212,8 @@ A character name may take the form of
held down. This key must be in an Alt position, and is normally
assigned to Alt+Ctrl+F12.
DELETE produces either code &7F or &8B depending on the configuration.
5) A dead accent key:
DEAD KEY ACUTE ACCENT
......@@ -233,6 +236,7 @@ A character name may take the form of
CEDILLA U+0327
OGONEK U+0328
GREEK DIALYTIKA TONOS U+0344
STROKE U+0335
Each entry shows the equivalent UCS code, although this is not
used internally.
......
......@@ -46,7 +46,7 @@ WFLAGS = ~cfr~v
COMPONENT = IntKey
SOURCE = Source.IntKeyMod
LAYOUTS = s.UK s.Italy s.Spain s.France s.Germany s.Esperanto s.Greece \
s.Swed-Finl s.Denmark s.Norway s.Turkey s.Russia \
s.Swed-Finl s.Denmark s.Norway s.Iceland s.Turkey s.Russia \
s.Israel s.LatinAm s.Belgium s.Netherlands s.Japan \
s.Switzerland s.Wales s.USA s.DvorakUK s.DvorakUSA
TARGET = rm.IntKey
......
......@@ -13,6 +13,7 @@ Accent_Tonos * 12
Accent_Cedilla * 13
Accent_Ogonek * 14
Accent_DialytikaTonos * 15
Accent_Stroke * 16
AccentTable
& 0
......@@ -31,6 +32,7 @@ AccentTable
& AccentList_Cedilla-AccentTable
& AccentList_Ogonek-AccentTable
& AccentList_DialytikaTonos-AccentTable
& AccentList_Stroke-AccentTable
AccentList_Grave
& &0020,&0060 ; grave
......@@ -154,8 +156,11 @@ AccentList_Circumflex
& &007A,&1E91 ; z+circumflex
& &FFFFFFFF
; Note - DEAD KEY TILDE+SPACE must produce TILDE, not SMALL TILDE
; because certain keyboards, such as Denmark, rely on DEAD KEY TILDE
; to get a TILDE character.
AccentList_Tilde
& &0020,&02DC ; tilde
& &0020,&007E ; tilde
& &0041,&00C3 ; A+tilde
& &0045,&1EBC ; E+tilde
& &0049,&0128 ; I+tilde
......@@ -337,7 +342,7 @@ AccentList_DotAbove
& &0066,&1E1F ; f+dot
& &0067,&0121 ; g+dot
& &0068,&1E23 ; h+dot
& &0069,&0131 ; i+dot
& &0069,&0131 ; i -> dotless i
& &006D,&1E41 ; m+dot
& &006E,&1E45 ; n+dot
& &0070,&1E57 ; p+dot
......@@ -348,6 +353,7 @@ AccentList_DotAbove
& &0078,&1E8B ; x+dot
& &0079,&1E8F ; y+dot
& &007A,&017C ; z+dot
& &0131,&0069 ; dotless i -> i
& &017F,&1E9B ; long s+dot
& &FFFFFFFF
......@@ -445,4 +451,29 @@ AccentList_DialytikaTonos
& &03C5,&03B0 ; upsilon+dialytika tonos
& &FFFFFFFF
AccentList_Stroke
& &0032,&01BB ; 2+stroke
& &0044,&0110 ; D+stroke
& &0047,&01E4 ; G+stroke
& &0048,&0126 ; H+stroke
& &0049,&0197 ; I+stroke
& &004C,&0141 ; L+stroke
& &0054,&0166 ; T+stroke
& &005A,&01B5 ; Z+stroke
& &0062,&0180 ; b+stroke
& &0064,&0111 ; d+stroke
& &0067,&01E5 ; g+stroke
& &0068,&0127 ; h+stroke
& &0069,&0268 ; i+stroke
& &006C,&0142 ; l+stroke
& &0074,&0167 ; t+stroke
& &007A,&01B6 ; z+stroke
& &0413,&0492 ; Ghe+stroke
& &041A,&049E ; Ka+stroke
& &0433,&0493 ; ghe+stroke
& &043A,&049F ; ka+stroke
& &04AE,&04B0 ; straight U+stroke
& &04AF,&04B1 ; straight u+stroke
& &FFFFFFFF
END
......@@ -43,6 +43,10 @@
; 18-Aug-98 BJGA Fixed numerous layout bugs
; 31-Aug-98 Internals fully revised to use new UCS layout structures created
; by keygen. Alphabet adaptive, including UTF-8.
; 02-Sep-98 Hexadecimal keypad selection added. If the first digit is 0,
; then the number entered is read as hex. (Physical) keypad keys
; "/", "*", "-", "+", "." and "Enter" stand for digits A-F respectively.
; Also, logical keys A-F will work.
;
GBLL PCDel ; option to have Delete key return &8B (Copy) instead
......@@ -324,10 +328,8 @@ AltDigitValue # 4
CurrentAlphabet # 4
AlphabetTable # 4
FallbackCode # 4
[ PCDel
DeleteChar # 1
unused # 3
]
HexDigits # 1
A1Key_WorkspaceSize * :INDEX: @
......@@ -339,10 +341,8 @@ R0AltDigitValue # 4 ; value of ALT+digits so far
R0CurrentAlphabet # 4
R0AlphabetTable # 4
R0FallbackCode # 4
[ PCDel
R0DeleteChar # 1
R0unused # 3
]
R0HexDigits # 1
; User key workspace allocation
......@@ -377,7 +377,7 @@ A1Key_Title
= "InternationalKeyboard", 0
A1Key_HelpStr
= "Int'l Keyboard", 9, "0.50 (01 Sep 1998)"
= "Int'l Keyboard", 9, "0.50 (02 Sep 1998)"
[ Keyboard <> "All"
= " $Keyboard"
]
......@@ -720,6 +720,7 @@ ProcessKAlt ROUT
TEQ R3, #0 ; if no ALTs down so far, then must be
STREQ R3, R0AltDigitValue ; going down, so zero cumulative digits
STREQB R3, R0HexDigits
TEQ R1, #0 ; 0 => up, 1 => down
ADDNE R3, R3, #1 ; if down then increment
......@@ -923,22 +924,58 @@ ReturnOneChar
MOV PC, R14
AltKeyPad ROUT
LDRB R1, R0HexDigits ; are we doing hex?
TEQ R1, #0
BNE AltKeyPadHex
LDRB R3, [R3, R4] ; get value from PadK1NumTran
SUB R3, R3, #"0"
CMP R3, #10 ; if not in range 0-9
BICCS R7, R7, #(KBAlt_DigitsPresent :OR: KBAlt_SelectKeyboard)
BICHS R7, R7, #(KBAlt_DigitsPresent :OR: KBAlt_SelectKeyboard)
; then get rid of digs + select
ORRCC R7, R7, #KBAlt_DigitsPresent ; else indicate we have digits
MOVCS R2, #0 ; if no digits
STRCS R2, R0AltDigitValue ; then zero digits
MOVCS PC, R14 ; and exit
ORRLO R7, R7, #KBAlt_DigitsPresent ; else indicate we have digits
MOVHS R2, #0 ; if no digits
STRHS R2, R0AltDigitValue ; then zero digits
MOVHS PC, R14 ; and exit
LDR R2, R0AltDigitValue
MOV R1, #10
MLA R3, R2, R1, R3 ; digits = digits*10+new digit
MLAS R3, R2, R1, R3 ; digits = digits*10+new digit
TSTEQ R7, #KBAlt_SelectKeyboard
STREQB R1, R0HexDigits ; 0 pressed first - switch to hex (not IDD)
STR R3, R0AltDigitValue
MOV PC, R14
AltKeyPadHex
LDRB R1, [R3, R4]
SUB R1, R1, #"0" ; check digits first - they're logical
CMP R1, #10
BLO GotHex
ADR R4, HexPadTable ; scan table of physical codes
05 LDRB R1, [R4], #2
TEQ R2, R1
LDREQB R1, [R4, #-1]
BEQ GotHex
TEQ R1, #0
BNE %BT05
GotHex
LDR R2, R0AltDigitValue
ADD R2, R1, R2, LSL #4 ; digits = digits*16+new digit
STR R2, R0AltDigitValue
MOV PC, R14
HexPadTable
= K1NumPadSlash, &A
= K1NumPadStar, &B
= K1NumPadHash, &C
= K1NumPadMinus, &C
= K1NumPadPlus, &D
= K1NumPadDot, &E
= K1NumPadEnter, &F
= 0
ALIGN
ReturnNULChar
ADR R6, KeyNULReturn
STRB R1, [R6, #2]
......@@ -969,6 +1006,9 @@ ProcessUCS ROUT
ADD R2, R0, R2
ADD R2, R2, R4, LSL #2 ; R2 -> 36-byte entry for key
TST R7, #KBAlt_DigitsPresent
BNE CheckHexAtoF
; select the correct Shift/Ctrl/Alt variant.
STRB R1, TempAction
MOV R1, #0
......@@ -979,7 +1019,7 @@ ProcessUCS ROUT
TST R7, #KBAlt_AltDown
ORRNE R1, R1, #16
TST R5, #KBStat_NoCapsLock
02 TST R5, #KBStat_NoCapsLock
BNE %FT05
; process Caps Lock
......@@ -997,7 +1037,7 @@ ProcessUCS ROUT
05 LDR R1, [R2, R1]
TST R1, #&80000000
06 TST R1, #&80000000
BNE FunnyUCS
ReturnUCSAlt
......@@ -1116,6 +1156,24 @@ FunnyUCS
40 ADRHI R6, NowtReturn
MOV PC, R14
CheckHexAtoF
; We're doing something digitty - if it's hex we need to check for A-F.
; If it's not hex or A-F, we return immediately - it's not sensible to
; be outputting standard Alt symbols while doing a keypad sequence, although
; this is what pre 0.50 versions did.
LDRB R4, R0HexDigits ; are we doing hex?
TEQ R4, #0
MOVEQ PC, R14
LDR R4, [R2, #0] ; get the base symbol for this key
BIC R4, R4, #&20 ; upper case the codes that matter
CMP R4, #"A"
MOVLO PC, R14
CMP R4, #"F"
MOVHI PC, R14
SUB R1, R4, #"A"-10
B GotHex
SpecialKey
SUB R4, R1, #&10000
CMP R4, #10
......
......@@ -37,7 +37,7 @@ GetX SETS ";"
$GetX s.Swed-Finl
$GetX s.Denmark
$GetX s.Norway
; $GetX s.Iceland
$GetX s.Iceland
; $GetX s.Canada
$GetX s.Turkey
$GetX s.Russia
......@@ -46,7 +46,7 @@ GetX SETS ";"
$GetX s.LatinAm
$GetX s.Belgium
$GetX s.Netherlands
$GetX s.Japan
$GetX s.Japan
$GetX s.Switzerland
$GetX s.Wales
$GetX s.USA
......
......@@ -26,7 +26,7 @@ KeyStructureTable
GetStruct Finland, 11
GetStruct Denmark, 14
GetStruct Norway, 15
; GetStruct Iceland, 16
GetStruct Iceland, 16
; GetStruct Canada, 19
GetStruct Turkey, 20
GetStruct Russia, 24
......@@ -34,6 +34,7 @@ KeyStructureTable
GetStruct Israel, 26
GetStruct LatinAm, 28
GetStruct Belgium, 31
GetStruct Japan, 32
GetStruct Netherlands, 34
GetStruct Switzerland, 35
GetStruct Wales, 36
......
......@@ -115,6 +115,7 @@ charinfo deadlist[] =
5, "MACRON",
14, "OGONEK",
9, "RING ABOVE",
16, "STROKE",
4, "TILDE",
12, "VERTICAL LINE ABOVE",
};
......
......@@ -5,8 +5,6 @@
# Extra key 4D fitted
# Extra key 6E not fitted
# Enter key in UK position
#
# Dead key stroke removed 'cos new code doesn't have this yet
$Country 20
......@@ -638,8 +636,7 @@ FULL STOP
COLON
-
-
# Was dead key stroke
-
DEAD KEY STROKE
-
-
-
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment