Closed mcdurdin closed 9 months ago
@mcdurdin updated §C5015.3 above w/ pseudocode for keyboard processor. I know we said we don't need a vkey
table originally because they will be mapped by the compiler, but for hardware keys (i could be wrong but) otherwise I don't see how hardware remaps would happen. So I'd propose this change:
process_event (…, vk, …, flags=TOUCH)
does not need to apply vkey mapping, but just looks up in keys
However, for hardware:
process_event(…, vk, …, flags = 0)
recognizes that it's not a touch call, therefore looks up in vkey
to apply mapping BEFORE proceeding.@srl295 I think you are right. For hardware maps, we have a compiled layoutMap which assigns each position on the keyboard to a key from the keys
bag. Keyman Core is going to pass a "US" vkey to the LDML KeyboardProcessor. So it's up to the LDML KeyboardProcessor to transform that using vkeyMap
.
This is now largely done. Tracking remaining issues separately.
Introduction
This is a holding issue for the Keyman Core required to support LDML keyboards. We'll be filling this in as we complete planning and design. Much of this content should be moved to separate issues as we expand the details and establish component boundaries.
Objective: build a keystroke processor that works with the existing Keyman Core design that supports LDML keyboards, including:
Intent is to build this in C++. It will need to cross compile to native Windows, macOS, Linux and WASM. The module will need to be standalone and not have runtime dependencies (static link of libraries is probably okay).
Related Features
LDML implementation:
7042
7043
Groundwork:
5011
5012
5013
#5069General Library Properties
no i/o, minimal/no dependencies. Why?
no_std? - to consider whether this is appropriate or not.
API boundary will be UTF-16 (std::u16string).
Internal string form will also be std::u16string.
Physical limits of input context and output transforms. 64?, 256 chars?
Keyboard data storage: a binary (black-box, not necessarily optimized) format that the KMXPlus compiler will produce given input XML.
C5015.1: Infrastructure
Moved to #5069.C5015.2: KMX+ Binary Loader
C5015.3: LDML Keyboard Processor Library
constructor
function:processEvent
functiontouch
or hardware (!touch)!touch
vkey
tablekeys
sectionpush_character
tocontext
and toactions
C5015.4: Test Framework
C5015.5: Keyboard Delivery
Requirements:
Questions: