Widget keyboard initial import
authorThomas Pietrzak <thomas.pietrzak@gmail.com>
Wed, 14 Mar 2012 09:04:34 +0000 (09:04 +0000)
committerThomas Pietrzak <thomas.pietrzak@gmail.com>
Wed, 14 Mar 2012 09:04:34 +0000 (09:04 +0000)
git-svn-id: svn+ssh://thomaspietrzak.com/var/svn/rep@60 47cf9a05-e0a8-4ed5-9e9b-101a649bc004

43 files changed:
KeyboardDebug/KeyboardDebug.sln [new file with mode: 0644]
KeyboardDebug/KeyboardDebug.suo [new file with mode: 0644]
KeyboardDebug/KeyboardDebug/KeyboardDebug.vcxproj [new file with mode: 0644]
KeyboardDebug/KeyboardDebug/KeyboardDebug.vcxproj.filters [new file with mode: 0644]
KeyboardDebug/KeyboardDebug/keyboarddebug.cpp [new file with mode: 0644]
KeyboardDebug/KeyboardDebug/keyboarddebug.h [new file with mode: 0644]
KeyboardDebug/KeyboardDebug/keyboarddebug.qrc [new file with mode: 0644]
KeyboardDebug/KeyboardDebug/keyboarddebug.ui [new file with mode: 0644]
KeyboardDebug/KeyboardDebug/main.cpp [new file with mode: 0644]
WidgetKeyboard.sln [new file with mode: 0644]
WidgetKeyboard.suo [new file with mode: 0644]
WidgetKeyboard/WidgetKeyboard.pro [new file with mode: 0644]
WidgetKeyboard/WidgetKeyboard.suo [new file with mode: 0644]
WidgetKeyboard/WidgetKeyboard.vcxproj [new file with mode: 0644]
WidgetKeyboard/WidgetKeyboard.vcxproj.filters [new file with mode: 0644]
WidgetKeyboard/WidgetKeyboard.vcxproj.user [new file with mode: 0644]
WidgetKeyboard/blue.png [new file with mode: 0644]
WidgetKeyboard/common.pri [new file with mode: 0644]
WidgetKeyboard/example/DynaKeyboard.cpp [new file with mode: 0644]
WidgetKeyboard/example/DynaKeyboard.h [new file with mode: 0644]
WidgetKeyboard/example/DynaKeyboardHaptic.cpp [new file with mode: 0644]
WidgetKeyboard/example/DynaKeyboardHaptic.h [new file with mode: 0644]
WidgetKeyboard/example/DynaKeyboardVisual.cpp [new file with mode: 0644]
WidgetKeyboard/example/DynaKeyboardVisual.h [new file with mode: 0644]
WidgetKeyboard/example/Main.cpp [new file with mode: 0644]
WidgetKeyboard/example/MenuBar.cpp [new file with mode: 0644]
WidgetKeyboard/example/Sheet.cpp [new file with mode: 0644]
WidgetKeyboard/example/Sheet.h [new file with mode: 0644]
WidgetKeyboard/example/UseKeyBoardDialog.cpp [new file with mode: 0644]
WidgetKeyboard/example/UseKeyBoardDialog.h [new file with mode: 0644]
WidgetKeyboard/example/UseKeyBoardDialog.ui [new file with mode: 0644]
WidgetKeyboard/example/example.pro [new file with mode: 0644]
WidgetKeyboard/grey.png [new file with mode: 0644]
WidgetKeyboard/ressource.qrc [new file with mode: 0644]
WidgetKeyboard/src/WidgetKeyboard.cpp [new file with mode: 0644]
WidgetKeyboard/src/WidgetKeyboard.h [new file with mode: 0644]
WidgetKeyboard/src/WidgetKeyboard.pri [new file with mode: 0644]
WidgetKeyboard/src/WidgetKeyboard.qrc [new file with mode: 0644]
WidgetKeyboard/src/WidgetKeyboard.ui [new file with mode: 0644]
WidgetKeyboard/src/res/down.JPG [new file with mode: 0644]
WidgetKeyboard/src/res/left.JPG [new file with mode: 0644]
WidgetKeyboard/src/res/right.JPG [new file with mode: 0644]
WidgetKeyboard/src/res/up.JPG [new file with mode: 0644]

