Calendar Latest Topics
 
 
 


Reply
  Author   Comment  
Edward

Administrator
Registered:
Posts: 260
Reply with quote  #1 
What is MLHELPER_OFF and how/when can we use it?
0
Edward

Administrator
Registered:
Posts: 260
Reply with quote  #2 

I think I figured out most of what's going on with clicking and other mouse interactions causing problems...

There is a binary program that ships with ML called mlhelper.exe, we do not have the source code to it, but that's superfluous. If you run cmd c:\...\mlhelper.exe you will get a list of options that explain how this program works. Basically, it globally disables or enables the (mouse) cursor, as well as its clicks. This program has a global impact on the operating system.

In order for mlhelper to work properly ML needs to know the correct path to to it, hence the directory preferences play an important role (see the other thread discussing directories). 

By default, MonkeyLogic will run 'mlhelper.exe --cursor-disable' automatically as soon as you start running trials. When you're done (hit 'q' for quit), ML will run mlhelper --cursor-enable. If there is a problem with your directory path, mlhelper won't execute. This will inadvertently allow users to click out of the behavior window while trials are running, which will cascade into a crash, and the results window will never appear. Also, a warning that mlhelper can't be found will appear in the matlab command window.

To make matters more complicated, mlhelper only affects the (mouse) cursor and not the keyboard. Key strokes are handled separately by the mlkbd.m file (kbdinit function). Those are likewise disabled by default. 

The user is given an option the ML main menu, called Advanced - > Enable Mouse / System Keys. When this option is turned on, MLHELPER is circumvented. Therefore cursor interaction/clicking is allowed. When the user (intentionally or accidentally) clicks in/outside the ML window (which is technically against the rules), this causes DirectX full screen mode to crash, cascading into a ML global crash. As a lasting result, the keyboard handler kbdrelease may never get called, so the user loses control of the keyboard until they restart matlab. That's a major drag. A hack for this is to keep the command 'kbdrelease' in your matlab's command history, which you can then easily double click on with your mouse, and thereby manually restore your keyboard without restarting matlab.

Also, worth noting is that the the Advanced - > Enable Mouse / System Keys function is saved as part of the conditions files, not settings file. So when starting ML this option is always disabled. Only after you load your conditions file, the option may become enabled from that point on. Conditions files are never automatically loaded either. There is no cue that this option is enabled; you need to manually see if the check mark is placed in the menu.

Stay tuned for more information on this.



0
Edward

Administrator
Registered:
Posts: 260
Reply with quote  #3 

Ctrl + Alt + Shift + Q:  This will cause mlhelper to release the keyboard and mouse and exit.  This should only be used when monkeylogic crashes entirely in a way that doesn't tell mlhelper to stop running 

Ctrl + Alt + Shift + T:  This will cause mlhelper to toggle between completely releasing the keyboard and mouse, and re-disabling whatever was disabled before the toggle was performed (by pressing the keystroke again).

0
Wael.Asaad

Administrator
Registered:
Posts: 51
Reply with quote  #4 
I believe mlhelper was written by someone in Dave Freedman's lab, so he may have the source code.
0
Previous Topic | Next Topic
Print
Reply

Quick Navigation:

Easily create a Forum Website with Website Toolbox.