RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : DosDevIOCtl для клавиатуры. Что не так?


Список сообщений | Написать новое | Ответить на сообщение | Домой Поиск:
Предыдущее сообщение | Следующее сообщение
From : VicTor
To : All
Subj : DosDevIOCtl для клавиатуры. Что не так?

Привет!

Потребовалось тут разобраться с DosDevIOCtl для клавиатуры.
Подскажите, кто понимает, что не так делаю в этой тестовой программке:

/* Answer.c - исходный текст программы */
/* */
/* Ожидание нажатия одной из клавиш, */
/* перечисленных в списке. */
/* Возвращает ERRORLEVEL, равный индексу */
/* клавиши в списке. */
/* */
/* Answer [keys] */
/* */
/* keys - список клавиш; если опущен, */
/* то по нажатию любой клавиши */
/* возвращается ERRORLEVEL=0 */
#define INCL_KBD
#define INCL_DOSDEVICES
#define INCL_DOSDEVIOCTL
#define INCL_DOSERRORS

#include <os2.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>

void main( int, char ** );

void main( int argc, char ** argv )
{
APIRET rc;
INT xKey = 0; /* номер нажатой клавиши */
PCHAR xList; /* список ожидаемых клавиш */
PCHAR xWhere; /* указатель на найденую клавишу */
SHORT xWait = 0; /* блок параметров; 0 - ожидать нажатия */
KBDKEYINFO xKki; /* блок данных */
ULONG xLenParm = sizeof( SHORT );
ULONG xLenData = sizeof( KBDKEYINFO );

memset( &xKki, 0, sizeof( KBDKEYINFO ) );
if ( argc < 1 ) {
xList = NULL;
} else {
xList = argv[1];
} /* endif */

while ( 1 ) {
rc = DosDevIOCtl( NULLHANDLE,
IOCTL_KEYBOARD,
KBD_READCHAR,
&xWait,
sizeof( xWait ),
&xLenParm,
&xKki,
sizeof( xKki ),
&xLenData );

printf( "DosDevIOCtl (rc=0x%08X)\n", rc );

if ( xList == NULL ) {
break;
} /* endif */
xWhere = strchr( xList, xKki.chChar );
if ( xWhere != NULL ) {
xKey = (INT)xWhere - (INT)xList;
break;
} /* endif */
} /* endwhile */

exit( xKey );
}


В результате получаю: DosDevIOCtl (rc=0x00000016)
А этот код нигде не описан. Куда копать?


Sun 16 Jan 2005 22:33 Mozilla/5.0 (OS/2; U; Warp 4.5; en-US; rv:1.4) Gecko/2003062




Programmed by Dmitri Maximovich, Dmitry I. Platonoff, Eugen Kuleshov.
25.09.99 (c) 1999, RU/2. All rights reserved.
Rewritten by Dmitry Ban. All rights ignored.