HAYDi:EyeTribe, Desktop and Start Screen Control Software

All development related discussions that does not concern a specific programming language. For example, JSON data format, server communication etc.

HAYDi:EyeTribe, Desktop and Start Screen Control Software

Postby Memo » 16 Apr 2015, 17:03

Hello Developers,

HAYDi:EyeTribe has been written for to know better EyeTribe device functions and discover its possible futures. This program is a prototype software and shared in the hope that it will be useful to EyeTribe programmers community, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Name and Version: HAYDi:EyeTribe 0.1 BETA
Requirements: Windows 7/8/8.1 64bit, recommended a fast CPU like i7, EyeTribe, Admin Rights
Compatible: Desktop and Start Screen
Shortcuts: Ctrl-Alt-M for show/hide the software, Shift-M for enable Mouse Cursor (the same shortcut as in the EyeTribe), ESC for exit program
Setup: Not required, can run from any local place including memory sticks
Known Problems: Calibration part has not written yet, use EyeTribe's calibration software. If connection drops, you need to restart the software since this part has not written also. Dragging function only works with Fixed Look Mouse Cursor.

What things are considered?: Handicapped people computer accessibility, complete control with no need a keyboard and a mouse, small size, not changing/adding anything to Windows itself, run as a service, portability together with EyeTribe Server, customizable, transparent to user and system (hidden working - no Show in the taskbar or ALT-TAB window).

When you run the software, the UAC will warn you. Because of I use OSK and Magnifier of Windows, need to have Admin Rights.

Image

There are three solutions for UAC.
1. The software needs to be certificated. (Cost money and time)
2. Disable the UAC control (not recommended for security reasons)

Image

3. There is an unusual way to pass UAC but it's not a proper solution. I do not like to use it.

So, for this beta software you should accept UAC warning and click Yes to continue for now.

Image

Main Tab:
The calibration service is not ready yet. Most of Status Service Reports are meaningful for programmers only. Except the first 3 item, rest of the report items are refreshed in the real time.

Image

Tools Tab:
Tools tab is also good for programmers. You have an option to save all mutual communication and explanations to a file in your My Documents folder.

Image

Functions Tab:
Mouse Cursor: Mouse pointer may fallow left/right/both eye of raw/average values. Shift-M enables or disables this function in anytime. You may switch on/off the mouse cursor function by closing your both eye for a defined seconds. Sound feedback option is available. Position Tooltip is good for programmers. It gives you the current mouse X/Y coordinates just under the mouse pointer (Desktop Screen Only).

Mouse Click: Your options are: 1.No Click, 2.Fixed Look, 3. Winking Left or Right Eye. Select appropriate option for your needs. If you select Change Mouse Cursor Shape Until Clicked option, than mouse cursor will be changed to Hand Point Icon after a period of time to give you a visual feedback that click time is coming. If you using Fixed Look and change your eyes focus to another point of screen after hand icon, mouse click will be cancelled. So you should keep steady your eyes in focus that your selected point for the chosen seconds (Fixed Look Only). If you are using Winking, there is no chance to cancel clicking. On the other hand you do not need to be keep focus at the click point, since mouse cursor will not move and stays on the click point until click operation finished. Another important point for winking is; click operation starts with when you close your eye, stops with when you open your eye. After the click operation, mouse pointer flies to the most current position.

On Screen Keyboard (OSK): This was one of my most enjoyed function. When you looked your computer keyboard, windows on screen keyboard comes to your screen. When you look your keyboard again, it disappears like you tell it 'abracadabra'... I had written several OSK and AAC keyboards before, but this time I choose to use Windows OSK. Using Windows OSK has its pros and cons. It is one of the Microsoft's undocumented and DirectUI used programs. Controlling it is a tough job since it works like a one button/control. Don't forget to select click buttons option in the Windows OSK. You may try other options for your needs as well.

Virtual Buttons: This is the second part of the program which I quite enjoyed while I was writing. Just imagine that as if there are virtual buttons around your screen. Check out below picture for better understanding.

Image

When you looked a particular virtual button for amount of trigger time, it becomes functional. You can define these button positions by changing distance factor from the screen.
Left buttons sends Page Down or Page Up commands to the active application. These buttons are very useful for PDF readings or web surfing. They are also good for Start Screen menu pages navigation.
Top Left virtual button is for Windows Magnifier application. Many of us, complaining about sharp eye gaze pointing. If you are using a Full HD screen with smaller icons, it is almost impossible to select and click a button. Magnifier greatly helps for this kind of situations. You can zoom in and out by looking middle or right top virtual buttons at any time.

