KnowBrainer Speech Recognition
Decrease font size
Increase font size
Topic Title: Need help designing "Window Grid"
Topic Summary: How many rows and columns
Created On: 08/05/2020 09:54 AM
Status: Post and Reply
Linear : Threading : Single : Branch
 Need help designing "Window Grid"   - Edgar - 08/05/2020 09:54 AM  
 Need help designing "Window Grid"   - Mphillipson - 08/07/2020 04:04 AM  
 Need help designing "Window Grid"   - MDH - 08/30/2020 12:10 PM  
 Need help designing "Window Grid"   - Mphillipson - 08/31/2020 04:40 AM  
 Need help designing "Window Grid"   - MDH - 08/31/2020 08:08 AM  
 Need help designing   - kkkwj - 08/07/2020 11:29 PM  
 Need help designing   - Edgar - 08/08/2020 10:57 AM  
 Need help designing   - alexander - 08/10/2020 04:04 PM  
 Need help designing   - Edgar - 08/10/2020 05:26 PM  
Keyword
 08/05/2020 09:54 AM
User is offline View Users Profile Print this message

Author Icon
Edgar
Top-Tier Member

Posts: 875
Joined: 04/03/2009

In this thread:

http://www.knowbrainer.com/forums/forum/messageview.cfm?catid=25&threadid=34643&enterthread=y

I offer "Screen Grid" a robust multi-monitor aware replacement for Mouse Grid. It puts a unified grid over your entire screen real estate regardless of how many monitors you have hooked up. I've also got "Monitor Grid <1to10complex>" mostly finished which puts up the grid on only the specified monitor - the numerals list can go as high as necessary without changing the driver script.

I'm now working on "Window Grid" which puts up the grid just on the active window. All three applications have virtually identical but separate preferences. Given that Windows are typically smaller than your screen (or any given monitor’s) real estate - often much smaller -but vary radically in size, my question is…

Both "Screen Grid" and "Monitor Grid…" allow the user to specify a fixed number of rows and columns for their grids; specifying a fixed number of rows and columns does not extend well to Windows which might be of different sizes. How should I give the user fine-grained control of this?

My current thought is to give the user a pair of controls based on pixels:

Size of columns: [ ] (in pixels)

Size of rows: [ ] (in pixels)

