// KeyFilter.h: interface for the CKeyFilter class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_KEYFILTER_H__EDEFADA3_CE45_11D3_B770_00104B457E71__INCLUDED_)
#define AFX_KEYFILTER_H__EDEFADA3_CE45_11D3_B770_00104B457E71__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#pragma pack(8)
#ifndef _WINDOWS_
#include <afxwin.h>         // MFC core and standard components
#endif

//key codes
#define KEY_LCONTROL       ((USHORT)0x1D)
#define KEY_RCONTROL       ((USHORT)0xE01D)
#define KEY_LALT           ((USHORT)0x38)
#define KEY_RALT           ((USHORT)0xE038)
#define KEY_LSHIFT         ((USHORT)0x2A)
#define KEY_RSHIFT         ((USHORT)0x36)

#define KEY_CAPS_LOCK      ((USHORT)0x3A)
#define KEY_DEL            ((USHORT)0xE053)
#define KEY_DELNUM         ((USHORT)0x53)
#define KEY_ESC
#define KEY_F1             ((USHORT)0x3B)
#define KEY_F2             ((USHORT)0x3C)
#define KEY_F3             ((USHORT)0x3D)
#define KEY_F4             ((USHORT)0x3E)
#define KEY_F5             ((USHORT)0x3F)
#define KEY_F6             ((USHORT)0x40)
#define KEY_F7             ((USHORT)0x41)
#define KEY_F8             ((USHORT)0x42)
#define KEY_F9             ((USHORT)0x43)
#define KEY_F10            ((USHORT)0x44)
#define KEY_F11            ((USHORT)0x57)
#define KEY_F12            ((USHORT)0x58)
#define KEY_LFLYWIN        ((USHORT)0xE05B)
#define KEY_RFLYWIN        ((USHORT)0xE05C)
#define KEY_POPUPMENU      ((USHORT)0xE05D)



class CKeyFilter  
{
public:
	BOOL IsAttached();
	BOOL ReplaceKey(unsigned short ScanCode, BOOL Shift, BOOL Alt, BOOL Control, USHORT Replacement);
	BOOL IsKeyDisabled( BOOL *Disabled, unsigned short ScanCode, BOOL Shift = 0, BOOL Alt = 0, BOOL Control = 0);
	BOOL AutoRemoveAll;
	unsigned short GetLastKeyDown();
	BOOL EnableAllKeys();
	BOOL EnableKey( unsigned short ScanCode, BOOL Shift = 0, BOOL Alt = 0, BOOL Control = 0);
	BOOL DisableKey( unsigned short ScanCode, BOOL Shift = 0, BOOL Alt = 0, BOOL Control = 0);
	CKeyFilter( CString DeviceName = _T("\\\\.\\KbFilter"));
	virtual ~CKeyFilter();

protected:
  DWORD m_dwVal;
	HANDLE m_pKbHandle;
};

#pragma pack()
#endif // !defined(AFX_KEYFILTER_H__EDEFADA3_CE45_11D3_B770_00104B457E71__INCLUDED_)