Image

Above picture has both magnifier and osk together. There are a lot of magnifier options. Play with them to find exact settings for your needs. I have no experience with strabismus and nistagmus, but I guess magnifier option may help for these situations (informative comments are welcome).

Right Top Virtual Button is for switching between Desktop and Start Screen. Actually I wanted this button for task switcher, but Microsoft changed the game rule again. Unfortunately TAB switching is not allowed from any software after Windows 8.1 but Windows OSK. You can directly hit to taskbar to change active application or use Windows OSK (Ctrl-Alt-Tab or Win-T).

Right Bottom virtual button is a tri-state button and used for dragging. If it is in checked state, dragging is one time functional. In other words, you should select virtual drag button (screen right bottom) again to use this function. If it is in dotted state, then dragging function keeps continue ON until you switch off again by looking to its virtual button. Dotted state is absolutely necessary if you are using a Drawing/CAD/CAM Software. Besides; arranging, moving and resizing windows in both desktop and start screen types, you need to select dotted state. Dragging function starts/stops by your fixed look, after you activated by its virtual button. This means dragging function is only available for Fixed Look function for now.

Image

You already know the server options. There are only two checkbox options may need to be explained.
Show Server Window: If it is checked, the EyeTribe Server output command window stays visible. For a total invisible using let it unchecked. The drawback is you can't bring down the EyeTribe Server by close button, since you can't see it. Only way is using Task Manager or System Restart.
Server Push Mode: Without checking this, you can't use any functions in the Function Tab.

Image
Legality things and other stuff...

Download Files Location:
https://www.dropbox.com/s/a6ze0lv4758iskl/HAYDiEyeTribe.exe?dl=0
https://www.dropbox.com/s/7r6ooh5w13acb2l/HAYDiEyeTribe.ini?dl=0

A tip for developers: I don't know what you are thinking about JSON data decoders but I didn't happy which I tested several ones. Their results are between 4-6ms for a regular frame data decoding. These results were too much, so I decided to use regular expressions to decode EyeTribe Server data and I get around 0,060-0,20ms with my computer, even without making any optimization in my regex codes. I know using regular expressions is not an easy and error prone job but the result is great.

Last word: I had some troubles with EyeTribe device about keeping steady on my notebook. Then I decided to design a holder for it. If you have the same problem, you may use my solution here http://theeyetribe.com/forum/viewtopic.php?f=8&t=426&sid=44476b8bf6e0086817e6b35879429b15

Note: "HAYDi" means "come on, what are waiting for just do it, just start, do it now" in Turkish and pronunciation is like "HEIDI".
Last edited by Memo on 17 Apr 2015, 05:51, edited 3 times in total.
I design special computer access devices for people with disabilities. I simply trying to “Enable People”…
User avatar
Memo
 
Posts: 15
Joined: 18 Dec 2014, 17:11
Location: Istanbul

Re: HAYDi:EyeTribe, Desktop and Start Screen Control Softwar

Postby JeffKang » 17 Apr 2015, 00:01

Thanks for this!
JeffKang
 
Posts: 129
Joined: 15 Feb 2014, 23:59

Re: HAYDi:EyeTribe, Desktop and Start Screen Control Softwar

Postby Martin » 17 Apr 2015, 11:08

Hi Memo,

Really nice, thanks for sharing!

Are you developing this in C#?

What's the plan for the future?
Martin
 
Posts: 567
Joined: 29 Oct 2013, 15:20

Re: HAYDi:EyeTribe, Desktop and Start Screen Control Softwar

Postby turkals » 21 Apr 2015, 13:14

Hi memo,
this is the most comprehensive beta software I've ever known who use eyetribe users who physically handicapped. Thanks for your efforts. I would like to see "pause" function:) I will test it and back for comment.
Best
turkals
 
Posts: 2
Joined: 18 Dec 2013, 12:57

Re: HAYDi:EyeTribe, Desktop and Start Screen Control Softwar

Postby Memo » 27 Apr 2015, 17:38

turkals@gmail.com wrote:Hi memo,
this is the most comprehensive beta software I've ever known who use eyetribe users who physically handicapped. Thanks for your efforts. I would like to see "pause" function:) I will test it and back for comment.
Best


