Results 1 to 2 of 2

Thread: Virtual Keyboard to website

  1. #1
    Join Date
    Dec 2012
    Posts
    3
    Qt products
    Qt4
    Platforms
    Windows

    Default Virtual Keyboard to website

    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

  2. #2
    Join Date
    Dec 2008
    Location
    Poland
    Posts
    383
    Thanks
    52
    Thanked 42 Times in 42 Posts
    Qt products
    Qt4
    Platforms
    MacOS X Unix/X11 Windows Android

    Default Re: Virtual Keyboard to website

    Your calculations are wrong:

    Qt Code:
    1. //a-z
    2. if (keyname[0].unicode() >= 'a' && keyname[0].unicode() <= 'z')
    3. return (Qt::Key)(Qt::Key_A + keyname[0].unicode() - 'a');
    To copy to clipboard, switch view to plain text mode 

    it equals, for the a, to (dec) 65 + 97 - 65 == 97 == "A"

    Qt Code:
    1. //A-Z
    2. if (keyname[0].unicode() >= 'A' && keyname[0].unicode() <= 'Z')
    3. return (Qt::Key)(Qt::Key_A + keyname[0].unicode() - 'A');
    To copy to clipboard, switch view to plain text mode 
    for the a, it's 65 + 97 - 65 == 97 == "a"

    also why don't You use this for the a-Z0-9?
    Qt Code:
    1. return (Qt::Key)keyname[0].unicode();
    To copy to clipboard, switch view to plain text mode 
    In the near future - corporate networks reach out to the stars. Electrons and light flow throughout the universe.
    The advance of computerization however, has not yet wiped out nations and ethnic groups.

Similar Threads

  1. Virtual Keyboard
    By NoRulez in forum Qt Programming
    Replies: 9
    Last Post: 5th August 2010, 07:02
  2. How to get the virtual keyboard?
    By ramesh.bs in forum Qt for Embedded and Mobile
    Replies: 0
    Last Post: 2nd June 2010, 11:58
  3. Virtual Keyboard?
    By augusbas in forum Qt for Embedded and Mobile
    Replies: 3
    Last Post: 14th July 2009, 08:55
  4. Virtual Keyboard
    By Micawber in forum Qt Programming
    Replies: 1
    Last Post: 3rd September 2007, 19:59
  5. virtual keyboard
    By sar_van81 in forum Qt Programming
    Replies: 5
    Last Post: 22nd December 2006, 13:40

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Digia, Qt and their respective logos are trademarks of Digia Plc in Finland and/or other countries worldwide.