This way the size of rows and columns in the grid would be constant despite the size of the window (both "Screen Grid" and "Monitor Grid…" Use a fixed number of columns and rows - if a monitor’s resolution changes the size of the grid rectangles changes. Obviously, the final column’s rows will not be the same size as the rest of the grid (unless the math works out perfectly: Window_Width / pixels-per-column as a 0 remainder).

The seemingly more sophisticated method would be to allow the user a pair of controls based on fixed numbers (as with "Screen Grid" 1-26 and 1-10) BUT specify that that is for a window which is maximized and that these numbers would be dynamically modified based on the size of the window. If the user specifies a grid of 20 by 10 a maximized window would get a 20 by 10 grid; a window that is half as wide as its screen would get 10 columns; window that is half as tall as its screen would get 5 rows etc.

Obviously, in a more perfect world, I would give the user a choice between the two methods (my current thinking, but a lot more work) - any thoughts? A third option would be to allow the driver script to set the number of columns and rows dynamically:

Window Grid <1-26> by <1-10>

Currently, I am leaning toward having two driver scripts:

Window Grid

Window Grid <1-26> by <1-10>

having the program use the user’s preferences for number of columns and rows with the first script and the specified number the second.



-------------------------

-Edgar
DPI 15.3, 64-bit Windows 10 Pro, OpenOffice & Word 365, Norton Security, Shure X2U XLR to USB mic adapter with Audio Technica DB135 vocal mic, Asus X299-Deluxe Prime, Intel Core i9-7940X (14 core, 4.3 GHz overclocked to 4.9 GHz), G.SKILL TridentZ Series 64GB (4 x 16GB) DDR4 3333 (PC4 26600) F4-3333C16Q-64GTZ, NVIDIA GIGABYTE GeForce GTX 1060 GV-N1060G1 GAMING-6GD REV 2.0 6GB graphics card

 08/07/2020 04:04 AM
User is offline View Users Profile Print this message

Author Icon
Mphillipson
Top-Tier Member

Posts: 224
Joined: 09/22/2014

Hi Edgar,


I have a different approach. In that I have labels stuck to the edge of my monitors and have a script that can position the mouse within 50 pixels regardless of the current application.


The KnowBrainer script I use and more information is at the following link:


https://github.com/Mark-Phillipson/DragonScripts/wiki/Clicking-Anywhere-on-the-Screen-by-Voice

 



-------------------------

Thanks Mark


 


 


 


Dragon Professional Advanced Scripting/KnowBrainer Scripts
Video Examples of Coding by Voice

 08/30/2020 12:10 PM
User is offline View Users Profile Print this message

Author Icon
MDH
Top-Tier Member

Posts: 2161
Joined: 04/02/2008

Mark,

 

I thought that you might also be interested to know that I developed a monitor-independent way of simply creating mouse-positioning commands remotely that does not require number choosing/Show Numbers or Click By Voice or variations, or mouse grids, and is independent of monitor size, resolution, or scaling. The accuracy is within 2 pixels. If you send me an image of something that I am not likely to have, I can create commands to demonstrate proof of concept and sent these back to you. I will send you a private message with my contact info.

 

MDH



-------------------------
 08/31/2020 04:40 AM
User is offline View Users Profile Print this message

Author Icon
Mphillipson
Top-Tier Member

Posts: 224
Joined: 09/22/2014

Hi Mark,

This sounds quite intriguing.

Please find attached a sample screenshot. Would it be working on a per screenshot basis?

Thanks Mark






-------------------------

Thanks Mark


 


 


 


Dragon Professional Advanced Scripting/KnowBrainer Scripts
Video Examples of Coding by Voice

 08/31/2020 08:08 AM
User is offline View Users Profile Print this message

Author Icon
MDH
Top-Tier Member

Posts: 2161
Joined: 04/02/2008

Mark,

 

Hi. Thanks for sending. Will look at this after work today. Yes, it would be on a per screenshot basis.

 

MDH



-------------------------
 08/07/2020 11:29 PM
User is offline View Users Profile Print this message

Author Icon
kkkwj
Top-Tier Member

Posts: 462
Joined: 11/05/2015

Hi Edgar, if it was me, I would more or less use the cell-size method that you describe. Here is what I would use for design thinking:

 

1) I would assume the cells are square because vertical and horizontal positioning seem the same to me. (Beware, I am not yet a regular voice mouse-clicker and so have limited experience there.) Set a default square cell size based on 1) monitor resolution and 2) your grid experience. You only need one number to set the size of the cell.

 

2) I assume that people will zero in on a cell size that works for them. As evidence, consider Mark's method of fixed and permanent cell size stickers on his monitor, which works well for him. Thus, you only need one configuration value for a square cell size.

 

3) Let users override the default cell size somewhere. (I would allow different default cell-sizes for each installed monitor, if it was me.)

 

4) Finally, provide one or more commands to allow users to override their preferred default size in special cases. Your commands could be "window grid (for the default size)," and "window grid bigger/smaller" or "window grid up 20" for +20% bigger cells or "window grid smaller 50" for -50% smaller cells.

 

That way, users would get a workable default cell size based on their monitors, your experience, or their preferences. And they could increase or decrease the cell sizes by some default/configurable percentage like 20% or 50% or something, if they really wanted different sized cells. For example, "window grid bigger" would use the configured default increment size of 20% to draw bigger cells.

 

My guess is that once people find a good cell size for them, they will stick with it, so I imagine the "bigger" and "smaller" commands would only get used in rare cases. 



Just my two bits, of course.



-------------------------

Win10/x64, AMD Ryzen 7 3700X, 64GB RAM, Dragon 15.3, KB 2017, SpeechStart, Dragon Capture, Samson Meteor USB Desk Mic, Klim and JUKSTG earbuds with microphones, Office 365



 08/08/2020 10:57 AM