diff --git a/KeyboardDebug/KeyboardDebug.sln b/KeyboardDebug/KeyboardDebug.sln
new file mode 100644 (file)
index 0000000..8f43f7d
--- /dev/null
@@ -0,0 +1,20 @@
+\r
+Microsoft Visual Studio Solution File, Format Version 11.00\r
+# Visual Studio 2010\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "KeyboardDebug", "KeyboardDebug\KeyboardDebug.vcxproj", "{CB081BF4-9013-44A0-901D-E9B91F0DF953}"\r
+EndProject\r
+Global\r
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
+               Debug|Win32 = Debug|Win32\r
+               Release|Win32 = Release|Win32\r
+       EndGlobalSection\r
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
+               {CB081BF4-9013-44A0-901D-E9B91F0DF953}.Debug|Win32.ActiveCfg = Debug|Win32\r
+               {CB081BF4-9013-44A0-901D-E9B91F0DF953}.Debug|Win32.Build.0 = Debug|Win32\r
+               {CB081BF4-9013-44A0-901D-E9B91F0DF953}.Release|Win32.ActiveCfg = Release|Win32\r
+               {CB081BF4-9013-44A0-901D-E9B91F0DF953}.Release|Win32.Build.0 = Release|Win32\r
+       EndGlobalSection\r
+       GlobalSection(SolutionProperties) = preSolution\r
+               HideSolutionNode = FALSE\r
+       EndGlobalSection\r
+EndGlobal\r
diff --git a/KeyboardDebug/KeyboardDebug.suo b/KeyboardDebug/KeyboardDebug.suo
new file mode 100644 (file)
index 0000000..def15fb
Binary files /dev/null and b/KeyboardDebug/KeyboardDebug.suo differ
diff --git a/KeyboardDebug/KeyboardDebug/KeyboardDebug.vcxproj b/KeyboardDebug/KeyboardDebug/KeyboardDebug.vcxproj
new file mode 100644 (file)
index 0000000..65ac718
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{CB081BF4-9013-44A0-901D-E9B91F0DF953}</ProjectGuid>\r
+    <Keyword>Qt4VSv1.0</Keyword>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(ConfigurationName)</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(ConfigurationName)</OutDir>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <ClCompile>\r
+      <PreprocessorDefinitions>UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_CORE_LIB;QT_GUI_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <AdditionalIncludeDirectories>.\GeneratedFiles;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\qtmain;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;.\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <Optimization>Disabled</Optimization>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>\r
+    </ClCompile>\r
+    <Link>\r
+      <SubSystem>Windows</SubSystem>\r
+      <OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>\r
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <AdditionalDependencies>DynamicKeyboardLibrary.lib;qtmaind.lib;QtCored4.lib;QtGuid4.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <ClCompile>\r
+      <PreprocessorDefinitions>UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_NO_DEBUG;NDEBUG;QT_CORE_LIB;QT_GUI_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <AdditionalIncludeDirectories>.\GeneratedFiles;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\qtmain;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;.\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <DebugInformationFormat>\r
+      </DebugInformationFormat>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>\r
+    </ClCompile>\r
+    <Link>\r
+      <SubSystem>Windows</SubSystem>\r
+      <OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>\r
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>false</GenerateDebugInformation>\r
+      <AdditionalDependencies>DynamicKeyboardLibrary.lib;qtmain.lib;QtCore4.lib;QtGui4.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_keyboarddebug.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\qrc_keyboarddebug.cpp">\r
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+      </PrecompiledHeader>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_keyboarddebug.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="keyboarddebug.cpp" />\r
+    <ClCompile Include="main.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <CustomBuild Include="keyboarddebug.h">\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"   -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB  "-I." "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "keyboarddebug.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"   -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB  "-I." "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "keyboarddebug.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+    </CustomBuild>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <CustomBuild Include="keyboarddebug.ui">\r
+      <FileType>Document</FileType>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Uic%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Uic%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>\r
+    </CustomBuild>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="GeneratedFiles\ui_keyboarddebug.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <CustomBuild Include="keyboarddebug.qrc">\r
+      <FileType>Document</FileType>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(FullPath);%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Rcc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\qrc_%(Filename).cpp;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\rcc.exe" -name "%(Filename)" -no-compress "%(FullPath)" -o .\GeneratedFiles\qrc_%(Filename).cpp</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(FullPath);%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Rcc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\qrc_%(Filename).cpp;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\rcc.exe" -name "%(Filename)" -no-compress "%(FullPath)" -o .\GeneratedFiles\qrc_%(Filename).cpp</Command>\r
+    </CustomBuild>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+  <ProjectExtensions>\r
+    <VisualStudio>\r
+      <UserProperties UicDir=".\GeneratedFiles" MocDir=".\GeneratedFiles\$(ConfigurationName)" MocOptions="" RccDir=".\GeneratedFiles" lupdateOnBuild="0" lupdateOptions="" lreleaseOptions="" QtVersion_x0020_Win32="4.7.3" />\r
+    </VisualStudio>\r
+  </ProjectExtensions>\r
+</Project>
\ No newline at end of file
diff --git a/KeyboardDebug/KeyboardDebug/KeyboardDebug.vcxproj.filters b/KeyboardDebug/KeyboardDebug/KeyboardDebug.vcxproj.filters
new file mode 100644 (file)
index 0000000..5e0432e
--- /dev/null
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup>\r
+    <Filter Include="Source Files">\r
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>\r
+      <Extensions>cpp;cxx;c;def</Extensions>\r
+    </Filter>\r
+    <Filter Include="Header Files">\r
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>\r
+      <Extensions>h</Extensions>\r
+    </Filter>\r
+    <Filter Include="Form Files">\r
+      <UniqueIdentifier>{99349809-55BA-4b9d-BF79-8FDBB0286EB3}</UniqueIdentifier>\r
+      <Extensions>ui</Extensions>\r
+    </Filter>\r
+    <Filter Include="Resource Files">\r
+      <UniqueIdentifier>{D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E}</UniqueIdentifier>\r
+      <Extensions>qrc;*</Extensions>\r
+      <ParseFiles>false</ParseFiles>\r
+    </Filter>\r
+    <Filter Include="Generated Files">\r
+      <UniqueIdentifier>{71ED8ED8-ACB9-4CE9-BBE1-E00B30144E11}</UniqueIdentifier>\r
+      <Extensions>moc;h;cpp</Extensions>\r
+      <SourceControlFiles>False</SourceControlFiles>\r
+    </Filter>\r
+    <Filter Include="Generated Files\Debug">\r
+      <UniqueIdentifier>{447a3b5f-957b-4b68-a79d-a07b726434e0}</UniqueIdentifier>\r
+      <Extensions>cpp;moc</Extensions>\r
+      <SourceControlFiles>False</SourceControlFiles>\r
+    </Filter>\r
+    <Filter Include="Generated Files\Release">\r
+      <UniqueIdentifier>{e5b2149f-c711-4349-a902-c1554c9309a8}</UniqueIdentifier>\r
+      <Extensions>cpp;moc</Extensions>\r
+      <SourceControlFiles>False</SourceControlFiles>\r
+    </Filter>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="main.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="keyboarddebug.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_keyboarddebug.cpp">\r
+      <Filter>Generated Files\Debug</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_keyboarddebug.cpp">\r
+      <Filter>Generated Files\Release</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\qrc_keyboarddebug.cpp">\r
+      <Filter>Generated Files</Filter>\r
+    </ClCompile>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <CustomBuild Include="keyboarddebug.h">\r
+      <Filter>Header Files</Filter>\r
+    </CustomBuild>\r
+    <CustomBuild Include="keyboarddebug.ui">\r
+      <Filter>Form Files</Filter>\r
+    </CustomBuild>\r
+    <CustomBuild Include="keyboarddebug.qrc">\r
+      <Filter>Resource Files</Filter>\r
+    </CustomBuild>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="GeneratedFiles\ui_keyboarddebug.h">\r
+      <Filter>Generated Files</Filter>\r
+    </ClInclude>\r
+  </ItemGroup>\r
+</Project>
\ No newline at end of file
diff --git a/KeyboardDebug/KeyboardDebug/keyboarddebug.cpp b/KeyboardDebug/KeyboardDebug/keyboarddebug.cpp
new file mode 100644 (file)
index 0000000..274757b
--- /dev/null
@@ -0,0 +1,110 @@
+#include "keyboarddebug.h"\r
+\r
+#include <QDebug>\r
+\r
+KeyboardDebug::KeyboardDebug(QWidget *parent, Qt::WFlags flags)\r
+       : QMainWindow(parent, flags)\r
+{\r
+       ui.setupUi(this);\r
+       try\r
+       {\r
+               _keyboardController = new DynamicKeyboardController("COM5", 115200);\r
+               getState();\r
+       }\r
+       catch (...)\r
+       {\r
+               qDebug() << "Could not locate the Arduino board" << endl;\r
+               _keyboardController = NULL;\r
+       }\r
+\r
+\r
+       QObject::connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(setConfiguration()));\r
+       QObject::connect(ui.getState, SIGNAL(clicked()), this, SLOT(getState()));\r
+\r
+       QObject::connect(ui.minDutyCycle, SIGNAL(valueChanged(int)), this, SLOT(setMinDutyCycle(int)));\r
+       QObject::connect(ui.maxDutyCycle, SIGNAL(valueChanged(int)), this, SLOT(setMaxDutyCycle(int)));\r
+       QObject::connect(ui.boostDuration, SIGNAL(valueChanged(int)), this, SLOT(setBoostDuration(int)));\r
+\r
+       QObject::connect(ui.s1, SIGNAL(stateChanged(int)), this, SLOT(setConfiguration(int)));\r
+       QObject::connect(ui.s2, SIGNAL(stateChanged(int)), this, SLOT(setConfiguration(int)));\r
+       QObject::connect(ui.s3, SIGNAL(stateChanged(int)), this, SLOT(setConfiguration(int)));\r
+       QObject::connect(ui.s4, SIGNAL(stateChanged(int)), this, SLOT(setConfiguration(int)));\r
+       QObject::connect(ui.s5, SIGNAL(stateChanged(int)), this, SLOT(setConfiguration(int)));\r
+       QObject::connect(ui.s6, SIGNAL(stateChanged(int)), this, SLOT(setConfiguration(int)));\r
+       QObject::connect(ui.s7, SIGNAL(stateChanged(int)), this, SLOT(setConfiguration(int)));\r
+       QObject::connect(ui.s8, SIGNAL(stateChanged(int)), this, SLOT(setConfiguration(int)));\r
+}\r
+\r
+KeyboardDebug::~KeyboardDebug()\r
+{\r
+\r
+}\r
+\r
+inline bool isChecked(QCheckBox *c)\r
+{\r
+       bool a = c->checkState() > 0;\r
+       return c->checkState() > 0;\r
+}\r
\r
+void KeyboardDebug::setConfiguration()\r
+{\r
+       if (!_keyboardController)\r
+               return;\r
+\r
+       UINT16 config = \r
+               UINT16(isChecked(ui.s1)) << 15\r
+               | UINT16(isChecked(ui.s2)) << 14\r
+               | UINT16(isChecked(ui.s3)) << 13\r
+               | UINT16(isChecked(ui.s4)) << 12\r
+               | UINT16(isChecked(ui.s5)) << 11\r
+               | UINT16(isChecked(ui.s6)) << 10\r
+               | UINT16(isChecked(ui.s7)) << 9\r
+               | UINT16(isChecked(ui.s8)) << 8;\r
+\r
+       qDebug() << hex << config << endl;\r
+       _keyboardController->setConfiguration(config);\r
+}\r
+\r
+void KeyboardDebug::setConfiguration(int)\r
+{\r
+       setConfiguration();\r
+}\r
+\r
+void KeyboardDebug::setMinDutyCycle(int a)\r
+{\r
+       if (_keyboardController)\r
+               _keyboardController->setMinimumDutyCycle(UINT8(a));\r
+}\r
+\r
+void KeyboardDebug::setMaxDutyCycle(int a)\r
+{\r
+       if (_keyboardController)\r
+               _keyboardController->setMaximumDutyCycle(UINT8(a));\r
+}\r
+\r
+void KeyboardDebug::setBoostDuration(int a)\r
+{\r
+       if (_keyboardController)\r
+               _keyboardController->setBoostDuration(UINT16(a));\r
+}\r
+\r
+void KeyboardDebug::getState()\r
+{\r
+       UINT16 solenoids, duration;\r
+       UINT8 min, max;\r
+       if (_keyboardController)\r
+               _keyboardController->getState(solenoids, min, max, duration);\r
+\r
+       ui.s1->setChecked(solenoids & 0x8000);\r
+       ui.s2->setChecked(solenoids & 0x4000);\r
+       ui.s3->setChecked(solenoids & 0x2000);\r
+       ui.s4->setChecked(solenoids & 0x1000);\r
+       ui.s5->setChecked(solenoids & 0x0800);\r
+       ui.s6->setChecked(solenoids & 0x0400);\r
+       ui.s7->setChecked(solenoids & 0x0200);\r
+       ui.s8->setChecked(solenoids & 0x0100);\r
+\r
+       ui.minDutyCycle->setValue(min);\r
+       ui.maxDutyCycle->setValue(max);\r
+       ui.boostDuration->setValue(duration);\r
+}\r
diff --git a/KeyboardDebug/KeyboardDebug/keyboarddebug.h b/KeyboardDebug/KeyboardDebug/keyboarddebug.h
new file mode 100644 (file)
index 0000000..59869e4
--- /dev/null
@@ -0,0 +1,29 @@
+#ifndef KEYBOARDDEBUG_H\r
+#define KEYBOARDDEBUG_H\r
+\r
+#include <QtGui/QMainWindow>\r
+#include "ui_keyboarddebug.h"\r
+\r
+#include <DynamicKeyboardLibrary\DynamicKeyboardController.h>\r
+\r
+class KeyboardDebug : public QMainWindow\r
+{\r
+       Q_OBJECT\r
+\r
+public:\r
+       KeyboardDebug(QWidget *parent = 0, Qt::WFlags flags = 0);\r
+       ~KeyboardDebug();\r
+\r
+       public slots:\r
+               void setConfiguration();\r
+               void setConfiguration(int);\r
+               void setMinDutyCycle(int);\r
+               void setMaxDutyCycle(int);\r
+               void setBoostDuration(int);\r
+               void getState();\r
+private:\r
+       Ui::KeyboardDebugClass ui;\r
+       DynamicKeyboardController *_keyboardController;\r
+};\r
+\r
+#endif // KEYBOARDDEBUG_H\r
diff --git a/KeyboardDebug/KeyboardDebug/keyboarddebug.qrc b/KeyboardDebug/KeyboardDebug/keyboarddebug.qrc
new file mode 100644 (file)
index 0000000..cd1413f
--- /dev/null
@@ -0,0 +1,4 @@
+<RCC>\r
+    <qresource prefix="KeyboardDebug">\r
+    </qresource>\r
+</RCC>\r
diff --git a/KeyboardDebug/KeyboardDebug/keyboarddebug.ui b/KeyboardDebug/KeyboardDebug/keyboarddebug.ui
new file mode 100644 (file)
index 0000000..678cec6
--- /dev/null
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<ui version="4.0">\r
+ <class>KeyboardDebugClass</class>\r
+ <widget class="QMainWindow" name="KeyboardDebugClass">\r
+  <property name="geometry">\r
+   <rect>\r
+    <x>0</x>\r
+    <y>0</y>\r
+    <width>576</width>\r
+    <height>391</height>\r
+   </rect>\r
+  </property>\r
+  <property name="windowTitle">\r
+   <string>KeyboardDebug</string>\r
+  </property>\r
+  <widget class="QWidget" name="centralWidget">\r
+   <widget class="QWidget" name="gridLayoutWidget">\r
+    <property name="geometry">\r
+     <rect>\r
+      <x>110</x>\r
+      <y>50</y>\r
+      <width>421</width>\r
+      <height>311</height>\r
+     </rect>\r
+    </property>\r
+    <layout class="QGridLayout" name="gridLayout">\r
+     <item row="0" column="0">\r
+      <widget class="QCheckBox" name="s1">\r
+       <property name="text">\r
+        <string>Solenoid 1</string>\r
+       </property>\r
+      </widget>\r
+     </item>\r
+     <item row="1" column="0">\r
+      <widget class="QCheckBox" name="s2">\r
+       <property name="text">\r
+        <string>Solenoid 2</string>\r
+       </property>\r
+      </widget>\r
+     </item>\r
+     <item row="2" column="0">\r
+      <widget class="QCheckBox" name="s3">\r
+       <property name="text">\r
+        <string>Solenoid 3</string>\r
+       </property>\r
+      </widget>\r
+     </item>\r
+     <item row="3" column="0">\r
+      <widget class="QCheckBox" name="s4">\r
+       <property name="text">\r
+        <string>Solenoid 4</string>\r
+       </property>\r
+      </widget>\r
+     </item>\r
+     <item row="4" column="0">\r
+      <widget class="QCheckBox" name="s5">\r
+       <property name="text">\r
+        <string>Solenoid 5</string>\r
+       </property>\r
+      </widget>\r
+     </item>\r
+     <item row="5" column="0">\r
+      <widget class="QCheckBox" name="s6">\r
+       <property name="text">\r
+        <string>Solenoid 6</string>\r
+       </property>\r
+      </widget>\r
+     </item>\r
+     <item row="6" column="0">\r
+      <widget class="QCheckBox" name="s7">\r
+       <property name="text">\r
+        <string>Solenoid 7</string>\r
+       </property>\r
+      </widget>\r
+     </item>\r
+     <item row="7" column="0">\r
+      <widget class="QCheckBox" name="s8">\r
+       <property name="text">\r
+        <string>Solenoid 8</string>\r
+       </property>\r
+      </widget>\r
+     </item>\r
+     <item row="8" column="0">\r
+      <widget class="QPushButton" name="pushButton">\r
+       <property name="text">\r
+        <string>Test</string>\r
+       </property>\r
+      </widget>\r
+     </item>\r
+     <item row="1" column="1">\r
+      <widget class="QSpinBox" name="minDutyCycle">\r
+       <property name="maximum">\r
+        <number>255</number>\r
+       </property>\r
+       <property name="value">\r
+        <number>80</number>\r
+       </property>\r
+      </widget>\r
+     </item>\r
+     <item row="3" column="1">\r
+      <widget class="QSpinBox" name="maxDutyCycle">\r
+       <property name="maximum">\r
+        <number>255</number>\r
+       </property>\r
+       <property name="value">\r
+        <number>255</number>\r
+       </property>\r
+      </widget>\r
+     </item>\r
+     <item row="5" column="1">\r
+      <widget class="QSpinBox" name="boostDuration">\r
+       <property name="maximum">\r
+        <number>10000</number>\r
+       </property>\r
+       <property name="singleStep">\r
+        <number>10</number>\r
+       </property>\r
+       <property name="value">\r
+        <number>200</number>\r
+       </property>\r
+      </widget>\r
+     </item>\r
+     <item row="0" column="1">\r
+      <widget class="QLabel" name="label">\r
+       <property name="text">\r
+        <string>Min duty cycle</string>\r
+       </property>\r
+      </widget>\r
+     </item>\r
+     <item row="2" column="1">\r
+      <widget class="QLabel" name="label2">\r
+       <property name="text">\r
+        <string>Max duty cycle</string>\r
+       </property>\r
+      </widget>\r
+     </item>\r
+     <item row="4" column="1">\r
+      <widget class="QLabel" name="label_3">\r
+       <property name="text">\r
+        <string>Boost Duration</string>\r
+       </property>\r
+      </widget>\r
+     </item>\r
+     <item row="8" column="1">\r
+      <widget class="QPushButton" name="getState">\r
+       <property name="text">\r
+        <string>Get state</string>\r
+       </property>\r
+      </widget>\r
+     </item>\r
+    </layout>\r
+   </widget>\r
+  </widget>\r
+ </widget>\r
+ <layoutdefault spacing="6" margin="11"/>\r
+ <resources>\r
+  <include location="keyboarddebug.qrc"/>\r
+ </resources>\r
+ <connections/>\r
+</ui>\r
diff --git a/KeyboardDebug/KeyboardDebug/main.cpp b/KeyboardDebug/KeyboardDebug/main.cpp
new file mode 100644 (file)
index 0000000..4749db5
--- /dev/null
@@ -0,0 +1,10 @@
+#include "keyboarddebug.h"\r
+#include <QtGui/QApplication>\r
+\r
+int main(int argc, char *argv[])\r
+{\r
+       QApplication a(argc, argv);\r
+       KeyboardDebug w;\r
+       w.show();\r
+       return a.exec();\r
+}\r
diff --git a/WidgetKeyboard.sln b/WidgetKeyboard.sln
new file mode 100644 (file)
index 0000000..86e6073
--- /dev/null
@@ -0,0 +1,20 @@
+\r
+Microsoft Visual Studio Solution File, Format Version 11.00\r
+# Visual Studio 2010\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WidgetKeyboard", "WidgetKeyboard\WidgetKeyboard.vcxproj", "{2B394A83-C563-419A-BECF-A6EE41EB5BE5}"\r
+EndProject\r
+Global\r
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
+               Debug|Win32 = Debug|Win32\r
+               Release|Win32 = Release|Win32\r
+       EndGlobalSection\r
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
+               {2B394A83-C563-419A-BECF-A6EE41EB5BE5}.Debug|Win32.ActiveCfg = Debug|Win32\r
+               {2B394A83-C563-419A-BECF-A6EE41EB5BE5}.Debug|Win32.Build.0 = Debug|Win32\r
+               {2B394A83-C563-419A-BECF-A6EE41EB5BE5}.Release|Win32.ActiveCfg = Release|Win32\r
+               {2B394A83-C563-419A-BECF-A6EE41EB5BE5}.Release|Win32.Build.0 = Release|Win32\r
+       EndGlobalSection\r
+       GlobalSection(SolutionProperties) = preSolution\r
+               HideSolutionNode = FALSE\r
+       EndGlobalSection\r
+EndGlobal\r
diff --git a/WidgetKeyboard.suo b/WidgetKeyboard.suo
new file mode 100644 (file)
index 0000000..85b165c
Binary files /dev/null and b/WidgetKeyboard.suo differ
diff --git a/WidgetKeyboard/WidgetKeyboard.pro b/WidgetKeyboard/WidgetKeyboard.pro
new file mode 100644 (file)
index 0000000..09702bd
--- /dev/null
@@ -0,0 +1,5 @@
+TEMPLATE=subdirs\r
+CONFIG += ordered\r
+include(common.pri)\r
+WidgetKeyboard-uselib:SUBDIRS=buildlib\r
+SUBDIRS+=example\r
diff --git a/WidgetKeyboard/WidgetKeyboard.suo b/WidgetKeyboard/WidgetKeyboard.suo
new file mode 100644 (file)
index 0000000..1b727b9
Binary files /dev/null and b/WidgetKeyboard/WidgetKeyboard.suo differ
diff --git a/WidgetKeyboard/WidgetKeyboard.vcxproj b/WidgetKeyboard/WidgetKeyboard.vcxproj
new file mode 100644 (file)
index 0000000..c16b8f9
--- /dev/null
@@ -0,0 +1,248 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="example\DynaKeyboard.cpp" />\r
+    <ClCompile Include="example\Main.cpp" />\r
+    <ClCompile Include="example\Sheet.cpp" />\r
+    <ClCompile Include="example\UseKeyBoardDialog.cpp" />\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_DynaKeyboard.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_Sheet.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_UseKeyBoardDialog.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_WidgetKeyboard.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\qrc_ressource.cpp">\r
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+      </PrecompiledHeader>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\qrc_WidgetKeyboard.cpp">\r
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+      </PrecompiledHeader>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_DynaKeyboard.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_Sheet.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_UseKeyBoardDialog.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_WidgetKeyboard.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="src\WidgetKeyboard.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <CustomBuild Include="src\WidgetKeyboard.h">\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"   -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB  "-I." "-I.\example" "-I.\src" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "src\WidgetKeyboard.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"   -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB  "-I." "-I.\example" "-I.\src" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "src\WidgetKeyboard.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+    </CustomBuild>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <CustomBuild Include="src\WidgetKeyboard.qrc">\r
+      <FileType>Document</FileType>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(FullPath);.\src\res\down.JPG;.\src\res\left.JPG;.\src\res\right.JPG;.\src\res\up.JPG;%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Rcc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\qrc_%(Filename).cpp;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\rcc.exe" -name "%(Filename)" -no-compress "%(FullPath)" -o .\GeneratedFiles\qrc_%(Filename).cpp</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(FullPath);.\src\res\down.JPG;.\src\res\left.JPG;.\src\res\right.JPG;.\src\res\up.JPG;%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Rcc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\qrc_%(Filename).cpp;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\rcc.exe" -name "%(Filename)" -no-compress "%(FullPath)" -o .\GeneratedFiles\qrc_%(Filename).cpp</Command>\r
+    </CustomBuild>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <CustomBuild Include="example\UseKeyBoardDialog.ui">\r
+      <FileType>Document</FileType>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Uic%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Uic%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>\r
+    </CustomBuild>\r
+    <None Include="blue.png">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+    </None>\r
+    <None Include="grey.png">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+    </None>\r
+    <CustomBuild Include="ressource.qrc">\r
+      <FileType>Document</FileType>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(FullPath);.\grey.png;.\blue.png;%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Rcc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\qrc_%(Filename).cpp;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\rcc.exe" -name "%(Filename)" -no-compress "%(FullPath)" -o .\GeneratedFiles\qrc_%(Filename).cpp</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(FullPath);.\grey.png;.\blue.png;%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Rcc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\qrc_%(Filename).cpp;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\rcc.exe" -name "%(Filename)" -no-compress "%(FullPath)" -o .\GeneratedFiles\qrc_%(Filename).cpp</Command>\r
+    </CustomBuild>\r
+    <None Include="src\res\down.JPG">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+    </None>\r
+    <None Include="src\res\left.JPG">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+    </None>\r
+    <None Include="src\res\right.JPG">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+    </None>\r
+    <None Include="src\res\up.JPG">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+    </None>\r
+    <CustomBuild Include="src\WidgetKeyboard.ui">\r
+      <FileType>Document</FileType>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Uic%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Uic%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>\r
+    </CustomBuild>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <CustomBuild Include="example\UseKeyBoardDialog.h">\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"   -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB  "-I." "-I.\example" "-I.\src" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "example\UseKeyBoardDialog.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"   -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB  "-I." "-I.\example" "-I.\src" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "example\UseKeyBoardDialog.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+    </CustomBuild>\r
+    <CustomBuild Include="example\Sheet.h">\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"   -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB  "-I." "-I.\example" "-I.\src" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "example\Sheet.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"   -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB  "-I." "-I.\example" "-I.\src" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "example\Sheet.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+    </CustomBuild>\r
+    <CustomBuild Include="example\DynaKeyboard.h">\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"   -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB  "-I." "-I.\example" "-I.\src" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "example\DynaKeyboard.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"   -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB  "-I." "-I.\example" "-I.\src" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "example\DynaKeyboard.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+    </CustomBuild>\r
+    <ClInclude Include="GeneratedFiles\ui_UseKeyBoardDialog.h" />\r
+    <ClInclude Include="GeneratedFiles\ui_WidgetKeyboard.h" />\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{2B394A83-C563-419A-BECF-A6EE41EB5BE5}</ProjectGuid>\r
+    <Keyword>Qt4VSv1.0</Keyword>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(ConfigurationName)</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(ConfigurationName)</OutDir>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <ClCompile>\r
+      <PreprocessorDefinitions>UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_CORE_LIB;QT_GUI_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <AdditionalIncludeDirectories>.\example;.\src;.\GeneratedFiles;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\qtmain;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;.\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <Optimization>Disabled</Optimization>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>\r
+    </ClCompile>\r
+    <Link>\r
+      <SubSystem>Windows</SubSystem>\r
+      <OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>\r
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <AdditionalDependencies>qtmaind.lib;QtCored4.lib;QtGuid4.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <ClCompile>\r
+      <PreprocessorDefinitions>UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_NO_DEBUG;NDEBUG;QT_CORE_LIB;QT_GUI_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <AdditionalIncludeDirectories>.\example;.\src;.\GeneratedFiles;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\qtmain;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;.\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <DebugInformationFormat>\r
+      </DebugInformationFormat>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>\r
+    </ClCompile>\r
+    <Link>\r
+      <SubSystem>Windows</SubSystem>\r
+      <OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>\r
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>false</GenerateDebugInformation>\r
+      <AdditionalDependencies>qtmain.lib;QtCore4.lib;QtGui4.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+  <ProjectExtensions>\r
+    <VisualStudio>\r
+      <UserProperties UicDir=".\GeneratedFiles" MocDir=".\GeneratedFiles\$(ConfigurationName)" MocOptions="" RccDir=".\GeneratedFiles" lupdateOnBuild="0" lupdateOptions="" lreleaseOptions="" QtVersion_x0020_Win32="4.7.3" />\r
+    </VisualStudio>\r
+  </ProjectExtensions>\r
+</Project>
\ No newline at end of file
diff --git a/WidgetKeyboard/WidgetKeyboard.vcxproj.filters b/WidgetKeyboard/WidgetKeyboard.vcxproj.filters
new file mode 100644 (file)
index 0000000..0a66024
--- /dev/null
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup>\r
+    <Filter Include="Source Files">\r
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>\r
+      <Extensions>cpp;cxx;c;def</Extensions>\r
+    </Filter>\r
+    <Filter Include="Header Files">\r
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>\r
+      <Extensions>h</Extensions>\r
+    </Filter>\r
+    <Filter Include="Form Files">\r
+      <UniqueIdentifier>{99349809-55BA-4b9d-BF79-8FDBB0286EB3}</UniqueIdentifier>\r
+      <Extensions>ui</Extensions>\r
+    </Filter>\r
+    <Filter Include="Resource Files">\r
+      <UniqueIdentifier>{D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E}</UniqueIdentifier>\r
+      <Extensions>qrc;*</Extensions>\r
+      <ParseFiles>false</ParseFiles>\r
+    </Filter>\r
+    <Filter Include="Generated Files">\r
+      <UniqueIdentifier>{71ED8ED8-ACB9-4CE9-BBE1-E00B30144E11}</UniqueIdentifier>\r
+      <Extensions>moc;h;cpp</Extensions>\r
+      <SourceControlFiles>False</SourceControlFiles>\r
+    </Filter>\r
+    <Filter Include="Generated Files\Debug">\r
+      <UniqueIdentifier>{f57afe67-495f-4895-b08f-60d56773d279}</UniqueIdentifier>\r
+      <Extensions>cpp;moc</Extensions>\r
+      <SourceControlFiles>False</SourceControlFiles>\r
+    </Filter>\r
+    <Filter Include="Generated Files\Release">\r
+      <UniqueIdentifier>{9a02c7f2-76dc-4701-a6df-c48fdbb338e6}</UniqueIdentifier>\r
+      <Extensions>cpp;moc</Extensions>\r
+      <SourceControlFiles>False</SourceControlFiles>\r
+    </Filter>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="src\WidgetKeyboard.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_WidgetKeyboard.cpp">\r
+      <Filter>Generated Files\Debug</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_WidgetKeyboard.cpp">\r
+      <Filter>Generated Files\Release</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\qrc_WidgetKeyboard.cpp">\r
+      <Filter>Generated Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_DynaKeyboard.cpp">\r
+      <Filter>Generated Files\Debug</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_DynaKeyboard.cpp">\r
+      <Filter>Generated Files\Release</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_Sheet.cpp">\r
+      <Filter>Generated Files\Debug</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_Sheet.cpp">\r
+      <Filter>Generated Files\Release</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_UseKeyBoardDialog.cpp">\r
+      <Filter>Generated Files\Debug</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_UseKeyBoardDialog.cpp">\r
+      <Filter>Generated Files\Release</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="example\DynaKeyboard.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="example\Main.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="example\Sheet.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="example\UseKeyBoardDialog.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\qrc_ressource.cpp">\r
+      <Filter>Generated Files</Filter>\r
+    </ClCompile>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <CustomBuild Include="src\WidgetKeyboard.h">\r
+      <Filter>Header Files</Filter>\r
+    </CustomBuild>\r
+    <CustomBuild Include="src\WidgetKeyboard.qrc">\r
+      <Filter>Resource Files</Filter>\r
+    </CustomBuild>\r
+    <CustomBuild Include="src\WidgetKeyboard.ui">\r
+      <Filter>Form Files</Filter>\r
+    </CustomBuild>\r
+    <CustomBuild Include="example\UseKeyBoardDialog.ui">\r
+      <Filter>Form Files</Filter>\r
+    </CustomBuild>\r
+    <CustomBuild Include="example\DynaKeyboard.h">\r
+      <Filter>Header Files</Filter>\r
+    </CustomBuild>\r
+    <CustomBuild Include="example\Sheet.h">\r
+      <Filter>Header Files</Filter>\r
+    </CustomBuild>\r
+    <CustomBuild Include="example\UseKeyBoardDialog.h">\r
+      <Filter>Header Files</Filter>\r
+    </CustomBuild>\r
+    <CustomBuild Include="ressource.qrc">\r
+      <Filter>Resource Files</Filter>\r
+    </CustomBuild>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="src\res\down.JPG">\r
+      <Filter>Resource Files</Filter>\r
+    </None>\r
+    <None Include="src\res\left.JPG">\r
+      <Filter>Resource Files</Filter>\r
+    </None>\r
+    <None Include="src\res\right.JPG">\r
+      <Filter>Resource Files</Filter>\r
+    </None>\r
+    <None Include="src\res\up.JPG">\r
+      <Filter>Resource Files</Filter>\r
+    </None>\r
+    <None Include="blue.png">\r
+      <Filter>Resource Files</Filter>\r
+    </None>\r
+    <None Include="grey.png">\r
+      <Filter>Resource Files</Filter>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="GeneratedFiles\ui_WidgetKeyboard.h">\r
+      <Filter>Generated Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="GeneratedFiles\ui_UseKeyBoardDialog.h">\r
+      <Filter>Generated Files</Filter>\r
+    </ClInclude>\r
+  </ItemGroup>\r
+</Project>
\ No newline at end of file
diff --git a/WidgetKeyboard/WidgetKeyboard.vcxproj.user b/WidgetKeyboard/WidgetKeyboard.vcxproj.user
new file mode 100644 (file)
index 0000000..ca1c7bf
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <PropertyGroup>\r
+    <QTDIR>C:\Qt\4.7.3</QTDIR>\r
+    <LocalDebuggerEnvironment Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">PATH=$(QTDIR)\bin%3b$(PATH)</LocalDebuggerEnvironment>\r
+    <LocalDebuggerEnvironment Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">PATH=$(QTDIR)\bin%3b$(PATH)</LocalDebuggerEnvironment>\r
+    <LocalDebuggerWorkingDirectory Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)</LocalDebuggerWorkingDirectory>\r
+    <DebuggerFlavor Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WindowsLocalDebugger</DebuggerFlavor>\r
+  </PropertyGroup>\r
+</Project>
\ No newline at end of file
diff --git a/WidgetKeyboard/blue.png b/WidgetKeyboard/blue.png
new file mode 100644 (file)
index 0000000..17abc81
Binary files /dev/null and b/WidgetKeyboard/blue.png differ
diff --git a/WidgetKeyboard/common.pri b/WidgetKeyboard/common.pri
new file mode 100644 (file)
index 0000000..453de63
--- /dev/null
@@ -0,0 +1,9 @@
+infile(config.pri, SOLUTIONS_LIBRARY, yes): CONFIG += WidgetKeyboard-uselib
+TEMPLATE += fakelib
+WIDGETKEYBOARD_LIBNAME = $$qtLibraryTarget(WidgetKeyboard-1.0)
+TEMPLATE -= fakelib
+WIDGETKEYBOARD_LIBDIR = $$PWD/lib
+unix:WidgetKeyboard-uselib:!WidgetKeyboard-buildlib:QMAKE_RPATHDIR += $$WIDGETKEYBOARD_LIBDIR
+
+RESOURCES += \
+    ../ressource.qrc
diff --git a/WidgetKeyboard/example/DynaKeyboard.cpp b/WidgetKeyboard/example/DynaKeyboard.cpp
new file mode 100644 (file)
index 0000000..5dac04d
--- /dev/null
@@ -0,0 +1,73 @@
+#include "DynaKeyboard.h"
+
+DynaKeyboard::DynaKeyboard()
+{
+    visual = new DynaKeyboardVisual(0);
+    haptic = new DynaKeyboardHaptic(this);
+}
+
+
+void DynaKeyboard::raiseKeys(QVector<QString> keys, bool ctrl, bool shift, bool alt){
+
+    QVector<QString> res = filterRaisedKeys(keys, ctrl, shift, alt);
+    haptic->raiseKeys(res);
+    this->keysRaised(res);
+
+
+}
+
+QVector<QString> DynaKeyboard::filterRaisedKeys(QVector<QString> keys, bool Ctrl, bool Shift, bool Alt)
+{
+    QVector<QString> res;
+    return keys;
+
+    if(Ctrl & Shift & Alt) // ctrl shift alt
+    {
+         res = ctrlShiftAlt(keys);
+    }else if (Ctrl & Shift & !Alt) //ctrl shift
+    {
+         res = ctrlShift(keys);
+    }else if (Ctrl & !Shift & Alt) //ctrl alt
+    {
+        res = ctrlAlt(keys);
+    }else if (Ctrl & !Shift & !Alt)
+    {
+        res = ctrl(keys);
+    }else if (!Ctrl &!Shift & Alt)
+    {
+        res = alt(keys);
+    }
+
+    return res;
+}
+
+
+QVector<QString> DynaKeyboard::ctrl(QVector<QString> keys ){
+    QVector<QString> res;
+    return res;
+}
+QVector<QString> DynaKeyboard::ctrlShift(QVector<QString> keys){
+    QVector<QString> res;
+    return res;
+}
+QVector<QString> DynaKeyboard::ctrlShiftAlt(QVector<QString> keys){
+    QVector<QString> res;
+    return res;
+}
+QVector<QString> DynaKeyboard::ctrlAlt(QVector<QString> keys){
+    QVector<QString> res;
+    return res;
+}
+
+QVector<QString> DynaKeyboard::alt(QVector<QString> keys){
+    QVector<QString> res;
+    return res;
+}
+
+
+
+//called from thomas
+void DynaKeyboard::keysRaised(QVector<QString> keys)
+{
+    visual->raiseKeys(keys);
+}
diff --git a/WidgetKeyboard/example/DynaKeyboard.h b/WidgetKeyboard/example/DynaKeyboard.h
new file mode 100644 (file)
index 0000000..b164de2
--- /dev/null
@@ -0,0 +1,33 @@
+#ifndef DYNAKEYBOARD_H
+#define DYNAKEYBOARD_H
+
+#include "DynaKeyboardVisual.h"
+#include "DynaKeyboardHaptic.h"
+
+class DynaKeyboard
+{
+public:
+    DynaKeyboard();
+    void init();
+
+    DynaKeyboardVisual *visual;
+    DynaKeyboardHaptic *haptic;
+
+    void raiseKeys(QVector<QString> keys, bool ctrl, bool shift, bool alt); //called by the application
+
+    //While the application can have several hotkeys
+    //we just want to raise the most frequent ones, or not rising two neighboor keys
+     QVector<QString> filterRaisedKeys(QVector<QString> keys, bool ctrl, bool shift, bool alt);
+
+    void keysRaised(QVector<QString>); //called by thomas with the list of keys
+
+protected:
+    QVector<QString> ctrl(QVector<QString> keys );
+    QVector<QString> ctrlShift(QVector<QString> keys);
+    QVector<QString> ctrlShiftAlt(QVector<QString> keys);
+    QVector<QString> ctrlAlt(QVector<QString> keys);
+    QVector<QString> alt(QVector<QString> keys);
+
+};
+
+#endif // DYNAKEYBOARD_H
diff --git a/WidgetKeyboard/example/DynaKeyboardHaptic.cpp b/WidgetKeyboard/example/DynaKeyboardHaptic.cpp
new file mode 100644 (file)
index 0000000..0041d76
--- /dev/null
@@ -0,0 +1,21 @@
+#include "DynaKeyboardHaptic.h"
+#include "DynaKeyboard.h"
+
+
+DynaKeyboardHaptic::DynaKeyboardHaptic(DynaKeyboard *dyna){
+    dynaKeyboard = dyna;
+}
+
+void DynaKeyboardHaptic::raiseKeys(QVector<QString> keys)
+{
+    //you have more keys than solenoids here.
+}
+
+void DynaKeyboardHaptic::initSolenoidKeyMapping()
+{
+
+}
+
+void DynaKeyboardHaptic::raiseSolenoids(){}
+
+void DynaKeyboardHaptic::lowerSolenoids(){}
diff --git a/WidgetKeyboard/example/DynaKeyboardHaptic.h b/WidgetKeyboard/example/DynaKeyboardHaptic.h
new file mode 100644 (file)
index 0000000..803e931
--- /dev/null
@@ -0,0 +1,22 @@
+#ifndef DYNAKEYBOARDHAPTIC_H
+#define DYNAKEYBOARDHAPTIC_H
+
+#include <QVector>
+#include <QString>
+
+class DynaKeyboard;
+
+class DynaKeyboardHaptic
+{
+public:
+    DynaKeyboardHaptic(DynaKeyboard* dyna);
+    void initSolenoidKeyMapping();
+    void raiseKeys(QVector<QString> keys);
+    void raiseSolenoids();
+    void lowerSolenoids();
+
+    DynaKeyboard *dynaKeyboard;
+
+};
+
+#endif // DYNAKEYBOARDHAPTIC_H
diff --git a/WidgetKeyboard/example/DynaKeyboardVisual.cpp b/WidgetKeyboard/example/DynaKeyboardVisual.cpp
new file mode 100644 (file)
index 0000000..3c20b11
--- /dev/null
@@ -0,0 +1,101 @@
+#include "DynaKeyboardVisual.h"
+#include <QMapIterator>
+#include <QDebug>
+//----------------------
+DynaKeyboardVisual::DynaKeyboardVisual(QObject *parent) :
+    QObject(parent)
+{
+    debug =0;
+ //   initSolenoidKeyMapping();
+    reset();
+}
+
+//void DynaKeyboardVisual::initSolenoidKeyMapping(){
+//    hotkeys.append("C");
+//    hotkeys.append("Z");
+//    hotkeys.append("B");
+//    hotkeys.append("F");
+//    hotkeys.append("P");
+//    hotkeys.append("N");
+//    hotkeys.append("S");
+//    hotkeys.append("W");
+
+
+//    for(int i=0;i<hotkeys.size();i++)
+//    {
+//        QString str = hotkeys.at(i);
+//        solenoid.insert(str[0].unicode(), i);
+//    }
+//}
+
+void DynaKeyboardVisual::updateAll(bool b){
+    QMapIterator<int, bool> i(keyState);
+    while (i.hasNext()) {
+        i.next();
+        //if(solenoid.contains(i.key()))
+        //{
+            keyState.insert(i.key(), b);
+        }
+        //std::cout << i.key() << ": " << i.value() << endl;
+    //}
+
+    //thomas call your method
+    //for all your solenoid....
+
+    updateOutput();
+}
+
+void DynaKeyboardVisual::updateKey(int key, bool raised){
+
+        //if(solenoid.contains(key)){
+            keyState.insert(key, raised);
+            //int idSolenoid = solenoid.value(key);
+            //thomas call your method
+
+            updateOutput();
+        //}
+
+}
+
+void DynaKeyboardVisual::updateOutput()
+{
+    if(!debug) return;
+    debug->raiseKeys(keyState);
+
+}
+
+void DynaKeyboardVisual::lowerAll(){
+    updateAll(0);
+}
+
+void DynaKeyboardVisual::raisAll(){
+    updateAll(1);
+}
+
+
+void DynaKeyboardVisual::raiseKeys(QVector<QString> keys){
+    reset();
+    for(int i=0; i<keys.size();i++){
+        raiseKey(keys.at(i));
+    }
+}
+
+void DynaKeyboardVisual::raiseKey(int key){
+    updateKey(key, true);
+}
+
+void DynaKeyboardVisual::raiseKey(QString str){
+    int keyId = str[0].unicode();
+    //qDebug()<<"raiseKey: unicode: keyId"<<keyId;
+    updateKey(keyId, true);
+}
+
+void DynaKeyboardVisual::lowerKey(int key){
+    updateKey(key, false);
+}
+
+void DynaKeyboardVisual::lowerKey(QString str){
+    int keyId = str[0].unicode();
+    //qDebug()<<"raiseKey: unicode: keyId"<<keyId;
+    updateKey(keyId, false);
+}
diff --git a/WidgetKeyboard/example/DynaKeyboardVisual.h b/WidgetKeyboard/example/DynaKeyboardVisual.h
new file mode 100644 (file)
index 0000000..7f5929e
--- /dev/null
@@ -0,0 +1,41 @@
+#ifndef DynaKeyboardVisual_H
+#define DynaKeyboardVisual_H
+
+#include <QObject>
+#include <QMap>
+#include "WidgetKeyboard.h"
+class DynaKeyboardVisual : public QObject
+{
+    Q_OBJECT
+public:
+    explicit DynaKeyboardVisual(QObject *parent = 0);
+    void printRaisedKey();
+    void setOutput(WidgetKeyboard *_debug){ debug = _debug; }
+
+signals:
+    void reportException(QString);
+
+public slots:
+    void lowerAll();
+    void raisAll();
+    void reset(){ lowerAll(); }
+    void raiseKey(int);
+    void lowerKey(int);
+    void raiseKey(QString c);
+    void lowerKey(QString c);
+    void raiseKeys(QVector<QString> keys);
+
+protected:
+    void updateAll(bool);
+    void updateKey(int, bool raised);
+    void updateOutput();
+    void getSolenoidFromKey();
+    void initSolenoidKeyMapping();
+    QMap<int, bool> keyState;
+ //   QMap<int, int> solenoid;
+ //   QVector<QString> hotkeys;
+    WidgetKeyboard *debug;
+
+};
+
+#endif // DynaKeyboardVisual_H
diff --git a/WidgetKeyboard/example/Main.cpp b/WidgetKeyboard/example/Main.cpp
new file mode 100644 (file)
index 0000000..93a9a81
--- /dev/null
@@ -0,0 +1,43 @@
+/*\r
+ * Copyright 2009 EMBITEL (http://www.embitel.com)\r
+ * \r
+ * This file is part of Virtual Keyboard Project.\r
+ * \r
+ * Virtual Keyboard is free software: you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation\r
+ * \r
+ * Virtual Keyboard is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ * GNU General Public License for more details.\r
+ * \r
+ * You should have received a copy of the GNU General Public License\r
+ * along with Virtual Keyboard. If not, see <http://www.gnu.org/licenses/>.\r
+ */\r
+\r
+#include <QApplication>\r
+#include "UseKeyBoardDialog.h"\r
+\r
+#ifdef Q_WS_MAC\r
+extern void qt_set_sequence_auto_mnemonic(bool b);\r
+#endif\r
+\r
+\r
+#include "Sheet.h"\r
+int main(int argc, char *argv[])\r
+{\r
+#ifdef Q_WS_MAC\r
+  qt_set_sequence_auto_mnemonic(true);\r
+#endif\r
+\r
+    QApplication a(argc, argv);\r
+    //UseKeyBoardDialog w;\r
+\r
+    Sheet *sheet = new Sheet();\r
+\r
+\r
+\r
+    //w.show();\r
+    return a.exec();\r
+}\r
diff --git a/WidgetKeyboard/example/MenuBar.cpp b/WidgetKeyboard/example/MenuBar.cpp
new file mode 100644 (file)
index 0000000..8cdc843
--- /dev/null
@@ -0,0 +1,10 @@
+#include "MenuBar.h"
+
+MenuBar::MenuBar()
+{
+    this->menubar = new QMenuBar()
+}
+
+void buildMenuBar(){
+
+}
diff --git a/WidgetKeyboard/example/Sheet.cpp b/WidgetKeyboard/example/Sheet.cpp
new file mode 100644 (file)
index 0000000..59fd406
--- /dev/null
@@ -0,0 +1,301 @@
+#include "Sheet.h"
+#include <QFont>
+#include <QKeySequence>
+#include <QDebug>
+#include <QApplication>
+#include <QPlastiqueStyle>
+#include <Qlist>
+//extern void qt_set_sequence_auto_mnemonic(true);
+
+Sheet::Sheet(QWidget *parent) :
+    QWidget(parent)
+{
+     window = new QMainWindow();
+
+     this->resize(800,600);
+
+     window->setCentralWidget(this);
+    //this->showFullScreen();
+    this->createMenuBar();
+     window->showFullScreen();
+     ctrl = false;
+     shift = false;
+     alt = false;
+     getCtrlHotkeys();
+     init();
+     this->setFocus();
+     QApplication::setStyle(new QPlastiqueStyle);
+
+}
+
+void Sheet::init()
+{
+    dynaKeyboard = new DynaKeyboard();
+    WidgetKeyboard *output = new WidgetKeyboard(this);
+    output->show();
+    dynaKeyboard->visual->setOutput(output);
+    dynaKeyboard->raiseKeys(getCtrlHotkeys(), 0, 0, 0);
+}
+
+void Sheet::createMenuBar()
+{
+
+   menubar = window->menuBar();
+   menubar->setNativeMenuBar(false);
+   QFont font = menubar->font();
+   font.setPointSize(16);
+   menubar->setFont(font);
+
+   QMenu *menu = menubar->addMenu("&File");
+   actionMenuList.append(menu->menuAction());
+   menu->installEventFilter(this);
+   menu->setFont(font);
+   actionList.append( menu->addAction("&New",this, SLOT(newDoc()),QKeySequence(Qt::CTRL + Qt::Key_N)));
+   actionList.append(menu->addAction("Open",this, SLOT(open()),QKeySequence(Qt::CTRL + Qt::Key_O)));
+   menu->addSeparator();
+   actionList.append(menu->addAction("&Save", this, SLOT(save()), QKeySequence(Qt::CTRL + Qt::Key_S)));
+   actionList.append(menu->addAction("Save &As", this, SLOT(saveAs()), QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_S)));
+   actionList.append(menu->addAction("Save H&tml", this, SLOT(saveHtml()),QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::ALT + Qt::Key_S)));
+   menu->addSeparator();
+   actionList.append(menu->addAction("Export", this, SLOT(exportDoc())));
+   actionList.append(menu->addAction("&Print", this, SLOT(print()), QKeySequence(Qt::CTRL + Qt::Key_P) ));
+   menu->addSeparator();
+   actionList.append(menu->addAction("&Close",this, SLOT(close()),QKeySequence(Qt::CTRL + Qt::Key_W)));
+   actionList.append(menu->addAction("Close All",this, SLOT(closeAll()),QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_W)));
+
+   QMenu *edit = menubar->addMenu("&Edit");
+   actionMenuList.append(edit->menuAction());
+   edit->setFont(font);
+   actionList.append(edit->addAction("Undo",this, SLOT(undo()),QKeySequence(Qt::CTRL + Qt::Key_Z)));
+   actionList.append(edit->addAction("Redo",this, SLOT(redo()),QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_Z)));
+   edit->addSeparator();
+   actionList.append(edit->addAction("Cu&t", this, SLOT(cut()), QKeySequence(Qt::CTRL + Qt::Key_X)));
+   actionList.append(edit->addAction("&Copy", this, SLOT(copy()), QKeySequence(Qt::CTRL + Qt::Key_C)));
+   actionList.append(edit->addAction("&Paste", this, SLOT(paste()), QKeySequence(Qt::CTRL + Qt::Key_V)));
+   edit->addSeparator();
+   actionList.append(edit->addAction("Select All", this, SLOT(selectAll()),QKeySequence(Qt::CTRL + Qt::Key_A)));
+   edit->addMenu("Advanced");
+   edit->addSeparator();
+   actionList.append(edit->addAction("Find",this, SLOT(find()),QKeySequence(Qt::CTRL + Qt::Key_F)));
+   actionList.append(edit->addAction("Find Next",this, SLOT(findNext()),QKeySequence(Qt::CTRL + + Qt::SHIFT + Qt::Key_F)));
+
+   QMenu *tool = menubar->addMenu("&Tool");
+   actionMenuList.append(tool->menuAction());
+   actionList.append(tool->addAction("&Small Tool",this, SLOT(tool()),QKeySequence(Qt::CTRL + Qt::Key_T)));
+   actionList.append(tool->addAction("Medium Tool",this, SLOT(tool()),QKeySequence(Qt::CTRL + + Qt::SHIFT + Qt::Key_T)));
+   actionList.append(tool->addAction("Large Tool",this, SLOT(tool()),QKeySequence(Qt::CTRL + + Qt::SHIFT + Qt::ALT + Qt::Key_T)));
+   actionList.append(tool->addAction("&Altenrative Tool",this, SLOT(tool()),QKeySequence(Qt::CTRL + Qt::ALT + Qt::Key_T)));
+   actionList.append(tool->addAction("Drawing",this, SLOT(tool()),QKeySequence(Qt::Key_D)));
+
+   QList<QKeySequence> sequences = actionList.at(actionList.size()-1)->shortcuts();
+   for(int i=0;i<sequences.size();i++){
+       qDebug()<<"shortcuts: "<< sequences.at(i).mnemonic(actionList.at(actionList.size()-1)->text());
+    }
+   QMenu *window = menubar->addMenu("&Window");
+   actionMenuList.append(window->menuAction());
+   QMenu *help = menubar->addMenu("Hel&p");
+   actionMenuList.append(help->menuAction());
+
+}
+
+QVector<QString> Sheet::getCtrlHotkeys(){
+    QVector<QString> hotkeys;
+    bool ctrl2 = false;
+    bool shift2 =false;
+    bool alt2 =false;
+    bool valid = false;
+    for(int i=0; i< actionList.size();i++)
+    {
+        QKeySequence seq = actionList.at(i)->shortcut();
+        QString str = seq.toString();
+        //qDebug()<< "keysequence: "<< str;
+        ctrl2 = str.contains("Ctrl");
+        shift2 = str.contains("Shift");
+        alt2 = str.contains("Alt");
+        valid = seq.count();
+        if(ctrl2 == ctrl && shift2 == shift && alt2 == alt && valid){
+            hotkeys.append(QString(str[str.length()-1]));
+
+        }
+
+    }
+
+    qDebug()<< hotkeys;
+    return hotkeys;
+
+}
+
+QVector<QString> Sheet::getAltHotkeys(){
+    QVector<QString> hotkeys;
+    if (window->menuBar()->activeAction())
+        return hotkeys;
+
+    bool alt2 =false;
+    for(int i=0; i< actionMenuList.size();i++)
+    {
+        QKeySequence seq = actionMenuList.at(i)->shortcut();
+        QString str = seq.mnemonic(actionMenuList.at(i)->text()).toString();
+        //qDebug()<< "alt keysequence: "<< str;
+        alt2 = str.contains("Alt");
+
+        if(alt2 == alt){
+            hotkeys.append(QString(str[str.length()-1]));
+
+        }
+
+    }
+
+    return hotkeys;
+
+}
+
+QVector<QString> Sheet::getImplicitAndAltHotkeys(){
+    QVector<QString> hotkeys;
+
+    QAction *action = window->menuBar()->activeAction();
+    if(!action)
+    {
+         hotkeys = getCtrlHotkeys();
+    }else{
+         QMenu* menu = action->menu();
+         for(int i=0; i< actionList.size();i++)
+         {
+             if(action->parentWidget() ==menu)
+             {
+                 QKeySequence seq = actionList.at(i)->shortcut();
+                 QString str = seq.mnemonic(actionList.at(i)->text()).toString();
+                 if(str.contains("Alt"))
+                    hotkeys.append(QString(str[str.length()-1]));
+             }
+         }
+    }
+
+
+    return hotkeys;
+}
+
+
+void Sheet::raiseCtrl(){
+
+}
+void Sheet::raiseCtrlShift(){}
+void Sheet::raiseCtrlShiftAlt(){}
+void Sheet::raiseCtrlAlt(){}
+
+bool Sheet::eventFilter(QObject *obj, QEvent *event)
+{
+    if (event->type() == QEvent::KeyPress) {
+        QKeyEvent *ke = static_cast<QKeyEvent *>(event);
+            //qDebug()<<"keypressEvent";
+        ctrl = ke->modifiers() & Qt::ControlModifier;
+        shift = ke->modifiers() & Qt::ShiftModifier;
+        alt = ke->modifiers() & Qt::AltModifier;
+        if(ctrl) // ctrl shift alt
+        {
+            this->dynaKeyboard->raiseKeys(getCtrlHotkeys(), ctrl, shift, alt);
+
+        }else if (!ctrl & !shift & alt) //ctrl shift
+        {
+             this->dynaKeyboard->raiseKeys(getAltHotkeys(), ctrl, shift, alt);
+         }else if( !ctrl & !shift & !alt)
+        {
+            this->dynaKeyboard->raiseKeys( getImplicitAndAltHotkeys(), ctrl, shift, alt);
+        }
+
+    } else if (event->type() == QEvent::KeyRelease) {
+        QKeyEvent *ke = static_cast<QKeyEvent *>(event);
+        //qDebug()<<"keypressEvent";
+        ctrl = ke->modifiers() & Qt::ControlModifier;
+        shift = ke->modifiers() & Qt::ShiftModifier;
+        alt = ke->modifiers() & Qt::AltModifier;
+        if(ctrl) // ctrl shift alt
+        {
+            this->dynaKeyboard->raiseKeys(getCtrlHotkeys(), ctrl, shift, alt);
+
+        }else if (!ctrl & !shift & alt) //ctrl shift
+        {
+             this->dynaKeyboard->raiseKeys(getAltHotkeys(), ctrl, shift, alt);
+         }else if( !ctrl & !shift & !alt)
+        {
+            this->dynaKeyboard->raiseKeys( getImplicitAndAltHotkeys(), ctrl, shift, alt);
+        }
+    }
+    return false;
+}
+
+bool Sheet::event(QEvent *event)
+{
+
+    if (event->type() == QEvent::KeyPress) {
+        QKeyEvent *ke = static_cast<QKeyEvent *>(event);
+            //qDebug()<<"keypressEvent";
+        ctrl = ke->modifiers() & Qt::ControlModifier;
+        shift = ke->modifiers() & Qt::ShiftModifier;
+        alt = ke->modifiers() & Qt::AltModifier;
+        if(ctrl) // ctrl shift alt
+        {
+            this->dynaKeyboard->raiseKeys(getCtrlHotkeys(), ctrl, shift, alt);
+
+        }else if (!ctrl & !shift & alt) //ctrl shift
+        {
+             this->dynaKeyboard->raiseKeys(getAltHotkeys(), ctrl, shift, alt);
+         }else if( !ctrl & !shift & !alt)
+        {
+            this->dynaKeyboard->raiseKeys( getImplicitAndAltHotkeys(), ctrl, shift, alt);
+        }
+
+    } else if (event->type() == QEvent::KeyRelease) {
+        QKeyEvent *ke = static_cast<QKeyEvent *>(event);
+        //qDebug()<<"keypressEvent";
+        ctrl = ke->modifiers() & Qt::ControlModifier;
+        shift = ke->modifiers() & Qt::ShiftModifier;
+        alt = ke->modifiers() & Qt::AltModifier;
+        if(ctrl) // ctrl shift alt
+        {
+            this->dynaKeyboard->raiseKeys(getCtrlHotkeys(), ctrl, shift, alt);
+
+        }else if (!ctrl & !shift & alt) //ctrl shift
+        {
+             this->dynaKeyboard->raiseKeys(getAltHotkeys(), ctrl, shift, alt);
+         }else if( !ctrl & !shift & !alt)
+        {
+            this->dynaKeyboard->raiseKeys( getImplicitAndAltHotkeys(), ctrl, shift, alt);
+        }
+    }
+
+    return QWidget::event(event);
+}
+
+void Sheet::keyPressEvent(QKeyEvent *ke)
+{
+
+}
+
+void Sheet::keyReleaseEvent(QKeyEvent *ke)
+{
+
+
+}
+
+void Sheet::newDoc(){     this->setFocus();}
+void Sheet::open(){this->setFocus();}
+void Sheet::save(){this->setFocus();}
+void Sheet::saveAs(){this->setFocus();}
+void Sheet::saveHtml(){this->setFocus();}
+void Sheet::close(){ this->setFocus(); }
+void Sheet::closeAll(){ exit(0); }
+void Sheet::exportDoc(){this->setFocus();}
+void Sheet::print(){this->setFocus();}
+void Sheet::undo(){this->setFocus();}
+void Sheet::redo(){this->setFocus();}
+void Sheet::cut(){this->setFocus();}
+void Sheet::copy(){this->setFocus();}
+void Sheet::paste(){this->setFocus();}
+void Sheet::selectAll(){this->setFocus();}
+void Sheet::find(){this->setFocus();}
+void Sheet::findNext(){this->setFocus();}
+void Sheet::tool(){this->setFocus();}
+
+
+
+
diff --git a/WidgetKeyboard/example/Sheet.h b/WidgetKeyboard/example/Sheet.h
new file mode 100644 (file)
index 0000000..257ae9a
--- /dev/null
@@ -0,0 +1,73 @@
+#ifndef SHEET_H
+#define SHEET_H
+
+#include <QWidget>
+#include <QMenuBar>
+#include <QMenu>
+#include <QMenuItem>
+#include <QMainWindow>
+#include "DynaKeyboard.h"
+#include "WidgetKeyboard.h"
+#include <QKeyEvent>
+#include <QVector>
+#include <QAction>
+class Sheet : public QWidget
+{
+    Q_OBJECT
+public:
+    explicit Sheet(QWidget *parent = 0);
+    void createMenuBar();
+    void init();
+
+    void keyPressEvent(QKeyEvent *);
+    void keyReleaseEvent(QKeyEvent *);
+    bool event(QEvent *event);
+    bool eventFilter(QObject *, QEvent *e);
+
+    void raiseCtrl();
+    void raiseCtrlShift();
+    void raiseCtrlShiftAlt();
+    void raiseCtrlAlt();
+
+    QVector<QString> getCtrlHotkeys();
+    QVector<QString> getAltHotkeys();
+    QVector<QString> getImplicitAndAltHotkeys();
+
+
+public slots:
+    void newDoc();
+    void open();
+    void save();
+    void saveAs();
+    void saveHtml();
+    void close();
+    void closeAll();
+    void exportDoc();
+    void print();
+    void undo();
+    void redo();
+    void cut();
+    void copy();
+    void paste();
+    void selectAll();
+    void find();
+    void findNext();
+    void tool();
+
+
+signals:
+
+public slots:
+public:
+    QMenuBar* menubar;
+    QMainWindow *window;
+    DynaKeyboard *dynaKeyboard;
+    QVector< QAction *> actionList;
+    QVector< QAction*> actionMenuList;
+
+    bool ctrl;
+    bool shift;
+    bool alt;
+};
+
+#endif // SHEET_H
diff --git a/WidgetKeyboard/example/UseKeyBoardDialog.cpp b/WidgetKeyboard/example/UseKeyBoardDialog.cpp
new file mode 100644 (file)
index 0000000..06617c0
--- /dev/null
@@ -0,0 +1,43 @@
+/*\r
+ * Copyright 2009 EMBITEL (http://www.embitel.com)\r
+ * \r
+ * This file is part of Virtual Keyboard Project.\r
+ * \r
+ * Virtual Keyboard is free software: you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation\r
+ * \r
+ * Virtual Keyboard is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ * GNU General Public License for more details.\r
+ * \r
+ * You should have received a copy of the GNU General Public License\r
+ * along with Virtual Keyboard. If not, see <http://www.gnu.org/licenses/>.\r
+ * The supplied test sound file is properitery of Windows XP Balloon.wav © 2009 Microsoft Corporation. All rights reserved.\r
+ */\r
+\r
+#include "UseKeyBoardDialog.h"\r
+#include "WidgetKeyboard.h"\r
+\r
+UseKeyBoardDialog::UseKeyBoardDialog(QWidget *parent) : QDialog(parent)\r
+{\r
+    setupUi(this);\r
+       virtualKeyBoard = new WidgetKeyboard(this);\r
+       virtualKeyBoard->setSoundEnabled("Windows XP Balloon.wav");\r
+}\r
+\r
+UseKeyBoardDialog::~UseKeyBoardDialog()\r
+{}\r
+\r
+void UseKeyBoardDialog::on_btnShow_clicked()\r
+{\r
+       virtualKeyBoard->show();\r
+       this->lineEdit_2->setFocus();\r
+}\r
+\r
+void UseKeyBoardDialog::on_btnHide_clicked()\r
+{    \r
+       virtualKeyBoard->hide();\r
+       virtualKeyBoard->setSoundDisabled();\r
+}\r
diff --git a/WidgetKeyboard/example/UseKeyBoardDialog.h b/WidgetKeyboard/example/UseKeyBoardDialog.h
new file mode 100644 (file)
index 0000000..d2f5917
--- /dev/null
@@ -0,0 +1,41 @@
+/*\r
+ * Copyright 2009 EMBITEL (http://www.embitel.com)\r
+ * \r
+ * This file is part of Virtual Keyboard Project.\r
+ * \r
+ * Virtual Keyboard is free software: you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation\r
+ * \r
+ * Virtual Keyboard is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ * GNU General Public License for more details.\r
+ * \r
+ * You should have received a copy of the GNU General Public License\r
+ * along with Virtual Keyboard. If not, see <http://www.gnu.org/licenses/>.\r
+ */\r
+\r
+#ifndef __USEKEYBOARDDIALOG_H_\r
+#define __USEKEYBOARDDIALOG_H_\r
+\r
+#include <QDialog>\r
+#include "ui_UseKeyBoardDialog.h"\r
+class WidgetKeyboard;\r
+\r
+class UseKeyBoardDialog : public QDialog , public Ui::UseKeyBoardDialog\r
+{\r
+    Q_OBJECT\r
+    \r
+    public:\r
+        UseKeyBoardDialog(QWidget *parent = 0);\r
+        ~UseKeyBoardDialog();\r
+\r
+    private:\r
+        WidgetKeyboard *virtualKeyBoard;\r
+        \r
+    private slots:\r
+        void on_btnShow_clicked();\r
+        void on_btnHide_clicked();\r
+};\r
+#endif  /*__USEKEYBOARDDIALOG_H_*/\r
diff --git a/WidgetKeyboard/example/UseKeyBoardDialog.ui b/WidgetKeyboard/example/UseKeyBoardDialog.ui
new file mode 100644 (file)
index 0000000..6bb797a
--- /dev/null
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<ui version="4.0">\r
+ <class>UseKeyBoardDialog</class>\r
+ <widget class="QWidget" name="UseKeyBoardDialog">\r
+  <property name="geometry">\r
+   <rect>\r
+    <x>0</x>\r
+    <y>0</y>\r
+    <width>417</width>\r
+    <height>269</height>\r
+   </rect>\r
+  </property>\r
+  <property name="windowTitle">\r
+   <string>Using Virtual Keyboard</string>\r
+  </property>\r
+  <layout class="QVBoxLayout" name="verticalLayout_4">\r
+   <item>\r
+    <layout class="QVBoxLayout" name="verticalLayout">\r
+     <item>\r
+      <layout class="QVBoxLayout" name="verticalLayout_2">\r
+       <item>\r
+        <widget class="QLineEdit" name="lineEdit_2"/>\r
+       </item>\r
+       <item>\r
+        <widget class="QLineEdit" name="lineEdit_3"/>\r
+       </item>\r
+       <item>\r
+        <widget class="QTextEdit" name="textEdit"/>\r
+       </item>\r
+       <item>\r
+        <spacer name="verticalSpacer">\r
+         <property name="orientation">\r
+          <enum>Qt::Vertical</enum>\r
+         </property>\r
+         <property name="sizeHint" stdset="0">\r
+          <size>\r
+           <width>20</width>\r
+           <height>40</height>\r
+          </size>\r
+         </property>\r
+        </spacer>\r
+       </item>\r
+      </layout>\r
+     </item>\r
+    </layout>\r
+   </item>\r
+   <item>\r
+    <layout class="QHBoxLayout" name="horizontalLayout">\r
+     <item>\r
+      <spacer name="horizontalSpacer">\r
+       <property name="orientation">\r
+        <enum>Qt::Horizontal</enum>\r
+       </property>\r
+       <property name="sizeHint" stdset="0">\r
+        <size>\r
+         <width>40</width>\r
+         <height>20</height>\r
+        </size>\r
+       </property>\r
+      </spacer>\r
+     </item>\r
+     <item>\r
+      <layout class="QVBoxLayout" name="verticalLayout_3">\r
+       <item>\r
+        <widget class="QPushButton" name="btnShow">\r
+         <property name="text">\r
+          <string>Open VK</string>\r
+         </property>\r
+        </widget>\r
+       </item>\r
+       <item>\r
+        <widget class="QPushButton" name="btnHide">\r
+         <property name="text">\r
+          <string>Hide VK</string>\r
+         </property>\r
+        </widget>\r
+       </item>\r
+      </layout>\r
+     </item>\r
+    </layout>\r
+   </item>\r
+  </layout>\r
+ </widget>\r
+ <layoutdefault spacing="6" margin="11"/>\r
+ <resources/>\r
+ <connections/>\r
+</ui>\r
diff --git a/WidgetKeyboard/example/example.pro b/WidgetKeyboard/example/example.pro
new file mode 100644 (file)
index 0000000..818408c
--- /dev/null
@@ -0,0 +1,21 @@
+TEMPLATE = app
+INCLUDEPATH += .
+
+include(../src/WidgetKeyboard.pri)
+
+# Input
+
+TARGET = UseKeyBoardDialog
+HEADERS += UseKeyBoardDialog.h \               
+    DynaKeyboardVisual.h \
+    Sheet.h \
+    DynaKeyboard.h \
+    DynaKeyboardHaptic.h
+                       
+FORMS += UseKeyBoardDialog.ui
+SOURCES += Main.cpp \
+               UseKeyBoardDialog.cpp \
+    DynaKeyboardVisual.cpp \
+    Sheet.cpp \
+    DynaKeyboard.cpp \
+    DynaKeyboardHaptic.cpp
diff --git a/WidgetKeyboard/grey.png b/WidgetKeyboard/grey.png
new file mode 100644 (file)
index 0000000..b99402d
Binary files /dev/null and b/WidgetKeyboard/grey.png differ
diff --git a/WidgetKeyboard/ressource.qrc b/WidgetKeyboard/ressource.qrc
new file mode 100644 (file)
index 0000000..920c48c
--- /dev/null
@@ -0,0 +1,6 @@
+<RCC>
+    <qresource prefix="/">
+        <file>grey.png</file>
+        <file>blue.png</file>
+    </qresource>
+</RCC>
diff --git a/WidgetKeyboard/src/WidgetKeyboard.cpp b/WidgetKeyboard/src/WidgetKeyboard.cpp
new file mode 100644 (file)
index 0000000..93ccdae
--- /dev/null
@@ -0,0 +1,413 @@
+/*\r
+ * Copyright 2009 EMBITEL (http://www.embitel.com)\r
+ * \r
+ * This file is part of Virtual Keyboard Project.\r
+ * \r
+ * Virtual Keyboard is free software: you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation\r
+ * \r
+ * Virtual Keyboard is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ * GNU General Public License for more details.\r
+ * \r
+ * You should have received a copy of the GNU General Public License\r
+ * along with Virtual Keyboard. If not, see <http://www.gnu.org/licenses/>.\r
+ */\r
+\r
+#include "WidgetKeyboard.h"\r
+#include <QKeyEvent>\r
+#include <QSignalMapper>\r
+#include <QSound>\r
+#include <QMessageBox>\r
+#include <QDesktopWidget>\r
+#include <QClipboard>\r
+#include <QList>\r
+#include <QDebug>\r
+#include <QIcon>\r
+WidgetKeyboard::WidgetKeyboard(QWidget *parent) : QWidget(0)\r
+{\r
+    setupUi(this);\r
+    resize(0,0);\r
+    this->setWindowFlags(Qt::Tool);\r
+    m_pParent = parent;\r
+    isCaps = false;\r
+    isShift = false;\r
+    isCtrl = false;\r
+    isAlt = false;\r
+       isIns = false;\r
+    changeTextCaps(false);\r
+    signalMapper = new QSignalMapper(this);\r
+    sliderOpacity->setRange(20,100);\r
+    allButtons = findChildren<QToolButton *>();\r
+    for (int i=0;i<allButtons.count();i++) {\r
+        connect(allButtons.at(i), SIGNAL(clicked()), signalMapper, SLOT(map()));\r
+        signalMapper->setMapping(allButtons.at(i), i);\r
+    }\r
+    connect(signalMapper, SIGNAL(mapped(int)), this, SLOT(on_btn_clicked(int)));\r
+}\r
+\r
+WidgetKeyboard::~WidgetKeyboard()\r
+{\r
+       delete signalMapper;\r
+}\r
+\r
+void WidgetKeyboard::raiseKeys(const QMap<int, bool> &keyState)\r
+{\r
+    for(int i=0; i<allButtons.size();i++)\r
+    {\r
+        QString strKeyId;\r
+        QToolButton *button = allButtons.at(i);\r
+        strKeyId = button->accessibleName();\r
+        bool isOk;\r
+        int keyId = strKeyId.toInt(&isOk, 16);\r
+        bool find = keyState.contains(keyId);\r
+\r
+        bool raised = keyState.value(keyId);\r
+         //if(find) qDebug()<<" strKeyId=" <<  strKeyId << " keyId="<<keyId << " "<<"raised "<< raised;\r
+         if(raised){\r
+             QIcon icon(":blue.png");\r
+             button->setIcon(icon);\r
+             button->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);\r
+         }else{\r
+             //QIcon icon(":grey.png");\r
+             //button->setIcon(icon);\r
+             button->setToolButtonStyle(Qt::ToolButtonTextOnly);\r
+           }\r
+         //button->setVisible(raised);\r
+        //button->setDisabled(!raised);\r
+\r
+    }\r
+\r
+}\r
+\r
+void WidgetKeyboard::on_btn_clicked(int btn)\r
+{\r
+       if(! soundFilePath.isEmpty())\r
+               QSound::play(soundFilePath);\r
+       QString strKeyId;\r
+    strKeyId = allButtons.at(btn)->accessibleName();\r
+    bool isOk;\r
+    int keyId = strKeyId.toInt(&isOk, 16);\r
+    if (strKeyId.isEmpty() || !isOk) {\r
+        QMessageBox::information(0,0,"Key Not Found");\r
+        return;\r
+    }\r
+    \r
+    //Keys to be handled separately\r
+       if (keyId==Qt::Key_Shift\r
+               || keyId==Qt::Key_Control\r
+               || keyId==Qt::Key_Alt\r
+               || keyId==Qt::Key_Print\r
+               )\r
+        return;\r
+\r
+    int involvedKeys = 1;\r
+    Qt::KeyboardModifiers Modifier = Qt::NoModifier;\r
+    if (isCtrl) {\r
+        Modifier = Modifier | Qt::ControlModifier;\r
+        involvedKeys++;\r
+    }\r
+    if (isShift) {\r
+        Modifier = Modifier | Qt::ShiftModifier;\r
+        involvedKeys++;\r
+    }\r
+    if (isAlt) {\r
+        Modifier = Modifier | Qt::AltModifier;\r
+        involvedKeys++;\r
+    }    \r
+    \r
+    bool isTextKey = false;\r
+\r
+       if(keyId==Qt::Key_Insert && !isShift)\r
+               return;\r
+       \r
+\r
+       QString ch = allButtons.at(btn)->text().trimmed();\r
+    if (ch=="&&")\r
+        ch="&";\r
+       else if (keyId==Qt::Key_Space)\r
+        ch = " ";\r
+    else if (checkNotTextKey(keyId))\r
+               ch = QString();\r
+       else\r
+               isTextKey = true;\r
+           \r
+\r
+       if(isIns && isTextKey) {\r
+               QKeyEvent keyEventIns(QEvent::KeyPress, Qt::Key_Delete, Qt::NoModifier);\r
+               QApplication::sendEvent(m_pParent->focusWidget(), &keyEventIns);\r
+       }\r
+\r
+       QKeyEvent keyEvent(QEvent::KeyPress, keyId, Modifier, ch, false, involvedKeys);\r
+        if(m_pParent)\r
+        QApplication::sendEvent(m_pParent->focusWidget(), &keyEvent);\r
+\r
+    \r
+    btnShiftLeft->setChecked(false);\r
+       btnShiftRight->setChecked(false);\r
+    btnCtrlLeft->setChecked(false);\r
+    btnAltLeft->setChecked(false);\r
+}\r
+\r
+void WidgetKeyboard::on_btnCaps_toggled(bool checked)\r
+{\r
+    changeTextCaps(checked);\r
+    isCaps = checked;\r
+}\r
+\r
+void WidgetKeyboard::on_btnShiftLeft_toggled(bool checked)\r
+{\r
+    isShift = checked;\r
+    if (isCaps) {\r
+        changeTextShift(checked);\r
+    }\r
+    else {\r
+        changeTextShift(checked);\r
+        changeTextCaps(checked);\r
+    }\r
+}\r
+\r
+void WidgetKeyboard::on_btnShiftRight_toggled(bool checked)\r
+{\r
+    on_btnShiftLeft_toggled(checked);\r
+}\r
+\r
+void WidgetKeyboard::on_btnCtrlLeft_toggled(bool checked)\r
+{\r
+    isCtrl = checked;\r
+}\r
+\r
+void WidgetKeyboard::on_btnAltLeft_toggled(bool checked)\r
+{\r
+    isAlt = checked;\r
+}\r
+\r
+void WidgetKeyboard::on_btnIns_clicked()\r
+{\r
+       isIns = !isIns;\r
+}\r
+\r
+void WidgetKeyboard::on_btnPrint_clicked()\r
+{\r
+       QPixmap screen = QPixmap::grabWindow(QApplication::desktop()->winId());\r
+       QClipboard *cb = QApplication::clipboard();\r
+       cb->setPixmap(screen, QClipboard::Clipboard);\r
+}\r
+\r
+void WidgetKeyboard::on_sliderOpacity_valueChanged(int val)\r
+{\r
+    opacity = 120.0 - val;\r
+    opacity /= 100.0;    \r
+    setWindowOpacity(opacity);    \r
+}\r
+\r
+void WidgetKeyboard::changeTextShift(bool isShift)\r
+{    \r
+    changeTextCaps(!isShift);\r
+    if (isShift) {\r
+               btnTilt->setText(QChar('~'));\r
+        btn1->setText(QChar('!'));\r
+        btn2->setText(QChar('@'));\r
+        btn3->setText(QChar('#'));\r
+        btn4->setText(QChar('$'));\r
+        btn5->setText(QChar('%'));\r
+        btn6->setText(QChar('^'));        \r
+        btn7->setText("&&");\r
+        btn8->setText(QChar('*'));\r
+        btn9->setText(QChar('('));\r
+        btn0->setText(QChar(')'));\r
+        btnHiphen->setText(QChar('_'));\r
+        btnAssign->setText(QChar('+'));\r
+        \r
+        btnStartSquare->setText(QChar('{'));\r
+        btnCloseSquare->setText(QChar('}'));\r
+        btnFwdSlash->setText(QChar('|'));\r
+        \r
+        btnSemiColon->setText(QChar(':'));\r
+        btnSp->setText(QChar('"'));\r
+            \r
+        btnComma->setText(QChar('<'));\r
+        btnPeriod->setText(QChar('>'));\r
+        btnBcwdSlash->setText(QChar('?'));\r
+       }\r
+    else {\r
+               btnTilt->setText(QChar('`'));\r
+        btn1->setText(QChar('1'));\r
+        btn2->setText(QChar('2'));\r
+        btn3->setText(QChar('3'));\r
+        btn4->setText(QChar('4'));\r
+        btn5->setText(QChar('5'));\r
+        btn6->setText(QChar('6'));\r
+        btn7->setText(QChar('7'));\r
+        btn8->setText(QChar('8'));\r
+        btn9->setText(QChar('9'));\r
+        btn0->setText(QChar('0'));\r
+        btnHiphen->setText(QChar('-'));\r
+        btnAssign->setText(QChar('='));\r
+            \r
+        btnStartSquare->setText(QChar('['));\r
+        btnCloseSquare->setText(QChar(']'));\r
+        btnFwdSlash->setText(QChar('\\'));\r
+        \r
+        btnSemiColon->setText(QChar(';'));\r
+        btnSp->setText(QChar('\''));\r
+        \r
+        btnComma->setText(QChar(','));\r
+        btnPeriod->setText(QChar('.'));\r
+        btnBcwdSlash->setText(QChar('/'));\r
+    }\r
+}\r
+\r
+void WidgetKeyboard::changeTextCaps(bool isCaps)\r
+{    \r
+    if (isCaps) {\r
+        btnQ->setText(QChar('Q'));\r
+        btnW->setText(QChar('W'));\r
+        btnE->setText(QChar('E'));\r
+        btnR->setText(QChar('R'));\r
+        btnT->setText(QChar('T'));\r
+        btnY->setText(QChar('Y'));\r
+        btnU->setText(QChar('U'));\r
+        btnI->setText(QChar('I'));\r
+        btnO->setText(QChar('O'));\r
+        btnP->setText(QChar('P'));\r
+\r
+        btnA->setText(QChar('A'));\r
+        btnS->setText(QChar('S'));\r
+        btnD->setText(QChar('D'));\r
+        btnF->setText(QChar('F'));\r
+        btnG->setText(QChar('G'));\r
+        btnH->setText(QChar('H'));\r
+        btnJ->setText(QChar('J'));\r
+        btnK->setText(QChar('K'));\r
+        btnL->setText(QChar('L'));\r
+                \r
+        btnZ->setText(QChar('Z'));\r
+        btnX->setText(QChar('X'));\r
+        btnC->setText(QChar('C'));\r
+        btnV->setText(QChar('V'));\r
+        btnB->setText(QChar('B'));\r
+        btnN->setText(QChar('N'));\r
+        btnM->setText(QChar('M'));        \r
+    }\r
+       else {\r
+        btnQ->setText(QChar('q'));\r
+        btnW->setText(QChar('w'));\r
+        btnE->setText(QChar('e'));\r
+        btnR->setText(QChar('r'));\r
+        btnT->setText(QChar('t'));\r
+        btnY->setText(QChar('y'));\r
+        btnU->setText(QChar('u'));\r
+        btnI->setText(QChar('i'));\r
+        btnO->setText(QChar('o'));\r
+        btnP->setText(QChar('p'));\r
+\r
+        btnA->setText(QChar('a'));\r
+        btnS->setText(QChar('s'));\r
+        btnD->setText(QChar('d'));\r
+        btnF->setText(QChar('f'));\r
+        btnG->setText(QChar('g'));\r
+        btnH->setText(QChar('h'));\r
+        btnJ->setText(QChar('j'));\r
+        btnK->setText(QChar('k'));\r
+        btnL->setText(QChar('l'));\r
+        \r
+        btnZ->setText(QChar('z'));\r
+        btnX->setText(QChar('x'));\r
+        btnC->setText(QChar('c'));\r
+        btnV->setText(QChar('v'));\r
+        btnB->setText(QChar('b'));\r
+        btnN->setText(QChar('n'));\r
+        btnM->setText(QChar('m'));\r
+    }\r
+}\r
+\r
+bool WidgetKeyboard::checkNotTextKey(int keyId)\r
+{\r
+       if (keyId==Qt::Key_Shift\r
+            || keyId==Qt::Key_Control\r
+            || keyId==Qt::Key_Tab\r
+            || keyId==Qt::Key_Escape\r
+            || keyId==Qt::Key_Return\r
+            || keyId==Qt::Key_Insert\r
+            || keyId==Qt::Key_NumLock\r
+            || keyId==Qt::Key_F1\r
+            || keyId==Qt::Key_F2\r
+            || keyId==Qt::Key_F3\r
+            || keyId==Qt::Key_F4\r
+            || keyId==Qt::Key_F5\r
+            || keyId==Qt::Key_F6\r
+            || keyId==Qt::Key_F7\r
+            || keyId==Qt::Key_F8\r
+            || keyId==Qt::Key_F9\r
+            || keyId==Qt::Key_F10\r
+            || keyId==Qt::Key_F11\r
+            || keyId==Qt::Key_F12\r
+            || keyId==Qt::Key_Print\r
+            || keyId==Qt::Key_Pause\r
+            || keyId==Qt::Key_ScrollLock\r
+            || keyId==Qt::Key_Enter\r
+            || keyId==Qt::Key_Home\r
+            || keyId==Qt::Key_End\r
+            || keyId==Qt::Key_CapsLock\r
+            || keyId==Qt::Key_Insert\r
+            || keyId==Qt::Key_Delete\r
+            || keyId==Qt::Key_PageUp\r
+            || keyId==Qt::Key_PageDown\r
+            || keyId==Qt::Key_Down\r
+            || keyId==Qt::Key_Up\r
+            || keyId==Qt::Key_Left\r
+            || keyId==Qt::Key_Right\r
+                       || keyId==Qt::Key_Alt) {\r
+                               return true;\r
+       }\r
+       else\r
+               return false;\r
+}\r
+\r
+void WidgetKeyboard::setOpacity(int opacity)\r
+{\r
+    sliderOpacity->setValue(opacity);\r
+}\r
+\r
+int WidgetKeyboard::getOpacity()\r
+{\r
+    return sliderOpacity->value();\r
+}\r
+\r
+void WidgetKeyboard::setSoundDisabled()\r
+{\r
+       soundFilePath = "";\r
+}\r
+\r
+/* \r
+Microsoft Windows : The underlying multimedia system is used; only WAVE format sound files are supported.\r
+X11    : The Network Audio System is used if available, otherwise all operations work silently. NAS supports WAVE and AU files.\r
+Mac OS X : NSSound is used. All formats that NSSound supports, including QuickTime formats, are supported by Qt for Mac OS X.\r
+Qt for Embedded Linux : A built-in mixing sound server is used, accessing /dev/dsp directly. Only the WAVE format is supported.\r
+*/\r
+\r
+void WidgetKeyboard::setSoundEnabled(QString soundPath)\r
+{\r
+       soundFilePath = soundPath;\r
+}\r
+\r
+void WidgetKeyboard::on_checkBoxShowNumPad_stateChanged(int state)\r
+{\r
+       QList<QWidget *> children = frameNumPad->findChildren<QWidget *>();\r
+       if(state==Qt::Checked)\r
+       {\r
+               frameNumPad->show();\r
+               /*for each(QWidget *child in children)\r
+                       child->show();*/\r
+       }\r
+       else\r
+       {\r
+               frameNumPad->hide();\r
+               /*for each(QWidget *child in children)\r
+                       child->hide();*/\r
+       }\r
+       update();\r
+}\r
diff --git a/WidgetKeyboard/src/WidgetKeyboard.h b/WidgetKeyboard/src/WidgetKeyboard.h
new file mode 100644 (file)
index 0000000..02c3611
--- /dev/null
@@ -0,0 +1,69 @@
+/*\r
+ * Copyright 2009 EMBITEL (http://www.embitel.com)\r
+ * \r
+ * This file is part of Virtual Keyboard Project.\r
+ * \r
+ * Virtual Keyboard is free software: you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation\r
+ * \r
+ * Virtual Keyboard is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ * GNU General Public License for more details.\r
+ * \r
+ * You should have received a copy of the GNU General Public License\r
+ * along with Virtual Keyboard. If not, see <http://www.gnu.org/licenses/>.\r
+ */\r
+\r
+#ifndef __WIDGETKEYBOARD_H_\r
+#define __WIDGETKEYBOARD_H_\r
+\r
+#include <QWidget>\r
+#include "ui_WidgetKeyboard.h"\r
+class QSignalMapper;\r
+\r
+class WidgetKeyboard : public QWidget, public Ui::WidgetKeyboard\r
+{\r
+    Q_OBJECT\r
+    \r
+    private:\r
+               QWidget *m_pParent;\r
+               qreal opacity;\r
+               bool isCaps;\r
+               bool isShift;\r
+               bool isCtrl;\r
+               bool isAlt;\r
+               bool isIns;\r
+               QSignalMapper *signalMapper;\r
+               QList<QToolButton *> allButtons;\r
+               QString soundFilePath;\r
+        \r
+    private slots:\r
+               void on_btn_clicked(int btn);\r
+               void on_btnCaps_toggled(bool checked);\r
+               void on_btnShiftLeft_toggled(bool checked);\r
+               void on_btnShiftRight_toggled(bool checked);\r
+               void on_btnCtrlLeft_toggled(bool checked);\r
+               void on_btnAltLeft_toggled(bool checked);\r
+               void on_btnIns_clicked();\r
+               void on_btnPrint_clicked();\r
+               void on_sliderOpacity_valueChanged(int);\r
+               void changeTextShift(bool isShift);\r
+               void changeTextCaps(bool isCaps);\r
+               bool checkNotTextKey(int keyId);\r
+               void on_checkBoxShowNumPad_stateChanged(int state);\r
+\r
+            public slots:\r
+                void raiseKeys(const QMap<int, bool> &keyState);\r
+\r
+\r
+    public:\r
+               WidgetKeyboard(QWidget *parent = NULL);\r
+               ~WidgetKeyboard();\r
+               void setOpacity(int);\r
+               int getOpacity();\r
+               void setSoundDisabled();\r
+               void setSoundEnabled(QString soundPath);\r
+};\r
+#endif /*__WIDGETKEYBOARD_H_*/\r
diff --git a/WidgetKeyboard/src/WidgetKeyboard.pri b/WidgetKeyboard/src/WidgetKeyboard.pri
new file mode 100644 (file)
index 0000000..de6cb19
--- /dev/null
@@ -0,0 +1,18 @@
+include(../common.pri)\r
+INCLUDEPATH += $$PWD\r
+DEPENDPATH += $$PWD\r
+\r
+WidgetKeyboard-uselib:!WidgetKeyboard-buildlib {\r
+    LIBS += -L$$WIDGETKEYBOARD_LIBDIR -l$$WIDGETKEYBOARD_LIBNAME\r
+} else {\r
+    SOURCES += $$PWD/WidgetKeyboard.cpp\r
+    HEADERS += $$PWD/WidgetKeyboard.h\r
+    FORMS += $$PWD/WidgetKeyboard.ui\r
+    RESOURCES += $$PWD/WidgetKeyboard.qrc\r
+}\r
+\r
+win32 {\r
+    contains(TEMPLATE, lib):contains(CONFIG, shared):DEFINES += WIDGETKEYBOARD_EXPORT\r
+    else:WidgetKeyboard-uselib:DEFINES += WIDGETKEYBOARD_IMPORT\r
+}\r
+\r
diff --git a/WidgetKeyboard/src/WidgetKeyboard.qrc b/WidgetKeyboard/src/WidgetKeyboard.qrc
new file mode 100644 (file)
index 0000000..0e66fd3
--- /dev/null
@@ -0,0 +1,8 @@
+<RCC>
+    <qresource prefix="/myresources" >
+        <file alias="downIcon" >res/down.JPG</file>
+        <file alias="leftIcon" >res/left.JPG</file>
+        <file alias="rightIcon" >res/right.JPG</file>
+        <file alias="upIcon" >res/up.JPG</file>
+    </qresource>
+</RCC>
diff --git a/WidgetKeyboard/src/WidgetKeyboard.ui b/WidgetKeyboard/src/WidgetKeyboard.ui
new file mode 100644 (file)
index 0000000..c9311dd
--- /dev/null
@@ -0,0 +1,2654 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>WidgetKeyboard</class>
+ <widget class="QWidget" name="WidgetKeyboard">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>780</width>
+    <height>197</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Virtual Keyboard</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout_2" stretch="0">
+   <property name="spacing">
+    <number>2</number>
+   </property>
+   <property name="margin">
+    <number>2</number>
+   </property>
+   <item>
+    <layout class="QGridLayout" name="gridLayout_5" rowstretch="2,9" columnstretch="7,2,2">
+     <item row="0" column="0">
+      <layout class="QHBoxLayout" name="horizontalLayout_9">
+       <property name="spacing">
+        <number>2</number>
+       </property>
+       <item>
+        <widget class="QToolButton" name="btnEsc">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="font">
+          <font>
+           <pointsize>12</pointsize>
+          </font>
+         </property>
+         <property name="accessibleName">
+          <string>0x01000000</string>
+         </property>
+         <property name="accessibleDescription">
+          <string/>
+         </property>
+         <property name="text">
+          <string>Esc</string>
+         </property>
+         <property name="autoRepeat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="horizontalSpacer">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>50</width>
+           <height>22</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <layout class="QHBoxLayout" name="horizontalLayout_6">
+         <property name="spacing">
+          <number>2</number>
+         </property>
+         <item>
+          <widget class="QToolButton" name="btnF1">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x01000030</string>
+           </property>
+           <property name="text">
+            <string>F1</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnF2">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x01000031</string>
+           </property>
+           <property name="text">
+            <string>F2</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnF3">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x01000032</string>
+           </property>
+           <property name="text">
+            <string>F3</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnF4">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x01000033</string>
+           </property>
+           <property name="text">
+            <string>F4</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+       <item>
+        <spacer name="horizontalSpacer_2">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>50</width>
+           <height>16</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <layout class="QHBoxLayout" name="horizontalLayout_7">
+         <property name="spacing">
+          <number>2</number>
+         </property>
+         <item>
+          <widget class="QToolButton" name="btnF5">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x01000034</string>
+           </property>
+           <property name="text">
+            <string>F5</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnF6">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x01000035</string>
+           </property>
+           <property name="text">
+            <string>F6</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnF7">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string notr="true">0x01000036</string>
+           </property>
+           <property name="text">
+            <string>F7</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnF8">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>8</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x01000037</string>
+           </property>
+           <property name="text">
+            <string>F8</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+       <item>
+        <spacer name="horizontalSpacer_3">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>50</width>
+           <height>17</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <layout class="QHBoxLayout" name="horizontalLayout_8">
+         <property name="spacing">
+          <number>2</number>
+         </property>
+         <item>
+          <widget class="QToolButton" name="btnF9">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x01000038</string>
+           </property>
+           <property name="text">
+            <string>F9</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnF10">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x01000039</string>
+           </property>
+           <property name="text">
+            <string>F10</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnF11">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x0100003a</string>
+           </property>
+           <property name="text">
+            <string>F11</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnF12">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x0100003b</string>
+           </property>
+           <property name="text">
+            <string>F12</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+      </layout>
+     </item>
+     <item row="0" column="1">
+      <layout class="QHBoxLayout" name="horizontalLayout_10">
+       <property name="spacing">
+        <number>3</number>
+       </property>
+       <item>
+        <widget class="QToolButton" name="btnPrint">
+         <property name="enabled">
+          <bool>true</bool>
+         </property>
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="font">
+          <font>
+           <pointsize>12</pointsize>
+          </font>
+         </property>
+         <property name="accessibleName">
+          <string>0x01000009</string>
+         </property>
+         <property name="text">
+          <string>Print
+Screen</string>
+         </property>
+         <property name="autoRepeat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QToolButton" name="btnHome_2">
+         <property name="enabled">
+          <bool>false</bool>
+         </property>
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="font">
+          <font>
+           <pointsize>12</pointsize>
+          </font>
+         </property>
+         <property name="accessibleName">
+          <string>0x01000026</string>
+         </property>
+         <property name="text">
+          <string>Scroll
+Lock</string>
+         </property>
+         <property name="autoRepeat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QToolButton" name="btnPgU_2">
+         <property name="enabled">
+          <bool>false</bool>
+         </property>
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="font">
+          <font>
+           <pointsize>12</pointsize>
+          </font>
+         </property>
+         <property name="accessibleName">
+          <string>0x01000008</string>
+         </property>
+         <property name="text">
+          <string>Pause
+Break</string>
+         </property>
+         <property name="autoRepeat">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item row="1" column="1">
+      <layout class="QVBoxLayout" name="verticalLayout">
+       <item>
+        <layout class="QGridLayout" name="gridLayout">
+         <property name="horizontalSpacing">
+          <number>3</number>
+         </property>
+         <property name="verticalSpacing">
+          <number>0</number>
+         </property>
+         <item row="0" column="0">
+          <widget class="QToolButton" name="btnIns">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x01000006</string>
+           </property>
+           <property name="text">
+            <string>Insert</string>
+           </property>
+           <property name="checkable">
+            <bool>false</bool>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item row="0" column="1">
+          <widget class="QToolButton" name="btnHome">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x01000010</string>
+           </property>
+           <property name="text">
+            <string>Home</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item row="0" column="2">
+          <widget class="QToolButton" name="btnPgU">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x01000016</string>
+           </property>
+           <property name="text">
+            <string>PgUP</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="0">
+          <widget class="QToolButton" name="btnDel">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x01000007</string>
+           </property>
+           <property name="text">
+            <string>Delete</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="1">
+          <widget class="QToolButton" name="btnEnd">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x01000011</string>
+           </property>
+           <property name="text">
+            <string>End</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="2">
+          <widget class="QToolButton" name="btnPgD">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x01000017</string>
+           </property>
+           <property name="text">
+            <string>PgDn</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+       <item>
+        <widget class="QCheckBox" name="checkBoxShowNumPad">
+         <property name="text">
+          <string>Show Numeric Keypad</string>
+         </property>
+         <property name="checked">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="verticalSpacer">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>40</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <layout class="QGridLayout" name="gridLayout_2">
+         <item row="0" column="1">
+          <widget class="QToolButton" name="btnArrowU">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>8</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x01000013</string>
+           </property>
+           <property name="text">
+            <string/>
+           </property>
+           <property name="icon">
+            <iconset resource="WidgetKeyboard.qrc">
+             <normaloff>:/myresources/upIcon</normaloff>:/myresources/upIcon</iconset>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="0">
+          <widget class="QToolButton" name="btnArrowL">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>8</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x01000012</string>
+           </property>
+           <property name="text">
+            <string/>
+           </property>
+           <property name="icon">
+            <iconset resource="WidgetKeyboard.qrc">
+             <normaloff>:/myresources/leftIcon</normaloff>:/myresources/leftIcon</iconset>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="1">
+          <widget class="QToolButton" name="btnArrowD">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>8</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x01000015</string>
+           </property>
+           <property name="text">
+            <string/>
+           </property>
+           <property name="icon">
+            <iconset resource="WidgetKeyboard.qrc">
+             <normaloff>:/myresources/downIcon</normaloff>:/myresources/downIcon</iconset>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="2">
+          <widget class="QToolButton" name="btnArrowR">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>8</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x01000014</string>
+           </property>
+           <property name="text">
+            <string/>
+           </property>
+           <property name="icon">
+            <iconset resource="WidgetKeyboard.qrc">
+             <normaloff>:/myresources/rightIcon</normaloff>:/myresources/rightIcon</iconset>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+      </layout>
+     </item>
+     <item row="1" column="0">
+      <layout class="QGridLayout" name="gridLayout_3">
+       <property name="spacing">
+        <number>3</number>
+       </property>
+       <item row="0" column="0">
+        <layout class="QHBoxLayout" name="horizontalLayout">
+         <property name="spacing">
+          <number>0</number>
+         </property>
+         <item>
+          <widget class="QToolButton" name="btnTilt">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x60</string>
+           </property>
+           <property name="text">
+            <string>`</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btn1">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x31</string>
+           </property>
+           <property name="text">
+            <string>1</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btn2">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x32</string>
+           </property>
+           <property name="text">
+            <string>2</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btn3">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x33</string>
+           </property>
+           <property name="text">
+            <string>3</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btn4">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x34</string>
+           </property>
+           <property name="text">
+            <string>4</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btn5">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x35</string>
+           </property>
+           <property name="text">
+            <string>5</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btn6">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x36</string>
+           </property>
+           <property name="text">
+            <string>6</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btn7">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x37</string>
+           </property>
+           <property name="text">
+            <string>7</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btn8">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x38</string>
+           </property>
+           <property name="text">
+            <string>8</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btn9">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x39</string>
+           </property>
+           <property name="text">
+            <string>9</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btn0">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x30</string>
+           </property>
+           <property name="text">
+            <string>0</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnHiphen">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x2d</string>
+           </property>
+           <property name="text">
+            <string>-</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnAssign">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>13</string>
+           </property>
+           <property name="text">
+            <string>=</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnBackSpace">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x01000003</string>
+           </property>
+           <property name="text">
+            <string>Backspace</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+       <item row="2" column="0">
+        <layout class="QHBoxLayout" name="horizontalLayout_3">
+         <property name="spacing">
+          <number>0</number>
+         </property>
+         <item>
+          <widget class="QToolButton" name="btnCaps">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x01000024</string>
+           </property>
+           <property name="text">
+            <string>    Caps   </string>
+           </property>
+           <property name="checkable">
+            <bool>true</bool>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnA">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x41</string>
+           </property>
+           <property name="text">
+            <string>A</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnS">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x53</string>
+           </property>
+           <property name="text">
+            <string>S</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnD">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x44</string>
+           </property>
+           <property name="text">
+            <string>D</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnF">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x46</string>
+           </property>
+           <property name="text">
+            <string>F</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnG">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x47</string>
+           </property>
+           <property name="text">
+            <string>G</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnH">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x48</string>
+           </property>
+           <property name="text">
+            <string>H</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnJ">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x4a</string>
+           </property>
+           <property name="text">
+            <string>J</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnK">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x4b</string>
+           </property>
+           <property name="text">
+            <string>K</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnL">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x4c</string>
+           </property>
+           <property name="text">
+            <string>L</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnSemiColon">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x3b</string>
+           </property>
+           <property name="text">
+            <string>;</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnSp">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x27</string>
+           </property>
+           <property name="text">
+            <string>'</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnReturn">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x01000004</string>
+           </property>
+           <property name="text">
+            <string>    Return   </string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+       <item row="3" column="0">
+        <layout class="QHBoxLayout" name="horizontalLayout_4">
+         <property name="spacing">
+          <number>0</number>
+         </property>
+         <item>
+          <widget class="QToolButton" name="btnShiftLeft">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x01000020</string>
+           </property>
+           <property name="text">
+            <string>     Shift     </string>
+           </property>
+           <property name="checkable">
+            <bool>true</bool>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnZ">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x5a</string>
+           </property>
+           <property name="text">
+            <string>Z</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnX">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x58</string>
+           </property>
+           <property name="text">
+            <string>X</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnC">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x43</string>
+           </property>
+           <property name="text">
+            <string>C</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnV">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x56</string>
+           </property>
+           <property name="text">
+            <string>V</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnB">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x42</string>
+           </property>
+           <property name="text">
+            <string>B</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnN">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x4e</string>
+           </property>
+           <property name="text">
+            <string>N</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnM">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x4d</string>
+           </property>
+           <property name="text">
+            <string>M</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnComma">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x2c</string>
+           </property>
+           <property name="text">
+            <string>,</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnPeriod">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x2e</string>
+           </property>
+           <property name="text">
+            <string>.</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnBcwdSlash">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x2f</string>
+           </property>
+           <property name="text">
+            <string>/</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnShiftRight">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x01000020</string>
+           </property>
+           <property name="text">
+            <string>     Shift      </string>
+           </property>
+           <property name="checkable">
+            <bool>true</bool>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+       <item row="4" column="0">
+        <layout class="QHBoxLayout" name="horizontalLayout_5">
+         <property name="spacing">
+          <number>0</number>
+         </property>
+         <item>
+          <widget class="QToolButton" name="btnCtrlLeft">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x01000021</string>
+           </property>
+           <property name="text">
+            <string>    Ctrl     </string>
+           </property>
+           <property name="checkable">
+            <bool>true</bool>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnAltLeft">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x01000023</string>
+           </property>
+           <property name="text">
+            <string>   Alt  </string>
+           </property>
+           <property name="checkable">
+            <bool>true</bool>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnSpace">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="MinimumExpanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>8</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x20</string>
+           </property>
+           <property name="text">
+            <string/>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QSlider" name="sliderOpacity">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="toolTip">
+            <string>Transparency</string>
+           </property>
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+       <item row="1" column="0">
+        <layout class="QHBoxLayout" name="horizontalLayout_2">
+         <property name="spacing">
+          <number>0</number>
+         </property>
+         <item>
+          <widget class="QToolButton" name="btnTab">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x01000001</string>
+           </property>
+           <property name="text">
+            <string>  Tab   </string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnQ">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x51</string>
+           </property>
+           <property name="text">
+            <string>Q</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnW">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x57</string>
+           </property>
+           <property name="text">
+            <string>W</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnE">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x45</string>
+           </property>
+           <property name="text">
+            <string>E</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnR">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x52</string>
+           </property>
+           <property name="text">
+            <string>R</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnT">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x54</string>
+           </property>
+           <property name="text">
+            <string>T</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnY">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x59</string>
+           </property>
+           <property name="text">
+            <string>Y</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnU">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x55</string>
+           </property>
+           <property name="text">
+            <string>U</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnI">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x49</string>
+           </property>
+           <property name="text">
+            <string>I</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnO">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x4f</string>
+           </property>
+           <property name="text">
+            <string>O</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnP">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x50</string>
+           </property>
+           <property name="text">
+            <string>P</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnStartSquare">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x5b</string>
+           </property>
+           <property name="text">
+            <string>[</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnCloseSquare">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x5d</string>
+           </property>
+           <property name="text">
+            <string>]</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="btnFwdSlash">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <pointsize>12</pointsize>
+            </font>
+           </property>
+           <property name="accessibleName">
+            <string>0x5c</string>
+           </property>
+           <property name="text">
+            <string>\</string>
+           </property>
+           <property name="autoRepeat">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+      </layout>
+     </item>
+     <item row="1" column="2">
+      <widget class="QFrame" name="frameNumPad">
+       <property name="frameShape">
+        <enum>QFrame::NoFrame</enum>
+       </property>
+       <property name="lineWidth">
+        <number>1</number>
+       </property>
+       <layout class="QGridLayout" name="layoutNumPad">
+        <property name="horizontalSpacing">
+         <number>3</number>
+        </property>
+        <property name="verticalSpacing">
+         <number>0</number>
+        </property>
+        <item row="0" column="1">
+         <widget class="QToolButton" name="btnDivide">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="font">
+           <font>
+            <pointsize>12</pointsize>
+           </font>
+          </property>
+          <property name="accessibleName">
+           <string>0x2f</string>
+          </property>
+          <property name="text">
+           <string>  / </string>
+          </property>
+          <property name="autoRepeat">
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="0" column="2">
+         <widget class="QToolButton" name="btnMultiply">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="font">
+           <font>
+            <pointsize>12</pointsize>
+           </font>
+          </property>
+          <property name="accessibleName">
+           <string>0x2a</string>
+          </property>
+          <property name="text">
+           <string> * </string>
+          </property>
+          <property name="autoRepeat">
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="0" column="3">
+         <widget class="QToolButton" name="btnSubtraction">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="font">
+           <font>
+            <pointsize>12</pointsize>
+           </font>
+          </property>
+          <property name="accessibleName">
+           <string>0x2d</string>
+          </property>
+          <property name="text">
+           <string>-</string>
+          </property>
+          <property name="autoRepeat">
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="1" column="0">
+         <widget class="QToolButton" name="btnNum7">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="font">
+           <font>
+            <pointsize>12</pointsize>
+           </font>
+          </property>
+          <property name="accessibleName">
+           <string>0x37</string>
+          </property>
+          <property name="text">
+           <string>7</string>
+          </property>
+          <property name="autoRepeat">
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="1" column="1">
+         <widget class="QToolButton" name="btnNum8">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="font">
+           <font>
+            <pointsize>12</pointsize>
+           </font>
+          </property>
+          <property name="accessibleName">
+           <string>0x38</string>
+          </property>
+          <property name="text">
+           <string>8</string>
+          </property>
+          <property name="autoRepeat">
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="1" column="2">
+         <widget class="QToolButton" name="btnNum9">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="font">
+           <font>
+            <pointsize>12</pointsize>
+           </font>
+          </property>
+          <property name="accessibleName">
+           <string>0x39</string>
+          </property>
+          <property name="text">
+           <string>9</string>
+          </property>
+          <property name="autoRepeat">
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="2" column="0">
+         <widget class="QToolButton" name="btnNum4">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="font">
+           <font>
+            <pointsize>12</pointsize>
+           </font>
+          </property>
+          <property name="accessibleName">
+           <string>0x34</string>
+          </property>
+          <property name="text">
+           <string>4</string>
+          </property>
+          <property name="autoRepeat">
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="2" column="1">
+         <widget class="QToolButton" name="btnNum5">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="font">
+           <font>
+            <pointsize>12</pointsize>
+           </font>
+          </property>
+          <property name="accessibleName">
+           <string>0x35</string>
+          </property>
+          <property name="text">
+           <string>5</string>
+          </property>
+          <property name="autoRepeat">
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="2" column="2">
+         <widget class="QToolButton" name="btnNum6">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="font">
+           <font>
+            <pointsize>12</pointsize>
+           </font>
+          </property>
+          <property name="accessibleName">
+           <string>0x36</string>
+          </property>
+          <property name="text">
+           <string>6</string>
+          </property>
+          <property name="autoRepeat">
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="1" column="3" rowspan="2">
+         <widget class="QToolButton" name="btnSum">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="font">
+           <font>
+            <pointsize>12</pointsize>
+           </font>
+          </property>
+          <property name="accessibleName">
+           <string>0x2b</string>
+          </property>
+          <property name="text">
+           <string>+</string>
+          </property>
+          <property name="autoRepeat">
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="3" column="0">
+         <widget class="QToolButton" name="btnNum1">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="font">
+           <font>
+            <pointsize>12</pointsize>
+           </font>
+          </property>
+          <property name="accessibleName">
+           <string>0x31</string>
+          </property>
+          <property name="text">
+           <string>1</string>
+          </property>
+          <property name="autoRepeat">
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="3" column="1">
+         <widget class="QToolButton" name="btnNum2">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="font">
+           <font>
+            <pointsize>12</pointsize>
+           </font>
+          </property>
+          <property name="accessibleName">
+           <string>0x32</string>
+          </property>
+          <property name="text">
+           <string>2</string>
+          </property>
+          <property name="autoRepeat">
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="3" column="2">
+         <widget class="QToolButton" name="btnNum3">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="font">
+           <font>
+            <pointsize>12</pointsize>
+           </font>
+          </property>
+          <property name="accessibleName">
+           <string>0x33</string>
+          </property>
+          <property name="text">
+           <string>3</string>
+          </property>
+          <property name="autoRepeat">
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="4" column="0" colspan="2">
+         <widget class="QToolButton" name="btnNum0">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="font">
+           <font>
+            <pointsize>12</pointsize>
+           </font>
+          </property>
+          <property name="accessibleName">
+           <string>0x30</string>
+          </property>
+          <property name="text">
+           <string>0</string>
+          </property>
+          <property name="autoRepeat">
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="4" column="2">
+         <widget class="QToolButton" name="btnNumDot">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="font">
+           <font>
+            <pointsize>12</pointsize>
+           </font>
+          </property>
+          <property name="accessibleName">
+           <string>0x2e</string>
+          </property>
+          <property name="text">
+           <string>.</string>
+          </property>
+          <property name="autoRepeat">
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="3" column="3" rowspan="2">
+         <widget class="QToolButton" name="btnEnter">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="font">
+           <font>
+            <pointsize>12</pointsize>
+           </font>
+          </property>
+          <property name="accessibleName">
+           <string>0x01000005</string>
+          </property>
+          <property name="text">
+           <string>Enter</string>
+          </property>
+          <property name="autoRepeat">
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="0" column="0">
+         <widget class="QToolButton" name="btnNumLock">
+          <property name="enabled">
+           <bool>false</bool>
+          </property>
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="font">
+           <font>
+            <pointsize>12</pointsize>
+           </font>
+          </property>
+          <property name="accessibleName">
+           <string>0x01000025</string>
+          </property>
+          <property name="text">
+           <string>Num
+Lock</string>
+          </property>
+          <property name="autoRepeat">
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <resources>
+  <include location="WidgetKeyboard.qrc"/>
+  <include location="WidgetKeyboard.qrc"/>
+ </resources>
+ <connections/>
+</ui>
diff --git a/WidgetKeyboard/src/res/down.JPG b/WidgetKeyboard/src/res/down.JPG
new file mode 100644 (file)
index 0000000..33812e7
Binary files /dev/null and b/WidgetKeyboard/src/res/down.JPG differ
diff --git a/WidgetKeyboard/src/res/left.JPG b/WidgetKeyboard/src/res/left.JPG
new file mode 100644 (file)
index 0000000..261591e
Binary files /dev/null and b/WidgetKeyboard/src/res/left.JPG differ
diff --git a/WidgetKeyboard/src/res/right.JPG b/WidgetKeyboard/src/res/right.JPG
new file mode 100644 (file)
index 0000000..92e1214
Binary files /dev/null and b/WidgetKeyboard/src/res/right.JPG differ
diff --git a/WidgetKeyboard/src/res/up.JPG b/WidgetKeyboard/src/res/up.JPG
new file mode 100644 (file)
index 0000000..cba102a
Binary files /dev/null and b/WidgetKeyboard/src/res/up.JPG differ