|  | /* | 
|  | * KEYBOARD driver | 
|  | * | 
|  | * Copyright 1993 Bob Amstadt | 
|  | * Copyright 1996 Albrecht Kleine | 
|  | * Copyright 1997 David Faure | 
|  | * Copyright 1998 Morten Welinder | 
|  | * Copyright 1998 Ulrich Weigand | 
|  | * | 
|  | * This library is free software; you can redistribute it and/or | 
|  | * modify it under the terms of the GNU Lesser General Public | 
|  | * License as published by the Free Software Foundation; either | 
|  | * version 2.1 of the License, or (at your option) any later version. | 
|  | * | 
|  | * This library is distributed in the hope that it will be useful, | 
|  | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
|  | * Lesser General Public License for more details. | 
|  | * | 
|  | * You should have received a copy of the GNU Lesser General Public | 
|  | * License along with this library; if not, write to the Free Software | 
|  | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA | 
|  | */ | 
|  |  | 
|  | #include <stdarg.h> | 
|  | #include <stdlib.h> | 
|  | #include <string.h> | 
|  | #include <ctype.h> | 
|  |  | 
|  | #include "windef.h" | 
|  | #include "winbase.h" | 
|  | #include "wingdi.h" | 
|  | #include "winuser.h" | 
|  | #include "winerror.h" | 
|  | #include "wine/winuser16.h" | 
|  | #include "wine/debug.h" | 
|  |  | 
|  | WINE_DEFAULT_DEBUG_CHANNEL(keyboard); | 
|  |  | 
|  | #include "pshpack1.h" | 
|  | typedef struct _KBINFO | 
|  | { | 
|  | BYTE Begin_First_Range; | 
|  | BYTE End_First_Range; | 
|  | BYTE Begin_Second_Range; | 
|  | BYTE End_Second_Range; | 
|  | WORD StateSize; | 
|  | } KBINFO, *LPKBINFO; | 
|  | #include "poppack.h" | 
|  |  | 
|  | static FARPROC16 DefKeybEventProc; | 
|  | static LPBYTE pKeyStateTable; | 
|  |  | 
|  | /*********************************************************************** | 
|  | *		Inquire (KEYBOARD.1) | 
|  | */ | 
|  | WORD WINAPI Inquire16(LPKBINFO kbInfo) | 
|  | { | 
|  | kbInfo->Begin_First_Range = 0; | 
|  | kbInfo->End_First_Range = 0; | 
|  | kbInfo->Begin_Second_Range = 0; | 
|  | kbInfo->End_Second_Range = 0; | 
|  | kbInfo->StateSize = 16; | 
|  |  | 
|  | return sizeof(KBINFO); | 
|  | } | 
|  |  | 
|  | /*********************************************************************** | 
|  | *		Enable (KEYBOARD.2) | 
|  | */ | 
|  | VOID WINAPI Enable16( FARPROC16 proc, LPBYTE lpKeyState ) | 
|  | { | 
|  | DefKeybEventProc = proc; | 
|  | pKeyStateTable = lpKeyState; | 
|  |  | 
|  | memset( lpKeyState, 0, 256 ); /* all states to false */ | 
|  | } | 
|  |  | 
|  | /*********************************************************************** | 
|  | *		Disable (KEYBOARD.3) | 
|  | */ | 
|  | VOID WINAPI Disable16(VOID) | 
|  | { | 
|  | DefKeybEventProc = NULL; | 
|  | pKeyStateTable = NULL; | 
|  | } | 
|  |  | 
|  | /**************************************************************************** | 
|  | *		ToAscii (KEYBOARD.4) | 
|  | */ | 
|  | INT16 WINAPI ToAscii16(UINT16 virtKey,UINT16 scanCode, LPBYTE lpKeyState, | 
|  | LPVOID lpChar, UINT16 flags) | 
|  | { | 
|  | return ToAscii( virtKey, scanCode, lpKeyState, lpChar, flags ); | 
|  | } | 
|  |  | 
|  | /*********************************************************************** | 
|  | *           AnsiToOem   (KEYBOARD.5) | 
|  | */ | 
|  | INT16 WINAPI AnsiToOem16( LPCSTR s, LPSTR d ) | 
|  | { | 
|  | CharToOemA( s, d ); | 
|  | return -1; | 
|  | } | 
|  |  | 
|  | /*********************************************************************** | 
|  | *           OemToAnsi   (KEYBOARD.6) | 
|  | */ | 
|  | INT16 WINAPI OemToAnsi16( LPCSTR s, LPSTR d ) | 
|  | { | 
|  | OemToCharA( s, d ); | 
|  | return -1; | 
|  | } | 
|  |  | 
|  | /********************************************************************** | 
|  | *		SetSpeed (KEYBOARD.7) | 
|  | */ | 
|  | WORD WINAPI SetSpeed16(WORD unused) | 
|  | { | 
|  | FIXME("(%04x): stub\n", unused); | 
|  | return 0xffff; | 
|  | } | 
|  |  | 
|  | /********************************************************************** | 
|  | *		ScreenSwitchEnable (KEYBOARD.100) | 
|  | */ | 
|  | VOID WINAPI ScreenSwitchEnable16(WORD unused) | 
|  | { | 
|  | FIXME("(%04x): stub\n", unused); | 
|  | } | 
|  |  | 
|  | /********************************************************************** | 
|  | *		OemKeyScan (KEYBOARD.128) | 
|  | */ | 
|  | DWORD WINAPI OemKeyScan16(WORD wOemChar) | 
|  | { | 
|  | return OemKeyScan( wOemChar ); | 
|  | } | 
|  |  | 
|  | /********************************************************************** | 
|  | *		VkKeyScan (KEYBOARD.129) | 
|  | */ | 
|  | WORD WINAPI VkKeyScan16(CHAR cChar) | 
|  | { | 
|  | return VkKeyScanA( cChar ); | 
|  | } | 
|  |  | 
|  | /****************************************************************************** | 
|  | *		GetKeyboardType (KEYBOARD.130) | 
|  | */ | 
|  | INT16 WINAPI GetKeyboardType16(INT16 nTypeFlag) | 
|  | { | 
|  | return GetKeyboardType( nTypeFlag ); | 
|  | } | 
|  |  | 
|  | /****************************************************************************** | 
|  | *		MapVirtualKey (KEYBOARD.131) | 
|  | * | 
|  | * MapVirtualKey translates keycodes from one format to another | 
|  | */ | 
|  | UINT16 WINAPI MapVirtualKey16(UINT16 wCode, UINT16 wMapType) | 
|  | { | 
|  | return MapVirtualKeyA(wCode,wMapType); | 
|  | } | 
|  |  | 
|  | /**************************************************************************** | 
|  | *		GetKBCodePage (KEYBOARD.132) | 
|  | */ | 
|  | INT16 WINAPI GetKBCodePage16(void) | 
|  | { | 
|  | return GetKBCodePage(); | 
|  | } | 
|  |  | 
|  | /**************************************************************************** | 
|  | *		GetKeyNameText (KEYBOARD.133) | 
|  | */ | 
|  | INT16 WINAPI GetKeyNameText16(LONG lParam, LPSTR lpBuffer, INT16 nSize) | 
|  | { | 
|  | return GetKeyNameTextA( lParam, lpBuffer, nSize ); | 
|  | } | 
|  |  | 
|  | /*********************************************************************** | 
|  | *           AnsiToOemBuff   (KEYBOARD.134) | 
|  | */ | 
|  | void WINAPI AnsiToOemBuff16( LPCSTR s, LPSTR d, UINT16 len ) | 
|  | { | 
|  | if (len != 0) CharToOemBuffA( s, d, len ); | 
|  | } | 
|  |  | 
|  | /*********************************************************************** | 
|  | *           OemToAnsiBuff   (KEYBOARD.135) | 
|  | */ | 
|  | void WINAPI OemToAnsiBuff16( LPCSTR s, LPSTR d, UINT16 len ) | 
|  | { | 
|  | if (len != 0) OemToCharBuffA( s, d, len ); | 
|  | } |