determine if the mouse is pressed in a given moment
36 views (last 30 days)
I’m wondering if the Figure class has some (probably hidden) property that expresses if the mouse is pressed (and which button) in the moment that the moment that the property is read. If the figure had an event for button up and down events that would also solve my problem.
I know I could set WindowButtonDownFcn and WindowButtonUpFcn to inform a global variable to keep track on when the mouse is used, but that's deeply unpractical (in my code WindowButtonDownFcn gets changed frequently depending on the actions of the user)
Jan on 19 Sep 2017
Edited: Jan on 19 Sep 2017
It would be easy, if you do not change the WindowButtonDownFcn frequently, but keep it statically and use a persistent variable for branching. Then you had to insert the code to store the button state at one location only.
If you check the button state, you have to consider the currently active window also. You do not want to react to clicks in the task bar or the desktop.
What about https://www.mathworks.com/matlabcentral/fileexchange/61976-check-if-mouse-button-is-pressed under Windows?
[EDITED] The FEX submission is not working out of the box. Try this:
% !!! UNTESTED !!!
function [L, R, M] = GetMouseKeyStatus()
error('Running under Windows only.');
L = calllib('user32', 'GetAsyncKeyState', int32(1)) ~= 0;
R = calllib('user32', 'GetAsyncKeyState', int32(2)) ~= 0;
M = calllib('user32', 'GetAsyncKeyState', int32(4)) ~= 0;
More Answers (1)
Ankit Bhardwaj on 24 Apr 2017
Edited: Ankit Bhardwaj on 24 Apr 2017
You can use ButtonDownFcn callback for your figure. This callback executes whenever the user clicks a mouse button while the pointer is in the figure window, but not over a child object such as a uicontrol, uipanel, axes, or axes child. Moreover, mouse selection type returns 'normal', 'extend' , 'alt' , or 'open'. MATLAB maintains this property to provide information about the last mouse-button press that occurred within the figure window. This information indicates the type of selection made. Please go through the following documentation to learn about callback properties of figure object.