#pragma once /***************************************************************************/ /* In memory keyboard information */ typedef struct tagSTORE { DWORD dwSystemID; PWSTR dpName; PWSTR dpString; } STORE, * LPSTORE; typedef struct tagKEY { WCHAR Key; DWORD Line; DWORD ShiftFlags; PWSTR dpOutput; PWSTR dpContext; } KEY, * LPKEY; typedef struct tagGROUP { PWSTR dpName; LPKEY dpKeyArray; // [LPKEY] address of first item in key array PWSTR dpMatch; PWSTR dpNoMatch; DWORD cxKeyArray; // in array entries BOOL fUsingKeys; // group(xx) [using keys] <-- specified or not } GROUP, * LPGROUP; typedef struct tagKEYBOARD { DWORD dwIdentifier; // Keyman compiled keyboard id DWORD dwFileVersion; // Version of the file - Keyman 4.0 is 0x0400 DWORD dwCheckSum; // As stored in keyboard. DEPRECATED as of 16.0 DWORD xxkbdlayout; // as stored in HKEY_LOCAL_MACHINE//system//currentcontrolset//control//keyboard layouts DWORD IsRegistered; // layout id, from same registry key DWORD version; // keyboard version DWORD cxStoreArray; // in array entries DWORD cxGroupArray; // in array entries LPSTORE dpStoreArray; // [LPSTORE] address of first item in store array, from start of file LPGROUP dpGroupArray; // [LPGROUP] address of first item in group array, from start of file DWORD StartGroup[2]; // index of starting groups [2 of them] // Ansi=0, Unicode=1 DWORD dwFlags; // Flags for the keyboard file DWORD dwHotKey; // standard windows hotkey (hiword=shift/ctrl/alt stuff, loword=vkey) DWORD dpBitmapOffset; // 0038 offset of the bitmaps in the file DWORD dwBitmapSize; // 003C size in bytes of the bitmaps } KEYBOARD, * LPKEYBOARD;