| 1 | /* $Id: oslibinput.cpp,v 1.2 1999-11-08 13:50:41 sandervl Exp $ */
|
|---|
| 2 |
|
|---|
| 3 | #define INCL_WIN
|
|---|
| 4 | #include <os2wrap.h>
|
|---|
| 5 | #include <win32type.h>
|
|---|
| 6 | #include <winconst.h>
|
|---|
| 7 | #include "oslibinput.h"
|
|---|
| 8 | #include <winkeyboard.h>
|
|---|
| 9 |
|
|---|
| 10 | RECTL desktopRectl = {0};
|
|---|
| 11 | ULONG ScreenWidth = 0;
|
|---|
| 12 | ULONG ScreenHeight = 0;
|
|---|
| 13 |
|
|---|
| 14 | //******************************************************************************
|
|---|
| 15 | //******************************************************************************
|
|---|
| 16 | void OSLibInit()
|
|---|
| 17 | {
|
|---|
| 18 | WinQueryWindowRect(HWND_DESKTOP, &desktopRectl);
|
|---|
| 19 | ScreenWidth = desktopRectl.xRight;
|
|---|
| 20 | ScreenHeight = desktopRectl.yTop;
|
|---|
| 21 | }
|
|---|
| 22 | //******************************************************************************
|
|---|
| 23 | //******************************************************************************
|
|---|
| 24 | BOOL OSLibGetDIState(DWORD len, LPVOID ptr)
|
|---|
| 25 | {
|
|---|
| 26 | BYTE PMKeyState[256];
|
|---|
| 27 | BYTE *winkeybuf = (BYTE *)ptr;
|
|---|
| 28 | APIRET rc;
|
|---|
| 29 |
|
|---|
| 30 | rc = WinSetKeyboardStateTable( HWND_DESKTOP, (PBYTE)&PMKeyState, FALSE );
|
|---|
| 31 |
|
|---|
| 32 | if(rc == TRUE && len==256)
|
|---|
| 33 | {
|
|---|
| 34 | KeyTranslatePMToWinBuf((BYTE *)&PMKeyState, (BYTE *)&ptr, len);
|
|---|
| 35 | for(int i=0;i<256;i++) {
|
|---|
| 36 | winkeybuf[i] &= 0x80; //only high bit
|
|---|
| 37 | }
|
|---|
| 38 | return TRUE;
|
|---|
| 39 | }
|
|---|
| 40 | return FALSE;
|
|---|
| 41 | }
|
|---|
| 42 | //******************************************************************************
|
|---|
| 43 | //******************************************************************************
|
|---|
| 44 | BOOL OSLibQueryMousePos(DWORD *rx, DWORD *ry, DWORD *state)
|
|---|
| 45 | {
|
|---|
| 46 | POINTL point;
|
|---|
| 47 | BOOL rc;
|
|---|
| 48 |
|
|---|
| 49 | rc = WinQueryPointerPos(HWND_DESKTOP, &point);
|
|---|
| 50 |
|
|---|
| 51 | *rx = point.x;
|
|---|
| 52 | *ry = ScreenHeight - point.y;
|
|---|
| 53 |
|
|---|
| 54 | *state = 0;
|
|---|
| 55 | if(WinGetKeyState(HWND_DESKTOP, VK_BUTTON1))
|
|---|
| 56 | *state |= MK_LBUTTON_W;
|
|---|
| 57 | if(WinGetKeyState(HWND_DESKTOP, VK_BUTTON2))
|
|---|
| 58 | *state |= MK_RBUTTON_W;
|
|---|
| 59 | if(WinGetKeyState(HWND_DESKTOP, VK_BUTTON3))
|
|---|
| 60 | *state |= MK_MBUTTON_W;
|
|---|
| 61 |
|
|---|
| 62 | return rc;
|
|---|
| 63 | }
|
|---|
| 64 | //******************************************************************************
|
|---|
| 65 | //******************************************************************************
|
|---|
| 66 | BOOL OSLibMoveCursor(DWORD x, DWORD y)
|
|---|
| 67 | {
|
|---|
| 68 | y = ScreenHeight - y;
|
|---|
| 69 |
|
|---|
| 70 | return WinSetPointerPos(HWND_DESKTOP, x, y);
|
|---|
| 71 | }
|
|---|
| 72 | //******************************************************************************
|
|---|
| 73 | //******************************************************************************
|
|---|