I guess you are talking about something like MyTobii's EyeGaze "pause" function. I thing, HAYDi:EyeTribe has a similar "pause" function. When you close your both eye for a predefined time, Mouse Cursor and all the other functions stops. When you close your both eye for the predefined time again, Mouse Cursor and all the other functions become functional again. You may consider this as "pause" function you requested.

Please let me know, if that is not your expected function...
I design special computer access devices for people with disabilities. I simply trying to “Enable People”…
User avatar
Memo
 
Posts: 15
Joined: 18 Dec 2014, 17:11
Location: Istanbul

Re: HAYDi:EyeTribe, Desktop and Start Screen Control Softwar

Postby ay.fahrettin » 25 Jun 2015, 00:10

Hi Memo,

It is really a great job. I am also trying to develop such a project that controls windows onscreen keyboard. However, it is not simple as i though. I wonder how you achieved sending mouse clicks to keyboard. I tried a kind of windows api that makes mouse click wherever cursor is on, and also another windows api that sends a input message to the operating system like a keyboard keypress or mouse click message. Unfortunately, both methods did not work for me.

Is it possible to learn how you did this ?
ay.fahrettin
 
Posts: 3
Joined: 24 May 2015, 12:22

Re: HAYDi:EyeTribe, Desktop and Start Screen Control Softwar

Postby Memo » 25 Jun 2015, 10:52

Can you be more specific?

If you are using one of a modern language, you can send a mouse click, key or a message to other windows. There are tons of samples and guides in the net for almost every language. If you can share your code (no matter which language), It will be much easier to solve your problem.

Without any details, I can only suggest general possibilities listed below.
1. Because of security reasons, using virtually Windows OSK requires Admin Rights. If you don't want to obtain this, you need to write your own OSK and run your program asInvoker.
2. Make sure to keep activated your target window, while sending a key by windows OSK.
I design special computer access devices for people with disabilities. I simply trying to “Enable People”…
User avatar
Memo
 
Posts: 15
Joined: 18 Dec 2014, 17:11
Location: Istanbul

Re: HAYDi:EyeTribe, Desktop and Start Screen Control Softwar

Postby ay.fahrettin » 26 Jun 2015, 03:24

Hi Memo,

You are right. I should have explained it clearly. You can download example project by using the following link

https://www.dropbox.com/s/8teym7fae8ewl ... e.zip?dl=0

I am using C# programming language with form application at this example to achieve what you did before. Application generates mouse click events periodically according one of the five different methods. The main window is illustrated below

Image

At upper-left side, you can automate or stop mouse clicks. At right side of these buttons, there are five radio buttons to select five different methods respectively. At right side of main window, there are two panels one under the other. Upper panel informs about active window where the bottom one informs about topmost window. And the rich text box was used to be informed about mouse clicks and the method.

Let me explain all methods:

At first method: handler for the top most window is obtained and SendInput Api is invoked by passing this handler as an argument.
At second method: handler for the active window is obtained and SendInput Api is invoked by passing this handler as an argument.
At third method: just mouse_event api is invoked.
At fourth method: active window is set as top most. Then SendInput api is invoked with this handler as an argument
At fifth method: top most window is set as active. Then SendInput api is invoked with this handler as an argument

As you see i tried all these combinations without tiring :) and achieved nothing. I wonder which way i did not try. Which is the right way to do this? Above all, what is the main logic behind ?

Best regards...
ay.fahrettin
 
Posts: 3
Joined: 24 May 2015, 12:22

Re: HAYDi:EyeTribe, Desktop and Start Screen Control Softwar

Postby Memo » 03 Jul 2015, 15:54

Just add below line between your mouse button down and up clicks:

Thread.Sleep(20); // 20ms is min. to stay in safe, max is up to you


I tested on Windows10 RC + Visual Studio Community 2013 + Windows OSK and your code is working...
I design special computer access devices for people with disabilities. I simply trying to “Enable People”…
User avatar
Memo
 
Posts: 15
Joined: 18 Dec 2014, 17:11
Location: Istanbul

Re: HAYDi:EyeTribe, Desktop and Start Screen Control Softwar

Postby ay.fahrettin » 11 Jul 2015, 19:06

Yes, you are right!

Just adding thread.sleep and executing it with administrator rights... I can not believe that this problem had blocked me for a long time.

Thank you very much Memo!

Saygılarımla :)
ay.fahrettin
 
Posts: 3
Joined: 24 May 2015, 12:22

Next

Return to General



cron