--- /dev/null
+\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
--- /dev/null
+<?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
--- /dev/null
+<?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
--- /dev/null
+#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
--- /dev/null
+#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
--- /dev/null
+<RCC>\r
+ <qresource prefix="KeyboardDebug">\r
+ </qresource>\r
+</RCC>\r
--- /dev/null
+<?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
--- /dev/null
+#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
--- /dev/null
+\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
--- /dev/null
+TEMPLATE=subdirs\r
+CONFIG += ordered\r
+include(common.pri)\r
+WidgetKeyboard-uselib:SUBDIRS=buildlib\r
+SUBDIRS+=example\r
--- /dev/null
+<?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
--- /dev/null
+<?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
--- /dev/null
+<?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
--- /dev/null
+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
--- /dev/null
+#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);
+}
--- /dev/null
+#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
--- /dev/null
+#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(){}
--- /dev/null
+#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
--- /dev/null
+#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);
+}
--- /dev/null
+#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
--- /dev/null
+/*\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
--- /dev/null
+#include "MenuBar.h"
+
+MenuBar::MenuBar()
+{
+ this->menubar = new QMenuBar()
+}
+
+void buildMenuBar(){
+
+}
--- /dev/null
+#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();}
+
+
+
+
--- /dev/null
+#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
--- /dev/null
+/*\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
--- /dev/null
+/*\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
--- /dev/null
+<?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
--- /dev/null
+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
--- /dev/null
+<RCC>
+ <qresource prefix="/">
+ <file>grey.png</file>
+ <file>blue.png</file>
+ </qresource>
+</RCC>
--- /dev/null
+/*\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
--- /dev/null
+/*\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
--- /dev/null
+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
--- /dev/null
+<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>
--- /dev/null
+<?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>