User is offline View Users Profile Print this message

Author Icon
Edgar
Top-Tier Member

Posts: 875
Joined: 04/03/2009

I settled on three modes. One mode relies on the user dictating the grid specification as part of the script name:

Window Grid <1to26complex> By <1to10complex>

this script creates a "ShellExecute" statement which executes the application passing it 2 commandline parameters (number of columns and/by number of rows). If the app sees exactly 2 commandline parameter arguments it assumes the user wants to override the normal preferences. Both arguments are tested to ensure that they are in range integers (if either fail a reasonable default is used).

 

Otherwise, Preferences is queried for the value of Fixed/Proportional and the number of columns and rows. In the "Fixed" mode these numbers are used directly; in the "Proportional" mode they are modified based on the window’s area (width X height) divided by the monitor’s (on which the window’s top left corner is positioned) area. This way a Maximized window gets the full number of columns and rows, a window which is half the size of its home monitor gets half as many columns and rows etc.

 

I've got it all working but it needs a little polish to localization. I hope to post a 0.0beta version today or tomorrow.



-------------------------

-Edgar
DPI 15.3, 64-bit Windows 10 Pro, OpenOffice & Word 365, Norton Security, Shure X2U XLR to USB mic adapter with Audio Technica DB135 vocal mic, Asus X299-Deluxe Prime, Intel Core i9-7940X (14 core, 4.3 GHz overclocked to 4.9 GHz), G.SKILL TridentZ Series 64GB (4 x 16GB) DDR4 3333 (PC4 26600) F4-3333C16Q-64GTZ, NVIDIA GIGABYTE GeForce GTX 1060 GV-N1060G1 GAMING-6GD REV 2.0 6GB graphics card

 08/10/2020 04:04 PM
User is offline View Users Profile Print this message

Author Icon
alexander
Senior Member

Posts: 155
Joined: 07/31/2016

Edgar, sorry I am late to this thread. When you say "Window Grid <1-26> by <1-10>" are you implying that this could be a voice command that you say? For example if I said "window grid twenty by 10", that's what it would draw?

fwiw the new Mac OS Catalina (and iOS) voice control allows you to say "show grid with 20 rows" for example. Which is pretty useful.
 08/10/2020 05:26 PM
User is offline View Users Profile Print this message

Author Icon
Edgar
Top-Tier Member

Posts: 875
Joined: 04/03/2009

Originally posted by: alexander  When you say "Window Grid <1-26> by <1-10>" are you implying that this could be a voice command that you say? For example if I said "window grid twenty by 10", that's what it would draw?

Exactly, the currently active window would have a grid of 20 columns by 10 rows drawn over it. Each grid cell would have a letter/number combination drawn in its center (e.g. B3) then you would say "bravo 3" or "be three" etc. and the mouse cursor would be moved to the (approximate) center of that cell.

In a new thread I have posted links to both the zipped executable and solution:

http://www.knowbrainer.com/forums/forum/messageview.cfm?catid=25&threadid=34692&enterthread=y



-------------------------

-Edgar
DPI 15.3, 64-bit Windows 10 Pro, OpenOffice & Word 365, Norton Security, Shure X2U XLR to USB mic adapter with Audio Technica DB135 vocal mic, Asus X299-Deluxe Prime, Intel Core i9-7940X (14 core, 4.3 GHz overclocked to 4.9 GHz), G.SKILL TridentZ Series 64GB (4 x 16GB) DDR4 3333 (PC4 26600) F4-3333C16Q-64GTZ, NVIDIA GIGABYTE GeForce GTX 1060 GV-N1060G1 GAMING-6GD REV 2.0 6GB graphics card

Statistics
31740 users are registered to the KnowBrainer Speech Recognition forum.
There are currently 0 users logged in.
The most users ever online was 12124 on 09/09/2020 at 04:59 AM.
There are currently 476 guests browsing this forum, which makes a total of 476 users using this forum.

FuseTalk Standard Edition v4.0 - © 1999-2020 FuseTalk™ Inc. All rights reserved.