Making a touchscreen keyboard using GUIDE pushbuttons

Any help on this topic would be appreciated. I need this in the next 18 hours!
I am trying to create a GUI which has an edittext box and when you click on it, a keyboard made of pushbuttons pops up.
I want to know how to get this keyboard to work. One problem I am having is that it does not pop up immediately when I click the edittext, I have to press enter to make it come.
I'd like the keyboard to update the edittext box on the original GUI as I press the buttons!

 Accepted Answer

I just answered something similar last week:
As for getting the editbox to poof the new window, you might have to use a regular textbox's 'ButtonDownFcn'. This is because an editbox will allow you to edit with the keyboard on click where a textbox gives you the ability program what happens when you click on it.

7 Comments

Kunal
Kunal on 22 Apr 2013
Edited: Kunal on 22 Apr 2013
This came up on my Google search but it made little sense to me. I am not very experienced with MATLAB, I have experience with C and Java.
Will all that code be in the calling GUI, or in the keyboard GUI? Also, how can I make this work with my existing pushbuttons keyboard?
Edit: I would like the code to work from the keyboard GUI because I have multiple editboxes and multiple GUIs which all access the same keyboard.
This is all in one GUI, it will be your job to break it into two. The thought process is the same though. To run it, simply save the file to the name of the function and run that name at the command line:
>>OnScreenKeyboard
Could you explain the function AddLetter to me?
function AddLetter(letter)
%Called when letter pressed
%Add letter to string
set(hEdit,'string',strcat(get(hEdit,'string'),letter));
drawnow;
%NOTE: Obviously, you'll need to add features here such as
%backspace etc.
end
It takes in the letter to add. Then it adds it to the end of the current string and sets the current string to be the new one. The drawnow is just to make sure this happens. Since it's a nested function, it has access to any variables in the parent function, this is how it knows about hEdit
Kunal
Kunal on 22 Apr 2013
Edited: Kunal on 22 Apr 2013
OK I figured it out. Thanks a lot! It works perfect.
One last problem. How can I return the entire string from the keyboard .m file to the GUI to display in the edittext box?
I started by adding this to the keyboard function- function str = OnScreenKeyboard
and in the GUI, I have str = OnScreenKeyboard; set(edit2,'String',str); where edit2 is the edittext box.
Should I code an Enter button which would tell the GUI that I am done typing now and now you should update edittext?
That would be one way. Another would be to define str first. And then set it to the string of the edit box after. This will create str in the workspace:
str = strcat(etc,letter)
set(hEdit,'str',str)
You will still likely need a uiwait on the figure to wait until either a button is pressed to indicate that the user is done typing or the figure is closed.
One last problem. AddLetter has the complete string. How do I pass it from AddLetter to OnScreenKeyboard? I used a global in OSK and changed it in AL to keep track of the main string, but I can't find a way to set OSC's output variable equal to this global.
% code
function [str] = OnScreenKeyboard
global str2;
str2 = '';
and then inside AddLetter
% code
str2 = strcat(str2,letter);
and then right outside AddLetter
% code
str = str2;
but the problem is the control of the program never reaches that last statement, so str is always ''

Sign in to comment.

More Answers (0)

Categories

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!