UI-KeyboardLayout
view release on metacpan or search on metacpan
Fully implement polytonic Greek vowels; full Coptic alphabet support: the prefix keys working AFTER greek prefix:
[ and ] prefix keys for the corresponding aspiration; each vowels is entered via 4 keys on the
vowel's key's principal diagonal as: digit row: circumflex; QWERTY row: acute, ASDF row: plain,
ZXCV row: grave; add AltGr for diaresis or iotation. Ï is entered on `.
\ prefix key: the same without aspiration (but "plain without iotation" is replaced by vrachy=breve, and the
next neighbour ASDF-row letter gives macron); all letters are "upgraded", so acute is actually oxia (not tonos),
Ï
-diaeresis-acute gives Ï (on AltGr-u), and epsilon/rho are replaced by the corresponding symbols ϵ ϼ (on d
and `; rho is stroked).
("Standalone diacritics" are put on the place of non-existing omicron with dialytika: 9ol.-column with AltGr
[ heuristic: on AltGr-. ];
add Shift to get variants with dialytika. As exceptions, coronis is entered as psili with shift (on
] AltGr-L), and the "no-accents position" \ AltGr-l gives YPOGEGRAMMENI/PROSGEGRAMMENI (without/with Shift),
while \ 3 and \ # give lower/upper number signs. Standalone tonos is on \ AltGr-3; shift to add dialytika.)
` prefix key: Coptic analogues of greek letters, and j/J --> á¸aná¸ia, v/V --> fei, hyphen --> double-hyphen;
the letters without Greek analogue are on AltGr-letter where the "letter" is the first letter of the
name on Wikipedia page (or the first letter of Unicode name for DEI and KHEI [ti and xai]).
Additional "random" AltGr-letters: Bactrian sho on b/B; ½-H heta Ͱ/ͱ on i; yot ϳ on j; Pamphylian digamma Ͷ/ͷ
on g; san Ϻ/Ï» on m, Ï on Y, lunate sigmas ϲ/Ϲ on l, reversed lunate sigmas Í»/Ͻ on o, reversed epsilon ϶
on e, kai's Ï/Ï on q, (reversed) dotted lunate sigmas ͽ/Ï¿ ͼ/Ͼ on r and u, and archaic sampi Ͳ/ͳ on n.
On Greek face: add Ï as an AltGr-variant of Ϋ (this completes the coverage of greek ranges).
On 0483 Cyrillic: add Modifier-ᵸ and smallcaps ᴫ on Shifted positions;
examples/klc2c.pl view on Meta::CPAN
@@@join_sublayouts@@@ { NULL, 0, 0 },
};
/***************************************************************************\
* aKeyNames[], aKeyNamesExt[], aKeyNamesDead[] - used to map a Scancode to Key Name via GetKeyNameText(); null-terminated.
*
* If the name is not found in the first two tables,
* then it is deduced from the character/deadkey this key produces in the unshifted position (as MapVirtualKeyEx()).
* In particular, the special-case in the latter function covers VK_A to VK_Z!
*
* As a corollary, the third table needs only to contain dead keys in the unshifted positions, and only
* at positions not present in the first two tables.
\***************************************************************************/
@@@KEYNAME@@@
@@@KEYNAME_EXT@@@
@@@KEYNAME_DEAD@@@
@@@deadkeys@@@
@@@ligatures@@@
PKBDTABLES KbdLayerDescriptor(VOID)
lib/UI/KeyboardLayout.pm view on Meta::CPAN
LAYOUT_KEYS
DO_LIGA
DEADKEYS
// KEYNAME KEYNAME_EXT KEYNAME_DEAD - used to map a Scancode to Key Name via GetKeyNameText(); null-terminated.
//
// If the name is not found in the first two tables,
// then it is deduced from the character/deadkey this key produces in the unshifted position (as MapVirtualKeyEx()).
// In particular, the special-case in the latter function covers VK_A to VK_Z!
//
// As a corollary, the third table needs only to contain dead keys in the unshifted positions, and only
// at positions not present in the first two tables.
KEYNAME // Mostly from type 4 keyboard, not producing a printable char, non-variable in types 1...6, Ctrl/etc are left versions
01 Esc
0e Backspace
0f Tab
1c Enter
1d Ctrl
2a Shift
( run in 0.287 second using v1.01-cache-2.11-cpan-454fe037f31 )