From b793fbd5d7b1cb667ccab1e0f17292ed30921977 Mon Sep 17 00:00:00 2001 From: Arch Blackmann Date: Sat, 31 Oct 2009 21:54:26 +0000 Subject: [PATCH] Implement DoKBD. The tool can now handle the KBD section of a .klc layout. svn path=/trunk/; revision=43888 --- reactos/tools/kbdtool/parser.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/reactos/tools/kbdtool/parser.c b/reactos/tools/kbdtool/parser.c index a1828ad4b78..07fd273ff2d 100644 --- a/reactos/tools/kbdtool/parser.c +++ b/reactos/tools/kbdtool/parser.c @@ -18,10 +18,13 @@ #define KEYWORD_COUNT 17 -extern BOOLEAN Verbose; +extern BOOLEAN Verbose, UnicodeFile; extern PCHAR gpszFileName; extern FILE* gfpInput; CHAR gBuf[256]; +CHAR gKBDName[10]; +CHAR gDescription[256]; +ULONG gID = 0; CHAR g_Layout[4096]; ULONG gLineCount; PCHAR KeyWordList[KEYWORD_COUNT] = @@ -129,6 +132,25 @@ SkipLines(VOID) ULONG DoKBD(VOID) { + PCHAR p; + + /* On Unicode files, we need to find the Unicode marker (FEEF) */ + ASSERT(UnicodeFile == FALSE); + + /* Initial values */ + *gKBDName = '\0'; + *gDescription = '\0'; + + /* Scan for the values */ + if (sscanf(gBuf, "KBD %8s \"%40[^\"]\" %d", gKBDName, gDescription, &gID) < 2) + { + /* Couldn't find them */ + printf("Unable to read keyboard name or description.\n"); + exit(1); + } + + /* Debug only */ + DPRINT1("KBD Name: [%8s] Description: [%40s] ID: [%d]\n", gKBDName, gDescription, gID); return SkipLines(); }