summaryrefslogtreecommitdiff
path: root/plugins/HwHotKeys
diff options
context:
space:
mode:
authorVadim Dashevskiy <watcherhd@gmail.com>2015-03-30 19:25:51 +0000
committerVadim Dashevskiy <watcherhd@gmail.com>2015-03-30 19:25:51 +0000
commitbc1ff98d45f87cd70825e7adfd5f106b6b3fb116 (patch)
tree006b3b00307696467ada445fd4168b8bda2200e6 /plugins/HwHotKeys
parent5c46a4ff3d889e7ef4b2c4a8e6c353f84207a7ab (diff)
HwHotKeys plugin added, does not compile in MSVC 2010 yet (error C2470)
git-svn-id: http://svn.miranda-ng.org/main/trunk@12557 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins/HwHotKeys')
-rw-r--r--plugins/HwHotKeys/HwHotKeys_10.vcxproj206
-rw-r--r--plugins/HwHotKeys/HwHotKeys_10.vcxproj.filters56
-rw-r--r--plugins/HwHotKeys/HwHotKeys_12.vcxproj205
-rw-r--r--plugins/HwHotKeys/HwHotKeys_12.vcxproj.filters56
-rw-r--r--plugins/HwHotKeys/res/HwHotKeys.rc110
-rw-r--r--plugins/HwHotKeys/res/HwHotKeys_version.rc38
-rw-r--r--plugins/HwHotKeys/src/HwHotKeys.cpp23
-rw-r--r--plugins/HwHotKeys/src/HwHotKeys.h87
-rw-r--r--plugins/HwHotKeys/src/HwHotKeys_Dlg.cpp108
-rw-r--r--plugins/HwHotKeys/src/HwHotKeys_DllMain.cpp150
-rw-r--r--plugins/HwHotKeys/src/HwHotKeys_KbdHook.cpp133
-rw-r--r--plugins/HwHotKeys/src/HwHotKeys_KeyName.cpp243
-rw-r--r--plugins/HwHotKeys/src/HwHotKeys_Util.cpp139
-rw-r--r--plugins/HwHotKeys/src/HwHotKeys_resource.hbin0 -> 1340 bytes
-rw-r--r--plugins/HwHotKeys/src/HwHotKeys_version.h41
-rw-r--r--plugins/HwHotKeys/src/stdafx.cpp18
16 files changed, 1613 insertions, 0 deletions
diff --git a/plugins/HwHotKeys/HwHotKeys_10.vcxproj b/plugins/HwHotKeys/HwHotKeys_10.vcxproj
new file mode 100644
index 0000000000..effa6ac14d
--- /dev/null
+++ b/plugins/HwHotKeys/HwHotKeys_10.vcxproj
@@ -0,0 +1,206 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{639E2B3A-64F2-4152-B5BB-12468E5D60B6}</ProjectGuid>
+ <Keyword>Win32Proj</Keyword>
+ <RootNamespace>HwHotKeys</RootNamespace>
+ <ProjectName>HwHotKeys</ProjectName>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <LinkIncremental>true</LinkIncremental>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <LinkIncremental>true</LinkIncremental>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <LinkIncremental>false</LinkIncremental>
+ <OutDir>$(SolutionDir)$(Configuration)\Plugins\</OutDir>
+ <IntDir>$(SolutionDir)$(Configuration)\Obj\$(ProjectName)\</IntDir>
+ <IgnoreImportLibrary>true</IgnoreImportLibrary>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <LinkIncremental>false</LinkIncremental>
+ <OutDir>$(SolutionDir)$(Configuration)64\Plugins\</OutDir>
+ <IntDir>$(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\</IntDir>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <PrecompiledHeader>Use</PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PrecompiledHeaderFile>HwHotKeys.h</PrecompiledHeaderFile>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ </ClCompile>
+ <Link>
+ <SubSystem>Windows</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <AdditionalLibraryDirectories>$(ProfileDir)..\..\bin10\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ </Link>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\include\msapi</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <PrecompiledHeader>Use</PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PrecompiledHeaderFile>HwHotKeys.h</PrecompiledHeaderFile>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ </ClCompile>
+ <Link>
+ <SubSystem>Windows</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <AdditionalLibraryDirectories>$(ProfileDir)..\..\bin10\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ </Link>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\include\msapi</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <PrecompiledHeader>Use</PrecompiledHeader>
+ <Optimization>Full</Optimization>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>false</IntrinsicFunctions>
+ <PreprocessorDefinitions>NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <PrecompiledHeaderFile>HwHotKeys.h</PrecompiledHeaderFile>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <SubSystem>Windows</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ <AdditionalLibraryDirectories>$(ProfileDir)..\..\bin10\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SetChecksum>true</SetChecksum>
+ <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
+ <AdditionalOptions>/PDBALTPATH:%_PDB% %(AdditionalOptions)</AdditionalOptions>
+ </Link>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </ResourceCompile>
+ <ResourceCompile>
+ <AdditionalIncludeDirectories>..\..\include\msapi</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <PrecompiledHeader>Use</PrecompiledHeader>
+ <Optimization>Full</Optimization>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>false</IntrinsicFunctions>
+ <PreprocessorDefinitions>NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <PrecompiledHeaderFile>HwHotKeys.h</PrecompiledHeaderFile>
+ </ClCompile>
+ <Link>
+ <SubSystem>Windows</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ <AdditionalLibraryDirectories>$(ProfileDir)..\..\bin10\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SetChecksum>true</SetChecksum>
+ <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
+ <AdditionalOptions>/PDBALTPATH:%_PDB% %(AdditionalOptions)</AdditionalOptions>
+ </Link>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </ResourceCompile>
+ <ResourceCompile>
+ <AdditionalIncludeDirectories>..\..\include\msapi</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClInclude Include="src\HwHotKeys.h" />
+ <ClInclude Include="src\HwHotKeys_version.h" />
+ <ClInclude Include="src\HwHotKeys_resource.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="src\HwHotKeys_Dlg.cpp" />
+ <ClCompile Include="src\HwHotKeys_DllMain.cpp" />
+ <ClCompile Include="src\HwHotKeys_KbdHook.cpp" />
+ <ClCompile Include="src\HwHotKeys_KeyName.cpp" />
+ <ClCompile Include="src\HwHotKeys_Util.cpp" />
+ <ClCompile Include="src\stdafx.cpp">
+ <PrecompiledHeader>Create</PrecompiledHeader>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="res\HwHotKeys_version.rc" />
+ <ResourceCompile Include="res\HwHotKeys.rc" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/plugins/HwHotKeys/HwHotKeys_10.vcxproj.filters b/plugins/HwHotKeys/HwHotKeys_10.vcxproj.filters
new file mode 100644
index 0000000000..0dc01c54f3
--- /dev/null
+++ b/plugins/HwHotKeys/HwHotKeys_10.vcxproj.filters
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="src\HwHotKeys.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\HwHotKeys_version.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\HwHotKeys_resource.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="src\HwHotKeys_Dlg.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\HwHotKeys_DllMain.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\HwHotKeys_KbdHook.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\HwHotKeys_Util.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\HwHotKeys_KeyName.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\stdafx.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="res\HwHotKeys.rc">
+ <Filter>Resource Files</Filter>
+ </ResourceCompile>
+ <ResourceCompile Include="res\HwHotKeys_version.rc">
+ <Filter>Resource Files</Filter>
+ </ResourceCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/plugins/HwHotKeys/HwHotKeys_12.vcxproj b/plugins/HwHotKeys/HwHotKeys_12.vcxproj
new file mode 100644
index 0000000000..54e4db1a63
--- /dev/null
+++ b/plugins/HwHotKeys/HwHotKeys_12.vcxproj
@@ -0,0 +1,205 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{639E2B3A-64F2-4152-B5BB-12468E5D60B6}</ProjectGuid>
+ <Keyword>Win32Proj</Keyword>
+ <RootNamespace>HwHotKeys</RootNamespace>
+ <ProjectName>HwHotKeys</ProjectName>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <PlatformToolset>v120_xp</PlatformToolset>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <PlatformToolset>v120_xp</PlatformToolset>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <PlatformToolset>v120_xp</PlatformToolset>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <PlatformToolset>v120_xp</PlatformToolset>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <LinkIncremental>true</LinkIncremental>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <LinkIncremental>true</LinkIncremental>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <LinkIncremental>false</LinkIncremental>
+ <OutDir>$(SolutionDir)$(Configuration)\Plugins\</OutDir>
+ <IntDir>$(SolutionDir)$(Configuration)\Obj\$(ProjectName)\</IntDir>
+ <IgnoreImportLibrary>true</IgnoreImportLibrary>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <LinkIncremental>false</LinkIncremental>
+ <OutDir>$(SolutionDir)$(Configuration)64\Plugins\</OutDir>
+ <IntDir>$(SolutionDir)$(Configuration)64\Obj\$(ProjectName)\</IntDir>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <PrecompiledHeader>Use</PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PrecompiledHeaderFile>HwHotKeys.h</PrecompiledHeaderFile>
+ </ClCompile>
+ <Link>
+ <SubSystem>Windows</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <AdditionalLibraryDirectories>$(ProfileDir)..\..\bin12\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+ </Link>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\include\msapi</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <PrecompiledHeader>Use</PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PrecompiledHeaderFile>HwHotKeys.h</PrecompiledHeaderFile>
+ </ClCompile>
+ <Link>
+ <SubSystem>Windows</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <AdditionalLibraryDirectories>$(ProfileDir)..\..\bin12\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ </Link>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\include\msapi</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <PrecompiledHeader>Use</PrecompiledHeader>
+ <Optimization>Full</Optimization>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>false</IntrinsicFunctions>
+ <PreprocessorDefinitions>NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <PrecompiledHeaderFile>HwHotKeys.h</PrecompiledHeaderFile>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <SubSystem>Windows</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ <AdditionalLibraryDirectories>$(ProfileDir)..\..\bin12\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SetChecksum>true</SetChecksum>
+ <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
+ </Link>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </ResourceCompile>
+ <ResourceCompile>
+ <AdditionalIncludeDirectories>..\..\include\msapi</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <PrecompiledHeader>Use</PrecompiledHeader>
+ <Optimization>Full</Optimization>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>false</IntrinsicFunctions>
+ <PreprocessorDefinitions>NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\include;..\ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <PrecompiledHeaderFile>HwHotKeys.h</PrecompiledHeaderFile>
+ </ClCompile>
+ <Link>
+ <SubSystem>Windows</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ <AdditionalLibraryDirectories>$(ProfileDir)..\..\bin12\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <SetChecksum>true</SetChecksum>
+ <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
+ </Link>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </ResourceCompile>
+ <ResourceCompile>
+ <AdditionalIncludeDirectories>..\..\include\msapi</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClInclude Include="src\HwHotKeys.h" />
+ <ClInclude Include="src\HwHotKeys_version.h" />
+ <ClInclude Include="src\HwHotKeys_resource.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="src\HwHotKeys_Dlg.cpp" />
+ <ClCompile Include="src\HwHotKeys_DllMain.cpp" />
+ <ClCompile Include="src\HwHotKeys_KbdHook.cpp" />
+ <ClCompile Include="src\HwHotKeys_KeyName.cpp" />
+ <ClCompile Include="src\HwHotKeys_Util.cpp" />
+ <ClCompile Include="src\stdafx.cpp">
+ <PrecompiledHeader>Create</PrecompiledHeader>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="res\HwHotKeys_version.rc" />
+ <ResourceCompile Include="res\HwHotKeys.rc" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/plugins/HwHotKeys/HwHotKeys_12.vcxproj.filters b/plugins/HwHotKeys/HwHotKeys_12.vcxproj.filters
new file mode 100644
index 0000000000..0dc01c54f3
--- /dev/null
+++ b/plugins/HwHotKeys/HwHotKeys_12.vcxproj.filters
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="src\HwHotKeys.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\HwHotKeys_version.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\HwHotKeys_resource.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="src\HwHotKeys_Dlg.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\HwHotKeys_DllMain.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\HwHotKeys_KbdHook.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\HwHotKeys_Util.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\HwHotKeys_KeyName.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\stdafx.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="res\HwHotKeys.rc">
+ <Filter>Resource Files</Filter>
+ </ResourceCompile>
+ <ResourceCompile Include="res\HwHotKeys_version.rc">
+ <Filter>Resource Files</Filter>
+ </ResourceCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/plugins/HwHotKeys/res/HwHotKeys.rc b/plugins/HwHotKeys/res/HwHotKeys.rc
new file mode 100644
index 0000000000..693266bbe8
--- /dev/null
+++ b/plugins/HwHotKeys/res/HwHotKeys.rc
@@ -0,0 +1,110 @@
+// Microsoft Visual C++ generated resource script.
+//
+#include "..\src\HwHotKeys_resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "winres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// Ðóññêèé (Ðîññèÿ) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
+LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE
+BEGIN
+ "..\\src\\HwHotKeys_resource.h\0"
+END
+
+2 TEXTINCLUDE
+BEGIN
+ "#include <winres.h>\0"
+END
+
+3 TEXTINCLUDE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+dlg_options DIALOGEX 0, 0, 315, 247
+STYLE DS_SETFONT | DS_3DLOOK | DS_FIXEDSYS | WS_CHILD
+EXSTYLE WS_EX_CONTROLPARENT
+FONT 8, "MS Shell Dlg", 0, 0, 0x1
+BEGIN
+ CONTROL "Hardware HotKeys plugin\r\nAllows to assign expanded multimedia-keys (only for PS/2-keyboards)", -1, "Static", WS_CHILDWINDOW | WS_VISIBLE | SS_CENTER, 3, 3, 303, 21
+ CONTROL "Close Miranda", -1, "Static", WS_CHILDWINDOW | WS_VISIBLE | SS_CENTERIMAGE | SS_LEFTNOWORDWRAP, 0, 30, 114, 12
+ CONTROL "", dlg_close_edit, "Edit", WS_CHILDWINDOW | WS_VISIBLE | WS_TABSTOP | ES_READONLY | ES_AUTOHSCROLL, 114, 30, 114, 12, WS_EX_CLIENTEDGE
+ CONTROL "Assign", dlg_close_set, "Button", WS_CHILDWINDOW | WS_VISIBLE | WS_TABSTOP, 228, 30, 42, 12
+ CONTROL "Clear", dlg_close_clear, "Button", WS_CHILDWINDOW | WS_VISIBLE | WS_TABSTOP, 270, 30, 42, 12
+ CONTROL "Show/Hide contact list", -1, "Static", WS_CHILDWINDOW | WS_VISIBLE | SS_CENTERIMAGE | SS_LEFTNOWORDWRAP, 0, 45, 114, 12
+ CONTROL "", dlg_hide_edit, "Edit", WS_CHILDWINDOW | WS_VISIBLE | WS_TABSTOP | ES_READONLY | ES_AUTOHSCROLL, 114, 45, 114, 12, WS_EX_CLIENTEDGE
+ CONTROL "Assign", dlg_hide_set, "Button", WS_CHILDWINDOW | WS_VISIBLE | WS_TABSTOP, 228, 45, 42, 12
+ CONTROL "Clear", dlg_hide_clear, "Button", WS_CHILDWINDOW | WS_VISIBLE | WS_TABSTOP, 270, 45, 42, 12
+ CONTROL "Read message", -1, "Static", WS_CHILDWINDOW | WS_VISIBLE | SS_CENTERIMAGE | SS_LEFTNOWORDWRAP, 0, 60, 114, 12
+ CONTROL "", dlg_read_edit, "Edit", WS_CHILDWINDOW | WS_VISIBLE | WS_TABSTOP | ES_READONLY | ES_AUTOHSCROLL, 114, 60, 114, 12, WS_EX_CLIENTEDGE
+ CONTROL "Assign", dlg_read_set, "Button", WS_CHILDWINDOW | WS_VISIBLE | WS_TABSTOP, 228, 60, 42, 12
+ CONTROL "Clear", dlg_read_clear, "Button", WS_CHILDWINDOW | WS_VISIBLE | WS_TABSTOP, 270, 60, 42, 12
+ CONTROL "Last pressed key", -1, "Button", WS_CHILDWINDOW | WS_VISIBLE | BS_CENTER | BS_GROUPBOX, 0, 174, 312, 63
+ CONTROL "Extended flag (1xx), Hardware scan code (x23), KeyName", -1, "Static", WS_CHILDWINDOW | WS_VISIBLE | SS_CENTERIMAGE | SS_LEFTNOWORDWRAP, 6, 186, 198, 12
+ CONTROL "", dlg_scancode_edit, "Edit", WS_CHILDWINDOW | WS_VISIBLE | WS_TABSTOP | ES_READONLY | ES_AUTOHSCROLL, 204, 186, 99, 12, WS_EX_CLIENTEDGE
+ CONTROL "Combine left/right keys Shift, Ctrl, Win, Alt", dlg_combine, "Button", WS_CHILDWINDOW | WS_VISIBLE | WS_TABSTOP | BS_AUTOCHECKBOX, 6, 204, 291, 9
+ CONTROL "Combination of keys for assignment", -1, "Static", WS_CHILDWINDOW | WS_VISIBLE | SS_CENTERIMAGE | SS_LEFTNOWORDWRAP, 6, 219, 144, 12
+ CONTROL "", dlg_keyname_edit, "Edit", WS_CHILDWINDOW | WS_VISIBLE | WS_TABSTOP | ES_READONLY | ES_AUTOHSCROLL, 150, 219, 153, 12, WS_EX_CLIENTEDGE
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO
+BEGIN
+ IDD_DIALOG1, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 302
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 169
+ END
+END
+#endif // APSTUDIO_INVOKED
+
+#endif // Ðóññêèé (Ðîññèÿ) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
diff --git a/plugins/HwHotKeys/res/HwHotKeys_version.rc b/plugins/HwHotKeys/res/HwHotKeys_version.rc
new file mode 100644
index 0000000000..e2a0e7b639
--- /dev/null
+++ b/plugins/HwHotKeys/res/HwHotKeys_version.rc
@@ -0,0 +1,38 @@
+
+
+#include "afxres.h"
+#include "..\src\HwHotKeys_version.h"
+
+// https://msdn.microsoft.com/en-us/library/windows/desktop/aa381058%28v=vs.85%29.aspx
+
+VS_VERSION_INFO VERSIONINFO
+FILEVERSION __FILEVERSION_STRING
+PRODUCTVERSION __FILEVERSION_STRING
+FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
+#ifdef _DEBUG
+FILEFLAGS VS_FF_DEBUG
+#else
+FILEFLAGS 0x0L
+#endif
+FILEOS VOS_NT
+FILETYPE VFT_DLL
+FILESUBTYPE VFT2_UNKNOWN
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "04090000"
+ BEGIN
+ VALUE "FileDescription", __DESCRIPTION_DLL
+ VALUE "FileVersion", __VERSION_STRING_DOTS
+ VALUE "InternalName", __PLUGIN_NAME
+ VALUE "LegalCopyright", __COPYRIGHT
+ VALUE "CompanyName", __AUTHORWEB
+ VALUE "OriginalFilename", __FILENAME
+ VALUE "ProductName", __PLUGIN_NAME
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x0409, 0
+ END
+END
diff --git a/plugins/HwHotKeys/src/HwHotKeys.cpp b/plugins/HwHotKeys/src/HwHotKeys.cpp
new file mode 100644
index 0000000000..a922fd80ba
--- /dev/null
+++ b/plugins/HwHotKeys/src/HwHotKeys.cpp
@@ -0,0 +1,23 @@
+// HwHotKeys.cpp: îïðåäåëÿåò ýêñïîðòèðîâàííûå ôóíêöèè äëÿ ïðèëîæåíèÿ DLL.
+//
+
+#include "stdafx.h"
+#include "HwHotKey.h"
+
+
+
+// Ïðèìåð ýêñïîðòèðîâàííîé ïåðåìåííîé
+HWHOTKEYS_API int nHwHotKeys=0;
+
+// Ïðèìåð ýêñïîðòèðîâàííîé ôóíêöèè.
+HWHOTKEYS_API int fnHwHotKeys(void)
+{
+ return 42;
+}
+
+// Êîíñòðóêòîð äëÿ ýêñïîðòèðîâàííîãî êëàññà.
+// ñì. îïðåäåëåíèå êëàññà â HwHotKeys.h
+CHwHotKeys::CHwHotKeys()
+{
+ return;
+}
diff --git a/plugins/HwHotKeys/src/HwHotKeys.h b/plugins/HwHotKeys/src/HwHotKeys.h
new file mode 100644
index 0000000000..82b3a7bb61
--- /dev/null
+++ b/plugins/HwHotKeys/src/HwHotKeys.h
@@ -0,0 +1,87 @@
+/* ============================================================================
+Hardware HotKeys plugin for Miranda NG.
+Copyright © Eugene f2065, http://f2065.narod.ru, f2065 mail.ru, ICQ 35078112
+
+This program is free software; you can redistribute it and / or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 - 1307, USA.
+============================================================================ */
+
+#include <SDKDDKVer.h>
+#include <windows.h>
+
+#include <newpluginapi.h>
+#include <m_langpack.h>
+#include <m_database.h>
+#include <m_options.h>
+#include <m_clistint.h>
+
+#include <Strsafe.h>
+
+#include "HwHotKeys_resource.h"
+#include "HwHotKeys_version.h"
+
+int initializeOptions(WPARAM, LPARAM);
+INT_PTR CALLBACK OptDlgProc(HWND, UINT, WPARAM, LPARAM);
+VOID HwHotKeys_PrintFullKeyname(DWORD);
+BOOL HwHotKeys_CompareCurrentScancode(DWORD);
+LRESULT CALLBACK key_hook(INT, WPARAM, LPARAM);
+extern CLIST_INTERFACE *pcli;
+
+
+extern HINSTANCE hInstance;
+extern INT hLangpack;
+extern HWND hDialogWnd; // ãëîáàëüíî èñïîëüçóåòñÿ äëÿ âûâîäà òóäà â ðåàëòàéìå ñêàíêîäîâ êëàâû, èç õóêà
+extern HHOOK hHook;
+
+extern DWORD code_Close_tmp;
+extern DWORD code_HideShow_tmp;
+extern DWORD code_ReadMsg_tmp;
+extern DWORD code_Close;
+extern DWORD code_HideShow;
+extern DWORD code_ReadMsg;
+
+extern DWORD key_code;
+extern DWORD key_code_raw;
+extern DWORD key_code_assign;
+
+
+extern CHAR key_name_buffer[150];
+extern const CHAR *key_tab[0x200];
+
+extern const CHAR *t_CL;
+extern const CHAR *t_CR;
+extern const CHAR *t_CC;
+extern const CHAR *t_AL;
+extern const CHAR *t_AR;
+extern const CHAR *t_AA;
+extern const CHAR *t_WL;
+extern const CHAR *t_WR;
+extern const CHAR *t_WW;
+extern const CHAR *t_SL;
+extern const CHAR *t_SR;
+extern const CHAR *t_SS;
+
+// çíà÷åíèÿ ñâÿçàíû ñ áèòàìè â HwHotKeys_CompareCurrentScancode
+enum : DWORD { key_flag_sr = 0x01000000 };
+enum : DWORD { key_flag_cr = 0x02000000 };
+enum : DWORD { key_flag_ar = 0x04000000 };
+enum : DWORD { key_flag_wr = 0x08000000 };
+enum : DWORD { key_flag_sl = 0x10000000 };
+enum : DWORD { key_flag_cl = 0x20000000 };
+enum : DWORD { key_flag_al = 0x40000000 };
+enum : DWORD { key_flag_wl = 0x80000000 };
+enum : DWORD { key_flag_ss = 0x00100000 };
+enum : DWORD { key_flag_cc = 0x00200000 };
+enum : DWORD { key_flag_aa = 0x00400000 };
+enum : DWORD { key_flag_ww = 0x00800000 };
diff --git a/plugins/HwHotKeys/src/HwHotKeys_Dlg.cpp b/plugins/HwHotKeys/src/HwHotKeys_Dlg.cpp
new file mode 100644
index 0000000000..c159acc2d8
--- /dev/null
+++ b/plugins/HwHotKeys/src/HwHotKeys_Dlg.cpp
@@ -0,0 +1,108 @@
+/* ============================================================================
+Hardware HotKeys plugin for Miranda NG.
+Copyright © Eugene f2065, http://f2065.narod.ru, f2065 mail.ru, ICQ 35078112
+
+This program is free software; you can redistribute it and / or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 - 1307, USA.
+============================================================================ */
+
+#include "HwHotKeys.h"
+
+INT_PTR CALLBACK OptDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
+{
+ switch (msg) {
+ case WM_INITDIALOG:
+
+ hDialogWnd = hDlg;
+
+ TranslateDialogDefault(hDlg);
+
+ code_Close_tmp = code_Close;
+ HwHotKeys_PrintFullKeyname(code_Close_tmp);
+ SetDlgItemTextA(hDlg, dlg_close_edit, key_name_buffer);
+ code_HideShow_tmp = code_HideShow;
+ HwHotKeys_PrintFullKeyname(code_HideShow_tmp);
+ SetDlgItemTextA(hDlg, dlg_hide_edit, key_name_buffer);
+ code_ReadMsg_tmp = code_ReadMsg;
+ HwHotKeys_PrintFullKeyname(code_ReadMsg_tmp);
+ SetDlgItemTextA(hDlg, dlg_read_edit, key_name_buffer);
+
+ break; //case WM_INITDIALOG
+
+ case WM_COMMAND:
+ switch (wParam)
+ {
+ case dlg_close_set:
+ code_Close_tmp = key_code_assign;
+ HwHotKeys_PrintFullKeyname(key_code_assign);
+ SetDlgItemTextA(hDialogWnd, dlg_close_edit, key_name_buffer);
+ SendMessage(GetParent(hDlg), PSM_CHANGED, 0, 0); // ñîîáùàåò ñèñòåìå î òîì ÷òî áûëè èçìåíåíèÿ
+ break;
+ case dlg_close_clear:
+ code_Close_tmp = 0;
+ SetDlgItemTextA(hDialogWnd, dlg_close_edit, "");
+ SendMessage(GetParent(hDlg), PSM_CHANGED, 0, 0);
+ break;
+ case dlg_hide_set:
+ code_HideShow_tmp = key_code_assign;
+ HwHotKeys_PrintFullKeyname(key_code_assign);
+ SetDlgItemTextA(hDialogWnd, dlg_hide_edit, key_name_buffer);
+ SendMessage(GetParent(hDlg), PSM_CHANGED, 0, 0);
+ break;
+ case dlg_hide_clear:
+ code_HideShow_tmp = 0;
+ SetDlgItemTextA(hDialogWnd, dlg_hide_edit, "");
+ SendMessage(GetParent(hDlg), PSM_CHANGED, 0, 0);
+ break;
+ case dlg_read_set:
+ code_ReadMsg_tmp = key_code_assign;
+ HwHotKeys_PrintFullKeyname(key_code_assign);
+ SetDlgItemTextA(hDialogWnd, dlg_read_edit, key_name_buffer);
+ SendMessage(GetParent(hDlg), PSM_CHANGED, 0, 0);
+ break;
+ case dlg_read_clear:
+ code_ReadMsg_tmp = 0;
+ SetDlgItemTextA(hDialogWnd, dlg_read_edit, "");
+ SendMessage(GetParent(hDlg), PSM_CHANGED, 0, 0);
+ break;
+ }
+ break; //case WM_COMMAND
+
+ case WM_NOTIFY:
+ switch (((LPNMHDR)lParam)->idFrom)
+ {
+ case 0:
+ switch (((LPNMHDR)lParam)->code)
+ {
+ case PSN_APPLY: // ñèñòåìà ïðîñèò ñîõðàíèòü íàñòðîéêè ïëàãèíà
+ code_Close = code_Close_tmp;
+ db_set_dw(0, __DbModName, "Close", code_Close_tmp);
+ code_HideShow = code_HideShow_tmp;
+ db_set_dw(0, __DbModName, "HideShow", code_HideShow_tmp);
+ code_ReadMsg = code_ReadMsg_tmp;
+ db_set_dw(0, __DbModName, "ReadMsg", code_ReadMsg_tmp);
+ break; //case PSN_APPLY
+ }
+ break; //case 0
+ }
+ break; //case WM_NOTIFY
+
+ case WM_DESTROY:
+ hDialogWnd = 0; // èñïîëüçóåòñÿ äëÿ âûâîäà òóäà â ðåàëòàéìå ñêàíêîäîâ êëàâû (ïîêà îòêðûòû íàñòðîéêè), 0 (ïðè çàêðûòèè äèàëîãà) áëîêèðóåò ýòî
+ break;
+ }
+
+ return 0;
+}
+
diff --git a/plugins/HwHotKeys/src/HwHotKeys_DllMain.cpp b/plugins/HwHotKeys/src/HwHotKeys_DllMain.cpp
new file mode 100644
index 0000000000..6a36f8e31e
--- /dev/null
+++ b/plugins/HwHotKeys/src/HwHotKeys_DllMain.cpp
@@ -0,0 +1,150 @@
+/* ============================================================================
+Hardware HotKeys plugin for Miranda NG.
+Copyright © Eugene f2065, http://f2065.narod.ru, f2065 mail.ru, ICQ 35078112
+
+This program is free software; you can redistribute it and / or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 - 1307, USA.
+============================================================================ */
+
+
+
+#include "HwHotKeys.h"
+
+HINSTANCE hInstance;
+int hLangpack;
+HWND hDialogWnd = 0; // õýíäë îêíà íàñòðîåê, îí ãëîáàëüíî èñïîëüçóåòñÿ äëÿ âûâîäà òóäà â ðåàëòàéìå ñêàíêîäîâ êëàâû èç õóêà
+HHOOK hHook;
+CLIST_INTERFACE *pcli;
+
+// òàì õðàíÿòñÿ íàñòðîéêè - ñêàíêîäû êíîïîê äëÿ çàêðûòèÿ/ïîêàçà/÷òåíèÿ, íà êîòîðûå äîëæíû ðåàãèðîâàòü ñîîòâåòñòâóþùèå äåéñòâèÿ
+DWORD code_Close = 0;
+DWORD code_HideShow = 0;
+DWORD code_ReadMsg = 0;
+// â _tmp êîïèðóþòñÿ íàñòðîéêè íà âðåìÿ äèàëîãà íàñòðîåê
+DWORD code_Close_tmp = 0;
+DWORD code_HideShow_tmp = 0;
+DWORD code_ReadMsg_tmp = 0;
+// ôîðìàò ñêàíêîäîâ òóò òàêîé:
+// ìëàäøèå 0...7 áèòû - ýòî àïïàðàòíûé ñêàíêîä (êàê îí ïðèõîäèò â KbdLLHookStruct.scanCode&0xFF)
+// 8 áèò - ýòî êàê áû ÷àñòü ñêàíêîäà, ôëàã LLKHF_EXTENDED ((LOBYTE(KbdLLHookStruct.flags)&1) - ÷àñòü êíîïîê ñ ýòèì ôëàãîì
+// (àâòîðàì 101-êíîïî÷íîé êëàâû íå õâàòèëî 255 ñêàíêîäîâ, ò.ê. òàì ìíîãî ñòàðûõ êíîïîê êîòîðûå óæå äàâíî âûìåðëè òèïà F13-F20).
+// èòàê, ïëàãèí îïåðèðóåò 9-áèòíûìè ñêàíêîäàìè (èìåíà êíîïîê âñåõ ýòèõ ñêàíêîäîâ ïðîïèñàíû â òàáëèöå *key_tab[0x200]).
+// áèòû 9-19 - íå èñïîëüçóþòñÿ.
+// áèòû 20-31 - ýòî ôëàãè ðåãèñòðîâ, Shift/Ctrl/Alt/Win. Íà 4 êíîïêè - 12 áèòîâ. Ïîòîìó ÷òî êàæäàÿ êíîïêà 3 èìååò áèòà - ëåâàÿ, ïðàâàÿ, èëè ëþáàÿ.
+// áèòîâûå ìàñêè ðåãèñòðîâ îïåðåäåëåíû â key_flag_sr è ñîñåäíèõ èìåíàõ
+
+// ïëàãèí îïåðèðóåò 10 - áèòíûìè "ñêàíêîäàìè" ñîáñòâåííîãî ôîðìàòà.
+// ìëàäøèå 0...7 áèòû - ýòî îáû÷íî àïïàðàòíûé ñêàíêîä (êàê îí ïðèõîäèò â KbdLLHookStruct.scanCode&0xFF)
+// 8 áèò - ýòî êàê áû ÷àñòü ñêàíêîäà, ôëàã LLKHF_EXTENDED ((LOBYTE(KbdLLHookStruct.flags)&1) - ÷àñòü êíîïîê ñ ýòèì ôëàãîì
+// (àâòîðàì 101-êíîïî÷íîé êëàâû íå õâàòèëî 255 ñêàíêîäîâ, ò.ê. òàì ìíîãî ñòàðûõ êíîïîê êîòîðûå óæå äàâíî âûìåðëè òèïà F13-F20).
+// 9 áèò - ýòî çíà÷èò ÷òî â áèòàõ 0...7 íå àïïàðàòíûé ñêàíêîä, à VK-êîä (KbdLLHookStruct.vkCode), è 8 áèò ïðè ýòîì âñåãäà 0.
+// ñäåëàíî ýòî ïîòîìó ÷òî íåêîòîðûå USB-êëàâèàòóðû íå âûäàþò â õóê àïïàðàòíûå ñêàíäîäû, è åñëè òàì 0 - òî áóäåò èñïîëüçîâàí VK-êîä.
+// (èìåíà êíîïîê âñåõ ýòèõ ñêàíêîäîâ ïðîïèñàíû â òàáëèöå *key_tab[0x300]).
+// áèòû 10-19 - íå èñïîëüçóþòñÿ.
+// áèòû 20-31 - ýòî ôëàãè ðåãèñòðîâ, Shift/Ctrl/Alt/Win. Íà 4 êíîïêè - 12 áèòîâ. Ïîòîìó ÷òî êàæäàÿ êíîïêà 3 èìååò áèòà - ëåâàÿ, ïðàâàÿ, èëè ëþáàÿ.
+// áèòîâûå ìàñêè ðåãèñòðîâ îïåðåäåëåíû â key_flag_sr è ñîñåäíèõ èìåíàõ
+
+
+
+
+DWORD key_code = 0; // òàì ïîñòîÿííî îáíîâëÿåòñÿ ñêàíêîä òåêóùåé íàæàòîé êîìáèíàöèè
+DWORD key_code_raw = 0;
+DWORD key_code_assign = 0; // âî âðåìÿ íàñòðîåê òàì õðàíèòñÿ ñêàíêîä ïîñëåäíåé íàæàòîé êîìáèíàöèè, êîòîðûé ìîæíî íàçíà÷èòü äëÿ äåéñòâèÿ.
+
+CHAR key_name_buffer[150]; // áóôåð êóäà ïå÷àòàåòñÿ èìÿ êíîïêè â íàñòðîéêàõ. ANSI.
+// Ñàìàÿ äëèííàÿ â òåîðèè ñòðîêà - «L_Shift + L_Ctrl + L_Alt + L_Win + R_Shift + R_Ctrl + R_Alt + R_Win + MSO_Print, HP_TouchPadOff» - ìåíåå 100 áóêâ.
+
+// ============================================================================
+
+BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
+{
+ hInstance = hModule;
+ return TRUE;
+}
+
+// ============================================================================
+
+PLUGININFOEX PluginInfoEx = {
+ sizeof(PLUGININFOEX),
+ __PLUGIN_NAME,
+ PLUGIN_MAKE_VERSION(__MAJOR_VERSION, __MINOR_VERSION, __RELEASE_NUM, __BUILD_NUM),
+ __DESCRIPTION_MIR,
+ __AUTHOR,
+ __AUTHOREMAIL,
+ __COPYRIGHT,
+ __AUTHORWEB,
+ UNICODE_AWARE,
+ // {315B3800-8258-44C4-B60E-58C50B9303B6} - GUID äëÿ ïëàãèíà HwHotKeys
+ { 0x315b3800, 0x8258, 0x44c4, { 0xb6, 0xe, 0x58, 0xc5, 0xb, 0x93, 0x3, 0xb6 } }
+};
+
+extern "C" __declspec(dllexport) PLUGININFOEX * MirandaPluginInfoEx(DWORD)
+{
+ return &PluginInfoEx;
+}
+
+// ============================================================================
+
+extern "C" __declspec(dllexport) int Load(void)
+{
+ // çàãðóæàåì (èç ÁÄ) íàñòðîéêè ïëàãèíà
+ code_Close = db_get_dw(0, __DbModName, "Close", 0);
+ code_HideShow = db_get_dw(0, __DbModName, "HideShow", 0);
+ code_ReadMsg = db_get_dw(0, __DbModName, "ReadMsg", 0);
+
+ // óñòàíîâêà êîäà ëîêàëèçàöèè - ìàêðîñ mir_getLP(PlgInfoEx)
+ mir_getLP(&PluginInfoEx);
+
+ // Èíòåðôåéñ êîíòàêòëèñòà - ìàêðîñ çàïîëíÿåò CLIST_INTERFACE *pcli;
+ mir_getCLI();
+
+ // ðåãèñòðàöèÿ äèàëîãà îïöèé
+ HookEvent(ME_OPT_INITIALISE, initializeOptions);
+
+ // óñòàíîâêà õóêà äëÿ íèçêîóðîâíåâîé îáðàáîòêè õîòêååâ
+ hHook = SetWindowsHookExA(WH_KEYBOARD_LL, key_hook, hInstance, 0);
+
+// StringCbPrintfA(key_name_buffer, 100, "hHook = 0x%x, Err = %u", hHook, GetLastError);
+// MessageBoxA(0, key_name_buffer, 0, 0);
+
+ return 0;
+}
+
+// ====================================
+
+int initializeOptions(WPARAM wParam, LPARAM)
+{
+ OPTIONSDIALOGPAGE OptDlgPg = { sizeof(OptDlgPg) };
+ OptDlgPg.position = 100000000;
+ OptDlgPg.hInstance = hInstance;
+ OptDlgPg.flags = ODPF_BOLDGROUPS | ODPF_TCHAR;
+ OptDlgPg.pszTemplate = MAKEINTRESOURCEA(dlg_options);
+ OptDlgPg.ptszGroup = LPGENT("Customize");
+ OptDlgPg.ptszTitle = LPGENT(__PLUGIN_NAME);
+ OptDlgPg.pfnDlgProc = OptDlgProc;
+ OptDlgPg.hLangpack = hLangpack;
+ Options_AddPage(wParam, &OptDlgPg);
+ return 0;
+}
+
+// ============================================================================
+
+extern "C" __declspec(dllexport) int Unload(void)
+{
+ UnhookWindowsHookEx(hHook);
+ return 0;
+}
+
+// ============================================================================
+
diff --git a/plugins/HwHotKeys/src/HwHotKeys_KbdHook.cpp b/plugins/HwHotKeys/src/HwHotKeys_KbdHook.cpp
new file mode 100644
index 0000000000..ac80b69036
--- /dev/null
+++ b/plugins/HwHotKeys/src/HwHotKeys_KbdHook.cpp
@@ -0,0 +1,133 @@
+/* ============================================================================
+Hardware HotKeys plugin for Miranda NG.
+Copyright © Eugene f2065, http://f2065.narod.ru, f2065 mail.ru, ICQ 35078112
+
+This program is free software; you can redistribute it and / or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 - 1307, USA.
+============================================================================ */
+
+#include "HwHotKeys.h"
+
+LRESULT CALLBACK key_hook(int nCode, WPARAM wParam, LPARAM lParam) // https://msdn.microsoft.com/en-us/library/windows/desktop/ms644985%28v=vs.85%29.aspx
+{
+ KBDLLHOOKSTRUCT *pKbdLLHookStruct = (KBDLLHOOKSTRUCT *)lParam;
+ if (nCode >= 0)
+ {
+ if (wParam == WM_KEYUP || wParam == WM_SYSKEYUP) // ïðè îòïóñêàíèè ëþáîé êíîïêè - ñáðàñûâàåì âñþ íàêîïëåííóþ êîìáèíàöèþ
+ {
+ key_code = 0;
+ }
+ else if (wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN)
+ {
+ if (!(pKbdLLHookStruct->scanCode & 0xFFFFFF00) && (pKbdLLHookStruct->scanCode & 0xFF)) // && !(pKbdLLHookStruct->flags & LLKHF_INJECTED))
+ // 0xFFFFFF00 ôèëüòð äëÿ ñòðàííûõ äâîéíûõ ñêàíêîäîâ íàïðèìåð ïåðåä L_Alt/AltGr,
+ // 0xFF ôèëüòð äëÿ íóëåâûõ ñêàíêîäîâ(ïðèõîäÿò ïðè âñÿêîé òàì ýìóëÿöèè íàæàòèé è ò.ï.)
+ // LLKHF_INJECTED ôèëüòð äëÿ ýìóëèðóåìûõ íàæàòèé, íî åñòü ïðîáëåìà ñ íåêîòîðûìè êëàâàìè
+ {
+ // ñòðîèì êîìïëåêñíûé êîä(ñêàíêîä + äîï.ôëàã LLKHF_EXTENDED), îò 0 äî 1FF
+ key_code_raw = (LOBYTE(pKbdLLHookStruct->scanCode) | ((LOBYTE(pKbdLLHookStruct->flags)&1) << 8));
+
+ if (hDialogWnd) // åñëè äèàëîã íàñòðîåê îòêðûò - âûâîäèì â íåãî íàæèìàåìûå êíîïîêè
+ {
+ StringCbPrintfA(key_name_buffer, sizeof(key_name_buffer), "%03X %s", key_code_raw, key_tab[(key_code_raw & 0x1FF)]);
+ SetDlgItemTextA(hDialogWnd, dlg_scancode_edit, key_name_buffer);
+ }
+
+ switch (key_code_raw) // ïðîâåðÿåì êíîïêè ìîäèôèêàòîðîâ
+ {
+ case 0x01D: // L_Ctrl
+ key_code |= key_flag_cl;
+ break; // ïîñëå ìîäèôèêàòîðîâ - íè÷åãî íå äåëàåì, âûõîä èç õóêà.
+ case 0x11D: // R_Ctrl
+ key_code |= key_flag_cr;
+ break;
+ case 0x038: // L_Alt
+ key_code |= key_flag_al;
+ break;
+ case 0x138: // R_Alt
+ key_code |= key_flag_ar;
+ break;
+ case 0x15B: // L_Win
+ key_code |= key_flag_wl;
+ break;
+ case 0x15C: // R_Win
+ key_code |= key_flag_wr;
+ break;
+ case 0x02A: // L_Shift
+ key_code |= key_flag_sl;
+ break;
+ case 0x036: // R_Shift
+ key_code |= key_flag_sr;
+ break;
+ case 0x12A: // L_Shift_fake
+ key_code |= key_flag_sl;
+ break;
+ case 0x136: // R_Shift_fake
+ key_code |= key_flag_sr;
+ break;
+ default: // åñëè ýòî íå êíîïêà ìîäèôèêàòîðà - òî äàëüíåéøàÿ îáðàáîòêà
+ key_code = (LOWORD(key_code_raw)) | (key_code & 0xFFFF0000); // â ñòàðøåé ïîëîâèíå òàì ëåæàò áèòû ìîäèôèêàòîðîâ - èõ îñòàâëÿåì (îíè òàì ìîãóò áûòü îò ïðåäûäóùåãî ðàçà)
+ if (hDialogWnd) // åñëè äèàëîã íàñòðîåê îòêðûò - âûâîäèì â íåãî êîìïëåêñíóþ êîìáèíàöèþ (òèïà Shift+Key), êîòîðóþ ïîòîì ìîæíî íàçíà÷èòü;
+ {
+ if (IsDlgButtonChecked(hDialogWnd, dlg_combine)) // ëåâûå/ïðàâûå ìîäèôèêàòîðû îáúåäèíÿòü â îäèí?
+ {
+ DWORD tmp1, tmp2;
+ tmp1 = ((key_code >> 4) | (key_code >> 8)) & 0x00F00000;
+ tmp2 = LOWORD(key_code) | tmp1;
+ tmp2 &= 0x00F001FF;
+ key_code_assign = tmp2;
+ }
+ else
+ {
+ key_code_assign = key_code;
+ }
+ HwHotKeys_PrintFullKeyname(key_code_assign);
+ SetDlgItemTextA(hDialogWnd, dlg_keyname_edit, key_name_buffer);
+ }
+ else // õîòêåé âûïîëíÿþò äåéñòâèÿ òîëüêî åñëè çàêðûò äèàëîã íàñòðîåê (÷òîáû íå ìåøàë íàñòðàèâàòü)
+ {
+ if (HwHotKeys_CompareCurrentScancode(code_Close)) // õîòêåé ïîëíîãî çàêðûòèÿ Miranda
+ {
+ // Beep(300, 200);
+ CallService("CloseAction", 0, 0);
+ return 1;
+ }
+ else if (HwHotKeys_CompareCurrentScancode(code_HideShow)) // õîòêåé ñâîðà÷èâàíèÿ/ðàçâîðà÷èâàíèÿ ãëàâíîãî îêíà Miranda
+ {
+ // Beep(700, 200);
+ pcli->pfnShowHide(0, 0); // åñòü âàðèàíòû
+ return 1;
+ }
+ else if (HwHotKeys_CompareCurrentScancode(code_ReadMsg)) // õîòêåé ÷òåíèÿ ñîîáùåíèÿ
+ {
+ // Beep(1500, 200);
+ if (pcli->pfnEventsProcessTrayDoubleClick(0) != 0) // êëèê ïî òðåþ äëÿ ñòàíäàðòíîãî îòêðûòèÿ ñîîáùåíèÿ
+ { // èíà÷å - îêíî ÷àòà óæå îòêðûòî è íàäî åãî âûòàùèòü íàâåðõ...
+ SetForegroundWindow(pcli->hwndContactList);
+ SetFocus(pcli->hwndContactList);
+ // õîòÿ âñ¸ ðàâíî ýòî íå î÷åíü ðàáîòàåò â íîâîé âèíäå
+ // íàäî http://www.rsdn.ru/article/qna/ui/wndsetfg.xml
+ // íî ïîêà íåçíàþ ãäå òóò âçÿòü õýíäë îêíà ÷àòà(ïðè÷¸ì èìåííî äëÿ
+ // âûáðàííîãî êîíòàêòà, èõ æå íåñêîëüêî ìîæåò áûòü åñëè ïðîñòîé srmm)
+ // ó ìèðàíäû â hkRead òàêèå æå ïðîáëåìû
+ }
+ return 1; // âîçâðàò 1 çàïðåùàåò äàëüíåéøóþ ðàáîòó êíîïêè, ò.å. êíîïêà ïîñëå íàøåãî ïëàãèíà íèêîìó áîëåå íå äîñòàíåòñÿ
+ }
+ }
+ }
+ }
+ }
+ }
+ return CallNextHookEx(hHook, nCode, wParam, lParam);
+}
diff --git a/plugins/HwHotKeys/src/HwHotKeys_KeyName.cpp b/plugins/HwHotKeys/src/HwHotKeys_KeyName.cpp
new file mode 100644
index 0000000000..a372bca19e
--- /dev/null
+++ b/plugins/HwHotKeys/src/HwHotKeys_KeyName.cpp
@@ -0,0 +1,243 @@
+/* ============================================================================
+Hardware HotKeys plugin for Miranda NG.
+Copyright © Eugene f2065, http://f2065.narod.ru, f2065 mail.ru, ICQ 35078112
+
+This program is free software; you can redistribute it and / or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 - 1307, USA.
+============================================================================ */
+
+#include "HwHotKeys.h"
+
+// òóò îïèñàíû èçâåñòíûå èìåíà êíîïîê ïî àïïàðàòíûì ñêàíêîäàì (KbdLLHookStruct.scanCode & 0xFF) è ((LOBYTE(KbdLLHookStruct.flags)&1)
+// è ïî VK-êîäàì (KbdLLHookStruct.vkCode)
+
+// ïðè îáíàðóæåíèè íîâûõ êíîïîê (íà ìóëüòèìåäèéíûõ êëàâèàòóðàõ) ïðîñüáà ñîîáùàòü îá ýòîì àâòîðó!
+
+
+
+// èìåíà äëÿ KbdLLHookStruct.scanCode
+const CHAR *k000 = "Undefined!";
+const CHAR *k001 = "Esc";
+const CHAR *k002 = "1";
+const CHAR *k003 = "2";
+const CHAR *k004 = "3";
+const CHAR *k005 = "4";
+const CHAR *k006 = "5";
+const CHAR *k007 = "6";
+const CHAR *k008 = "7";
+const CHAR *k009 = "8";
+const CHAR *k00A = "9";
+const CHAR *k00B = "0";
+const CHAR *k00C = "-_";
+const CHAR *k00D = "=+";
+const CHAR *k00E = "Backspace";
+const CHAR *k00F = "Tab";
+const CHAR *k010 = "Q";
+const CHAR *k011 = "W";
+const CHAR *k012 = "E";
+const CHAR *k013 = "R";
+const CHAR *k014 = "T";
+const CHAR *k015 = "Y";
+const CHAR *k016 = "U";
+const CHAR *k017 = "I";
+const CHAR *k018 = "O";
+const CHAR *k019 = "P";
+const CHAR *k01A = "[{";
+const CHAR *k01B = "]}";
+const CHAR *k01C = "Enter";
+const CHAR *k01D = "L_Ctrl";
+const CHAR *k01E = "A";
+const CHAR *k01F = "S";
+const CHAR *k020 = "D";
+const CHAR *k021 = "F";
+const CHAR *k022 = "G";
+const CHAR *k023 = "H";
+const CHAR *k024 = "J";
+const CHAR *k025 = "K";
+const CHAR *k026 = "L";
+const CHAR *k027 = ";:";
+const CHAR *k028 = "\'\""; // '"
+const CHAR *k029 = "`~";
+const CHAR *k02A = "L_Shift";
+const CHAR *k02B = "\\|";
+const CHAR *k02C = "Z";
+const CHAR *k02D = "X";
+const CHAR *k02E = "C";
+const CHAR *k02F = "V";
+const CHAR *k030 = "B";
+const CHAR *k031 = "N";
+const CHAR *k032 = "M";
+const CHAR *k033 = ",<";
+const CHAR *k034 = ".>";
+const CHAR *k035 = "/?";
+const CHAR *k036 = "R_Shift";
+const CHAR *k037 = "Keypad_*"; // 37 (Keypad - *) or(*/ PrtScn) on a 83 / 84 - key keyboard
+const CHAR *k038 = "L_Alt";
+const CHAR *k039 = "Space";
+const CHAR *k03A = "Caps_Lock";
+const CHAR *k03B = "F1";
+const CHAR *k03C = "F2";
+const CHAR *k03D = "F3";
+const CHAR *k03E = "F4";
+const CHAR *k03F = "F5";
+const CHAR *k040 = "F6";
+const CHAR *k041 = "F7";
+const CHAR *k042 = "F8";
+const CHAR *k043 = "F9";
+const CHAR *k044 = "F10";
+const CHAR *k045 = "Pause";
+const CHAR *k046 = "Scroll_Lock";
+const CHAR *k047 = "Keypad_7_Home";
+const CHAR *k048 = "Keypad_8_Up";
+const CHAR *k049 = "Keypad_9_PageUp";
+const CHAR *k04A = "Keypad_-";
+const CHAR *k04B = "Keypad_4_Left";
+const CHAR *k04C = "Keypad_5";
+const CHAR *k04D = "Keypad_6_Right";
+const CHAR *k04E = "Keypad_+";
+const CHAR *k04F = "Keypad_1_End";
+const CHAR *k050 = "Keypad_2_Down";
+const CHAR *k051 = "Keypad_3_PageDown";
+const CHAR *k052 = "Keypad_0_Insert";
+const CHAR *k053 = "Keypad_._Delete";
+const CHAR *k054 = "Alt_SysRq"; // Alt + PrtScr
+
+const CHAR *k057 = "F11";
+const CHAR *k058 = "F12";
+
+const CHAR *k105 = "Messenger";
+
+const CHAR *k107 = "MSO_Redo";
+const CHAR *k108 = "MSO_Undo";
+const CHAR *k10A = "HP_Lock";
+const CHAR *k10E = "HP_DVD";
+const CHAR *k110 = "Media_PrevTrack";
+const CHAR *k116 = "LogOff";
+const CHAR *k119 = "Media_NextTrack";
+const CHAR *k11C = "Keypad_Enter";
+const CHAR *k11D = "R_Ctrl";
+const CHAR *k120 = "Volume_Mute";
+const CHAR *k121 = "Calculator";
+const CHAR *k122 = "Media_Play/Pause";
+const CHAR *k123 = "MSO_Spell";
+const CHAR *k124 = "Media_Stop";
+const CHAR *k12A = "L_Shift_fake";
+const CHAR *k12E = "Volume_Down";
+const CHAR *k130 = "Volume_Up";
+const CHAR *k131 = "HP_Help";
+const CHAR *k132 = "Browser_Start";
+const CHAR *k135 = "Keypad_/";
+const CHAR *k136 = "R_Shift_fake";
+const CHAR *k137 = "PrintScreen"; // ? ? ? no - ext ?
+const CHAR *k138 = "R_Alt";
+
+
+const CHAR *k13B = "MSO_Help";
+const CHAR *k13C = "MyMusic";
+const CHAR *k13E = "MSO_New";
+const CHAR *k13F = "MSO_Open";
+const CHAR *k140 = "MSO_Close";
+const CHAR *k141 = "MSO_Reply";
+const CHAR *k142 = "MSO_Fwd";
+const CHAR *k143 = "MSO_Send";
+
+const CHAR *k145 = "Num_Lock";
+const CHAR *k146 = "Ctrl_Break"; // Ctrl + Pause
+const CHAR *k147 = "Home"; // grey
+const CHAR *k148 = "Up"; // grey
+const CHAR *k149 = "PageUp"; // grey
+const CHAR *k14B = "Left"; // grey
+const CHAR *k14C = "MyDocuments";
+const CHAR *k14D = "Right"; // grey
+const CHAR *k14F = "End"; // grey
+const CHAR *k150 = "Down"; // grey
+const CHAR *k151 = "PageDown"; // grey
+const CHAR *k152 = "Insert"; // grey
+const CHAR *k153 = "Delete"; // grey
+
+const CHAR *k157 = "MSO_Save";
+const CHAR *k158 = "MSO_Print,HP_TouchPadOff";
+const CHAR *k159 = "HP_TouchPadOn";
+
+const CHAR *k15B = "L_Win";
+const CHAR *k15C = "R_Win";
+const CHAR *k15D = "Context_Menu";
+const CHAR *k15E = "Power";
+const CHAR *k15F = "Sleep";
+const CHAR *k163 = "Wake";
+const CHAR *k164 = "MyPictures";
+const CHAR *k16C = "Mail";
+const CHAR *k16D = "Media_Select";
+
+const CHAR *k165 = "Browser_Search";
+const CHAR *k166 = "Browser_Favorites";
+const CHAR *k167 = "Browser_Refresh";
+const CHAR *k168 = "Browser_Stop";
+const CHAR *k169 = "Browser_Forward";
+const CHAR *k16A = "Browser_Back";
+
+
+// êíîïêè ðåãèñòðîâ (Shift,Ctrl,Alt,Win)
+const CHAR *t_CL = k01D;
+const CHAR *t_CR = k11D;
+const CHAR *t_CC = k01D + 2;
+const CHAR *t_AL = k038;
+const CHAR *t_AR = k138;
+const CHAR *t_AA = k038 + 2;
+const CHAR *t_WL = k15B;
+const CHAR *t_WR = k15C;
+const CHAR *t_WW = k038 + 2;
+const CHAR *t_SL = k02A;
+const CHAR *t_SR = k036;
+const CHAR *t_SS = k02A + 2;
+
+
+
+const CHAR *key_tab[0x200]
+{
+ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k00A, k00B, k00C, k00D, k00E, k00F, // 000 - ïðîñòûå KbdLLHookStruct.scanCode
+ k010, k011, k012, k013, k014, k015, k016, k017, k018, k019, k01A, k01B, k01C, k01D, k01E, k01F, // 010
+ k020, k021, k022, k023, k024, k025, k026, k027, k028, k029, k02A, k02B, k02C, k02D, k02E, k02F, // 020
+ k030, k031, k032, k033, k034, k035, k036, k037, k038, k039, k03A, k03B, k03C, k03D, k03E, k03F, // 030
+ k040, k041, k042, k043, k044, k045, k046, k047, k048, k049, k04A, k04B, k04C, k04D, k04E, k04F, // 040
+ k050, k051, k052, k053, k054, k000, k000, k057, k058, k000, k000, k000, k000, k000, k000, k000, // 050
+ k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, // 060
+ k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, // 070
+ k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, // 080
+ k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, // 090
+ k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, // 0A0
+ k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, // 0B0
+ k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, // 0C0
+ k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, // 0D0
+ k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, // 0E0
+ k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, // 0F0
+ // 0 1 2 3 4 5 6 7 8 9 A B C D E F
+ k000, k000, k000, k000, k000, k105, k000, k107, k108, k000, k10A, k000, k000, k000, k10E, k000, // 100 - LLKHF_EXTENDED KbdLLHookStruct.scanCode
+ k110, k000, k000, k000, k000, k000, k116, k000, k000, k119, k000, k000, k11C, k11D, k000, k000, // 110
+ k120, k121, k122, k123, k124, k000, k000, k000, k000, k000, k12A, k000, k000, k000, k12E, k000, // 120
+ k130, k131, k132, k000, k000, k135, k136, k137, k138, k000, k000, k13B, k13C, k000, k13E, k13F, // 130
+ k140, k141, k142, k143, k000, k145, k146, k147, k148, k149, k000, k14B, k14C, k14D, k000, k14F, // 140
+ k150, k151, k152, k153, k000, k000, k000, k157, k158, k159, k000, k15B, k15C, k15D, k15E, k15F, // 150
+ k000, k000, k000, k163, k164, k165, k166, k167, k168, k169, k16A, k000, k16C, k16D, k000, k000, // 160
+ k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, // 170
+ k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, // 180
+ k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, // 190
+ k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, // 1A0
+ k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, // 1B0
+ k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, // 1C0
+ k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, // 1D0
+ k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, // 1E0
+ k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, k000, // 1F0
+ // 0 1 2 3 4 5 6 7 8 9 A B C D E F
+};
diff --git a/plugins/HwHotKeys/src/HwHotKeys_Util.cpp b/plugins/HwHotKeys/src/HwHotKeys_Util.cpp
new file mode 100644
index 0000000000..cc22aeae7c
--- /dev/null
+++ b/plugins/HwHotKeys/src/HwHotKeys_Util.cpp
@@ -0,0 +1,139 @@
+/* ============================================================================
+Hardware HotKeys plugin for Miranda NG.
+Copyright © Eugene f2065, http://f2065.narod.ru, f2065 mail.ru, ICQ 35078112
+
+This program is free software; you can redistribute it and / or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 - 1307, USA.
+============================================================================ */
+
+#include "HwHotKeys.h"
+
+
+
+// ñðàâíèâàåò òåêóùèé íàæàòûé ñêàíêîä ñ óêàçàííûì
+BOOL HwHotKeys_CompareCurrentScancode(DWORD scancode)
+{
+ if (key_code == scancode) // key_code - òåêóùèé íàæàòûé íà êëàâèàòóðå ñêàíêîä.
+ {
+ return true; // ñêàíêîä íàïðÿìóþ ñîâïàë - TRUE.
+ }
+ if (!(scancode & 0x00F00000)) // ïðîâåðÿåì íåò ëè â ñêàíêîäå çàïðîñà íà ëþáîé èç ëåâîãî/ïðàâîãî ðåãèñòðà.
+ {
+ return false;
+ }
+ DWORD tmp1, tmp2; // áèòîâûå ìàñêè: 0xF0000000 - ëåâûå êíîïêè Sft/Ctr/Alt/Win, 0x0F000000 - ïðàâûå êíîïêè, 0x00F00000 - ëþáûå êíîïêè Sft/Ctr/Alt/Win
+ tmp1 = key_code >> 8; // ñäâèãàåì áèòû ëåâûõ è ïðàâûõ êíîïîê.
+ tmp2 = key_code >> 4;
+ tmp1 |= tmp2;
+ tmp1 &= 0x00F00000;
+ tmp2 = (key_code | tmp1) & 0x00FFFFFF;
+ if (tmp2 == scancode)
+ {
+ return true;
+ }
+ return false;
+}
+
+
+
+// ïå÷àòàåò â áóôåð key_name_buffer òåêñòîâîå îïèñàíèå íàæàòîé êîìáèíàöèè êíîïîê
+// Êîäèðîâêà ANSI (äëÿ ýêîíîìèè ìåñòà, âñ¸ ðàâíî íàçâàíèÿ êëàâèø àíãëèéñêèå)
+VOID HwHotKeys_PrintFullKeyname(DWORD scancode)
+{
+ key_name_buffer[0] = 0;
+ if (!scancode) // åñëè íóëåâîé ñêàíêîä - òî ïóñòóþ ñòðîêó äåëàåì.
+ {
+ return;
+ }
+
+ if (scancode & key_flag_sl) // L_Shift
+ {
+ StringCbCatA(key_name_buffer, sizeof(key_name_buffer), t_SL);
+ StringCbCatA(key_name_buffer, sizeof(key_name_buffer), " + ");
+ }
+ if (scancode & key_flag_sr) // R_Shift
+ {
+ StringCbCatA(key_name_buffer, sizeof(key_name_buffer), t_SR);
+ StringCbCatA(key_name_buffer, sizeof(key_name_buffer), " + ");
+ }
+ if (scancode & key_flag_ss) // Shift
+ {
+ StringCbCatA(key_name_buffer, sizeof(key_name_buffer), t_SS);
+ StringCbCatA(key_name_buffer, sizeof(key_name_buffer), " + ");
+ }
+
+ if (scancode & key_flag_cl) // L_Ctrl
+ {
+ StringCbCatA(key_name_buffer, sizeof(key_name_buffer), t_CL);
+ StringCbCatA(key_name_buffer, sizeof(key_name_buffer), " + ");
+ }
+ if (scancode & key_flag_cr) // R_Ctrl
+ {
+ StringCbCatA(key_name_buffer, sizeof(key_name_buffer), t_CR);
+ StringCbCatA(key_name_buffer, sizeof(key_name_buffer), " + ");
+ }
+ if (scancode & key_flag_cc) // Ctrl
+ {
+ StringCbCatA(key_name_buffer, sizeof(key_name_buffer), t_CC);
+ StringCbCatA(key_name_buffer, sizeof(key_name_buffer), " + ");
+ }
+
+ if (scancode & key_flag_al) // L_Alt
+ {
+ StringCbCatA(key_name_buffer, sizeof(key_name_buffer), t_AL);
+ StringCbCatA(key_name_buffer, sizeof(key_name_buffer), " + ");
+ }
+ if (scancode & key_flag_ar) // R_Alt
+ {
+ StringCbCatA(key_name_buffer, sizeof(key_name_buffer), t_AR);
+ StringCbCatA(key_name_buffer, sizeof(key_name_buffer), " + ");
+ }
+ if (scancode & key_flag_aa) // Alt
+ {
+ StringCbCatA(key_name_buffer, sizeof(key_name_buffer), t_AA);
+ StringCbCatA(key_name_buffer, sizeof(key_name_buffer), " + ");
+ }
+
+ if (scancode & key_flag_wl) // L_Win
+ {
+ StringCbCatA(key_name_buffer, sizeof(key_name_buffer), t_WL);
+ StringCbCatA(key_name_buffer, sizeof(key_name_buffer), " + ");
+ }
+ if (scancode & key_flag_wr) // R_Win
+ {
+ StringCbCatA(key_name_buffer, sizeof(key_name_buffer), t_WR);
+ StringCbCatA(key_name_buffer, sizeof(key_name_buffer), " + ");
+ }
+ if (scancode & key_flag_ww) // Win
+ {
+ StringCbCatA(key_name_buffer, sizeof(key_name_buffer), t_WW);
+ StringCbCatA(key_name_buffer, sizeof(key_name_buffer), " + ");
+ }
+
+ if ((scancode & 0x1FF) < sizeof(key_tab)) // çàùèòà îò îøèáî÷íûõ äàííûõ - ÷òîáû íå âûéòè èç òàáëèöû èì¸í.
+ {
+ StringCbCatA(key_name_buffer, sizeof(key_name_buffer), key_tab[(scancode & 0x1FF)]);
+ }
+ else
+ {
+ StringCbCatA(key_name_buffer, sizeof(key_name_buffer), "out of range");
+ }
+
+ INT_PTR tmp1 = mir_strlen(key_name_buffer); // äîïå÷àòûâàåì â êîíåöå ñòðîêè ñêàíêîä - äëÿ óäîáñòâà ðàáîòû ñ ïîêà åù¸ íå èçâåñòíûìè (áåçèìÿííûìè) êíîïêàìè
+ StringCbPrintfA(key_name_buffer + tmp1, sizeof(key_name_buffer) - tmp1, " (%03X)", (scancode & 0x1FF));
+
+ return;
+}
+
+
diff --git a/plugins/HwHotKeys/src/HwHotKeys_resource.h b/plugins/HwHotKeys/src/HwHotKeys_resource.h
new file mode 100644
index 0000000000..c96893bfcf
--- /dev/null
+++ b/plugins/HwHotKeys/src/HwHotKeys_resource.h
Binary files differ
diff --git a/plugins/HwHotKeys/src/HwHotKeys_version.h b/plugins/HwHotKeys/src/HwHotKeys_version.h
new file mode 100644
index 0000000000..e4d52b0082
--- /dev/null
+++ b/plugins/HwHotKeys/src/HwHotKeys_version.h
@@ -0,0 +1,41 @@
+/* ============================================================================
+Hardware HotKeys plugin for Miranda NG.
+Copyright © Eugene f2065, http://f2065.narod.ru, f2065 mail.ru, ICQ 35078112
+
+This program is free software; you can redistribute it and / or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 - 1307, USA.
+============================================================================ */
+
+// èñòîðèÿ âåðñèé:
+// 1.0.0.6 - ïåðâàÿ âåðñèÿ Hardware HotKeys äëÿ Miranda NG (áîëåå ðàííèå âåðñèè áûëè äëÿ Miranda IM), èñïðàâëåíèå ñòàðûõ îøèáîê.
+
+
+#define __MAJOR_VERSION 1
+#define __MINOR_VERSION 0
+#define __RELEASE_NUM 0
+#define __BUILD_NUM 6
+
+#include <stdver.h>
+
+#define __PLUGIN_NAME "Hardware HotKeys" // dll-fileinfo "FileVersion" è "ProductName", ìåíþ â íàñòðîéêàõ ìèðàíäû, íàçâàíèå ïëàãèíà â ìèðàíäå. Íåëîêàëèçóåìîå!
+#define __FILENAME "HwHotKeys.dll" // dll-fileinfo "OriginalFilename"
+#define __DESCRIPTION_MIR "Hardware HotKeys plugin for Miranda NG\r\nAllows to assign expanded multimedia keys (only for PS/2-keyboards)." // îïèñàíèå ïëàãèíà â ìèðàíäå (ëîêàëèçóåìîå)
+#define __DESCRIPTION_DLL "Hardware HotKeys plugin for Miranda NG." // îïèñàíèå ïëàãèíà â dll-fileinfo "FileDescription" (òàì ìíîãîñòðî÷íûå ñòðîêè - íå ðàáîòàþò). Íåëîêàëèçóåìîå!
+#define __AUTHOR "Eugene f2065" // îïèñàíèå ïëàãèíà â ìèðàíäå
+#define __AUTHOREMAIL "f2065@mail.ru" // îïèñàíèå ïëàãèíà â ìèðàíäå
+#define __AUTHORWEB "http://f2065.narod.ru/" // îïèñàíèå ïëàãèíà â dll-fileinfo "CompanyName", îïèñàíèå ïëàãèíà â ìèðàíäå
+#define __COPYRIGHT "© 2010-2015 Eugene f2065" // îïèñàíèå ïëàãèíà â dll-fileinfo "LegalCopyright", îïèñàíèå ïëàãèíà â ìèðàíäå
+
+#define __DbModName "HwHotKeys" // èìÿ ðàçäåëà íàñòðîåê ïëàãèíà â ÁÄ ìèðàíäû
+
diff --git a/plugins/HwHotKeys/src/stdafx.cpp b/plugins/HwHotKeys/src/stdafx.cpp
new file mode 100644
index 0000000000..93782795d3
--- /dev/null
+++ b/plugins/HwHotKeys/src/stdafx.cpp
@@ -0,0 +1,18 @@
+/*
+Copyright (C) 2012-15 Miranda NG project (http://miranda-ng.org)
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation version 2
+of the License.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "HwHotKeys.h" \ No newline at end of file