Comments
c This is a comment
Strings, numbers and characters
"'this' is a string"
'and so is "this"'
U+0041 d65 x41 c these are all the letter A
Prefixes and Virtual Keys
c Match RAlt+E on desktops, Ctrl+Alt+E on web because L/R Alt not consistently supported in browsers.
$KeymanOnly: + [RALT K_E] > "€"
$KeymanWeb: + [CTRL ALT K_E] > "€"
Example Code
c =====================Begin Identity Section===================================================
c
c Mnemonic input method for Amharic script on US-QWERTY
c keyboards for Keyman version 7.1, compliant with Unicode 4.1 and later.
c
store(&VERSION) '9.0'
store(&Name) "Amharic"
c store(&MnemonicLayout) "1"
store(&CapsAlwaysOff) "1"
store(&Copyright) "Creative Commons Attribution 3.0"
store(&Message) "This is an Amharic language mnemonic input method for Ethiopic script that requires Unicode 4.1 support."
store(&WINDOWSLANGUAGES) 'x045E x045E'
store(&LANGUAGE) 'x045E'
store(&EthnologueCode) "amh"
store(&VISUALKEYBOARD) 'gff-amh-7.kvk'
store(&KMW_EMBEDCSS) 'gff-amh-7.css'
HOTKEY "^%A"
c
c =====================End Identity Section=====================================================
c =====================Begin Data Section=======================================================
c ---------------------Maps for Numbers---------------------------------------------------------
store(ArabOnes) '23456789'
store(ones) '፪፫፬፭፮፯፰፱'
store(tens) '፳፴፵፶፷፸፹፺'
store(arabNumbers) '123456789'
store(ethNumbers) '፩፪፫፬፭፮፯፰፱፲፳፴፵፶፷፸፹፺፻፼'
store(arabNumbersWithZero) '0123456789'
store(ColonOrComma) ':,'
store(ethWordspaceOrComma) '፡፣'
c ---------------------End Numbers--------------------------------------------------------------
c =====================End Data Section=========================================================
c =====================Begin Functional Section=================================================
c
store(&LAYOUTFILE) 'gff-amh-7_layout.js'
store(&BITMAP) 'amharic.bmp'
store(&TARGETS) 'any windows'
begin Unicode > use(main)
group(main) using keys
c ---------------------Input of Numbers---------------------------------------------------------
c Special Rule for Arabic Numerals
c
c The following attempts to auto-correct the use of Ethiopic wordspace and
c Ethiopic comma within an Arabic numeral context. Ethiopic wordspace gets
c used erroneously in time formats and Ethiopic commas as an order of thousands
c delimiter. The correction context is not known until numerals appear on _both_
c sides of the punctuation.
c
any(arabNumbersWithZero) any(ethWordspaceOrComma) + any(arabNumbers) > index(arabNumbersWithZero,1) index(ColonOrComma,2) index(arabNumbers,3)
c Ethiopic Numerals
"'" + '1' > '፩'
"'" + any(ArabOnes) > index(ones,2)
c special cases for multiples of one
'፩' + '0' > '፲'
'፲' + '0' > '፻'
'፻' + '0' > '፲፻'
'፲፻' + '0' > '፼'
'፼' + '0' > '፲፼'
'፲፼' + '0' > '፻፼'
'፻፼' + '0' > '፲፻፼'
'፲፻፼' + '0' > '፼፼'
'፼፼' + '0' > context beep c do not go any higher, we could beep here
c upto the order of 100 million
any(ones) + '0' > index(tens,1)
any(tens) + '0' > index(ones,1) '፻' c Hundreds
any(ones) '፻ '+ '0' > index(tens,1) '፻' c Thousands
any(tens) '፻' + '0' > index(ones,1) '፼' c Ten Thousands
any(ones) '፼' + '0' > index(tens,1) '፼' c Hundred Thousands
any(tens) '፼' + '0' > index(ones,1) '፻፼' c Millions
any(ones) '፻፼' + '0' > index(tens,1) '፻፼' c Ten Millions
any(tens) '፻፼' + '0' > index(ones,1) '፼፼' c Hundred Millions
c enhance this later, look for something that can copy a match over
any(ethNumbers) + any(arabNumbers) > index(ethNumbers,1) index(ethNumbers,2)
c ---------------------End Input of Numbers-----------------------------------------------------
c =====================End Functional Section===================================================