How do I prevent two simultaneous key presses from tabbing away from my GUI?
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Shae Morgan
el 1 de Dic. de 2015
Editada: Shae Morgan
el 8 de Dic. de 2015
I have a gui that allows people to listen to a sentence and then type what they think the sentence said. The problem is, if someone is typing too fast and accidentally presses two keys at the same time, instead of putting both characters in the edit box, it tabs out and goes to the command line in MatLab. How do I prevent this from happening? I'm using the following code to pause while the person types their response until "enter" gets pressed: Any ideas would be helpful
currkey=0;
% do not move on until enter key is pressed
while currkey~=13 %13 is the ascii number for the return character
pause; % wait for a keypress
currChar=get(gcf,'CurrentCharacter');
currkey = double(currChar);
if isempty(currkey)
currkey=0;
else
end
end
Any ideas?
0 comentarios
Respuesta aceptada
Walter Roberson
el 1 de Dic. de 2015
Use a WindowKeyPressFcn callback in the figure instead.
1 comentario
Más respuestas (1)
valdal
el 1 de Dic. de 2015
Editada: valdal
el 1 de Dic. de 2015
With KeyPressFcn and guidata :
h = uicontrol(...);
escape = false
guidata(h,escape)
set(h, 'KeyPressFcn', @key_pressed);
while ~escape
pause(0.01);
escape = guidata(h)
end
function key_pressed(h, e)
if strcmp(e.Key, 'return')
guidata(h, true)
end
end
1 comentario
Walter Roberson
el 1 de Dic. de 2015
Warning: using guidata() like that will destroy your handles structure if you are using GUIDE.
Ver también
Categorías
Más información sobre Entering Commands en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!