How can I program virtual keyboard so that when we type lower case letter 'a', it will display lower case 'a' on the textbox of the website?

But the problem with the keyboard that I'm handling now, when I type lower case 'a',it will display upper case 'A' on the textbox of the website.

This is the image of the keyboard and also the example website
Keyboard Error.jpg

There is also another problems which led to functionality of the keyboard.
The symbol and number is not working.
When I click number it does not, show any number but when I clicked symbol, some different things came out.
SYmbol error.jpg

Here is keyboard.cpp file

Qt Code:
  1. #include "keyboard.h"
  2. #include <QEvent>
  3. #include <QKeyEvent>
  4. #include <QApplication>
  5.  
  6. Keyboard::Keyboard(QObject *parent) : QObject(parent)
  7. {
  8. theWidget = NULL;
  9. }
  10.  
  11. void Keyboard::setWidget(QWidget* theWidget)
  12. {
  13. this->theWidget = theWidget;
  14. }
  15.  
  16. void Keyboard::simulateKey(QString keyName)
  17. {
  18. Qt::Key keycode = getKeyCodeFromName(keyName);
  19. if (keycode == Qt::Key_unknown || this->theWidget == NULL)
  20. return;
  21.  
  22. //A-Z
  23. if (keyName.length() == 1 && keyName[0].unicode() >= 'A' && keyName[0].unicode() <= 'Z')
  24. {
  25. QKeyEvent keyPressEvent(QEvent::KeyPress, keycode, Qt::ShiftModifier);
  26. QApplication::sendEvent(this->theWidget, &keyPressEvent);
  27.  
  28. QKeyEvent keyReleaseEvent(QEvent::KeyRelease, keycode, Qt::ShiftModifier);
  29. QApplication::sendEvent(this->theWidget, &keyReleaseEvent);
  30. }
  31. else
  32. {
  33. QKeyEvent keyPressEvent(QEvent::KeyPress, keycode, Qt::NoModifier);
  34. QApplication::sendEvent(this->theWidget, &keyPressEvent);
  35.  
  36. QKeyEvent keyReleaseEvent(QEvent::KeyRelease, keycode, Qt::NoModifier);
  37. QApplication::sendEvent(this->theWidget, &keyReleaseEvent);
  38. }
  39.  
  40. qDebug("Simulating key: %s", qPrintable(keyName));
  41. }
  42.  
  43. Qt::Key Keyboard::getKeyCodeFromName(QString keyname)
  44. {
  45. keyname = keyname.toLower();
  46. if (keyname.length() < 1)
  47. return Qt::Key_unknown;
  48.  
  49. if (keyname == "left") return Qt::Key_Left;
  50. else if (keyname == "right") return Qt::Key_Right;
  51. else if (keyname == "up") return Qt::Key_Up;
  52. else if (keyname == "down") return Qt::Key_Down;
  53. else if (keyname == "center") return Qt::Key_Enter;
  54. else if (keyname == "enter") return Qt::Key_Enter;
  55. else if (keyname == "tab") return Qt::Key_Tab;
  56. else if (keyname == "\n") return Qt::Key_Enter;
  57. else if (keyname == "cpanel") return Qt::Key_PageUp;
  58. else if (keyname == "widget") return Qt::Key_PageDown;
  59. else if (keyname == "pgup") return Qt::Key_PageUp;
  60. else if (keyname == "pgdown") return Qt::Key_PageDown;
  61. else if (keyname == "pageup") return Qt::Key_PageUp;
  62. else if (keyname == "pagedown") return Qt::Key_PageDown;
  63.  
  64. else if (keyname == "esc") return Qt::Key_Escape;
  65. else if (keyname == "del") return Qt::Key_Delete;
  66. else if (keyname == "delete") return Qt::Key_Delete;
  67. else if (keyname == "backspace") return Qt::Key_Backspace;
  68. else if (keyname == "space") return Qt::Key_Space;
  69. else if (keyname == " ") return Qt::Key_Space;
  70. else if (keyname == "+") return Qt::Key_Plus;
  71. else if (keyname == "-") return Qt::Key_Minus;
  72. else if (keyname == "*") return Qt::Key_Asterisk;
  73. else if (keyname == "/") return Qt::Key_Slash;
  74. else if (keyname == "\\") return Qt::Key_Backslash;
  75. else if (keyname == ".") return Qt::Key_Period;
  76. else if (keyname == ",") return Qt::Key_Comma;
  77. else if (keyname == "?") return Qt::Key_Question;
  78. else if (keyname == "<") return Qt::Key_Less;
  79. else if (keyname == ">") return Qt::Key_Greater;
  80. else if (keyname == "=") return Qt::Key_Equal;
  81. else if (keyname == "@") return Qt::Key_At;
  82. else if (keyname == "!") return Qt::Key_Exclam;
  83. else if (keyname == "%") return Qt::Key_Percent;
  84. else if (keyname == "$") return Qt::Key_Dollar;
  85. else if (keyname == ":") return Qt::Key_Colon;
  86. else if (keyname == ";") return Qt::Key_Semicolon;
  87. else if (keyname == "(") return Qt::Key_BracketLeft;
  88. else if (keyname == ")") return Qt::Key_BracketRight;
  89. else if (keyname == "{") return Qt::Key_BraceLeft;
  90. else if (keyname == "}") return Qt::Key_BraceRight;
  91. else if (keyname == "\"") return Qt::Key_QuoteDbl;
  92. else if (keyname == "volup") return Qt::Key_VolumeUp;
  93. else if (keyname == "voldown") return Qt::Key_VolumeDown;
  94. else if (keyname == "mute") return Qt::Key_VolumeMute;
  95. else if (keyname == "search") return Qt::Key_Search;
  96. else if (keyname == "menu") return Qt::Key_Menu;
  97.  
  98. else if (keyname.length() >= 2)
  99. {
  100. if (keyname.startsWith('f'))
  101. {
  102. bool convertOK = false;
  103. keyname = keyname.right(keyname.length()-1);
  104. int findex = keyname.toInt(&convertOK);
  105. if (convertOK)
  106. return (Qt::Key)(Qt::Key_F1 + (findex-1));
  107. }
  108. }
  109. else
  110. {
  111. //a-z
  112. if (keyname[0].unicode() >= 'a' && keyname[0].unicode() <= 'z')
  113. return (Qt::Key)(Qt::Key_A + keyname[0].unicode() - 'a');
  114.  
  115. //A-Z
  116. if (keyname[0].unicode() >= 'A' && keyname[0].unicode() <= 'Z')
  117. return (Qt::Key)(Qt::Key_A + keyname[0].unicode() - 'A');
  118.  
  119. if (keyname[0].unicode() >= '0' && keyname[0].unicode() <= '9')
  120. return (Qt::Key)(Qt::Key_0 + keyname[0].unicode() - 'a');
  121. }
  122.  
  123. return Qt::Key_unknown;
  124. }
To copy to clipboard, switch view to plain text mode 


Here is the keyboard.h file


Qt Code:
  1. #ifndef KEYBOARD_H
  2. #define KEYBOARD_H
  3.  
  4. #include <QObject>
  5. #include <QWidget>
  6.  
  7. class Keyboard : public QObject
  8. {
  9. Q_OBJECT
  10.  
  11. public:
  12.  
  13. Keyboard(QObject *parent = NULL);
  14.  
  15. void setWidget(QWidget*);
  16.  
  17. Q_INVOKABLE void simulateKey(QString keyName);
  18.  
  19. private:
  20.  
  21. QWidget* theWidget;
  22.  
  23. Qt::Key getKeyCodeFromName(QString keyname);
  24.  
  25. };
  26.  
  27. #endif // KEYBOARD_H
To copy to clipboard, switch view to plain text mode 

I hope someone can help me to solve this problem.
Thank you