Any software exists to provide screen navigation via shortcut keys to overlay grid coordinates?

Post a reply


In an effort to prevent automatic submissions, we require that you complete the following challenge.
Smilies
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :| :mrgreen: :geek: :ugeek: :arrow: :angel: :clap: :crazy: :eh: :lolno: :problem: :shh: :shifty: :sick: :silent: :think: :thumbup: :thumbdown: :salute: :wave: :wtf: :yawn: :facepalm: :bravo: :dance: :beard: :morebeard: :xmas: :HeHe: :trollface: :cookie: :rainbow: :monkeysee: :monkeysay: :happybday: :headwall: :offtopic: :superhappy: :terms: :beer:
View more smilies

BBCode is ON
[img] is OFF
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Any software exists to provide screen navigation via shortcut keys to overlay grid coordinates?

Re: Any software exists to provide screen navigation via shortcut keys to overlay grid coordinates?

Post by franklin_pierce » 04 Jan 2022, 11:21

Hello to anyone else who stumbles on this thread.

I too wanted to find a MouseGrid tool, and after a bit of searching around I found one that works.
I've modified a script from this archived thread here
https://www.autohotkey.com/board/topic/48680-mouse-numpad-grid/
It seems to work identically to the one that Tidbit shows above.

I only modified @DarkVamprism script to the point that you can immediate move the mouse to click, or just move, inside the center of the current Grid. Set to NumPad 0
I also tweaked it that the last grid, the 6th, moves and clicks the mouse to the center, instead of the top left of the final square. You can compare the two to see the difference. Otherwise I found his script to be great!

Note, it requires Gdip.ahk for drawing the GUI.
The current 64bit version can be found here:
https://www.autohotkey.com/boards/viewtopic.php?t=6517

Current Code:

Code: Select all

; Author DevX
; Mastering by DarkVamprism
;Tiniest tweak by Franklin_Pierce
 
#NoEnv
#SingleInstance, force
CoordMode, Mouse
SetBatchLines -1
SetMouseDelay -1

#Include, Gdip.ahk 

; Start gdi+ 
If !pToken := Gdip_Startup() 
{ 
   MsgBox, 48, gdiplus error!, Gdiplus failed to start. Please ensure you have gdiplus on your system 
   ExitApp
} 
OnExit, Exit 
return

NumpadEnter::
   KeyMouseToggle := !KeyMouseToggle
   if KeyMouseToggle
   {
      Gui, 1: -Caption +E0x80000 +LastFound +AlwaysOnTop +ToolWindow +OwnDialogs 
      Gui, 1: Show, NA 
      hwnd1 := WinExist() 
      hbm := CreateDIBSection(A_ScreenWidth, A_ScreenHeight) 
      hdc := CreateCompatibleDC()
      obm := SelectObject(hdc, hbm)
      G := Gdip_GraphicsFromHDC(hdc)
      Gdip_SetSmoothingMode(G, 4)
      pBrush := Gdip_BrushCreateSolid(0xffff0000) 
      pPen := Gdip_CreatePen(0xff00ff00, 1) 
      Gdip_DrawLine(G, pPen,  Floor(A_ScreenWidth/3), 0,  Floor(A_ScreenWidth/3), A_ScreenHeight) 
      Gdip_DrawLine(G, pPen, Floor(A_ScreenWidth/3*2), 0, Floor(A_ScreenWidth/3*2), A_ScreenHeight) 
      Gdip_DrawLine(G, pPen, 0,  Floor(A_ScreenHeight/3), A_ScreenWidth,  Floor(A_ScreenHeight/3)) 
      Gdip_DrawLine(G, pPen, 0,  Floor(A_ScreenHeight/3*2), A_ScreenWidth,  Floor(A_ScreenHeight/3*2))
      UpdateLayeredWindow(hwnd1, hdc, 0, 0, A_ScreenWidth, A_ScreenHeight) 
      SelectObject(hdc, obm) 
      DeleteObject(hbm) 
      DeleteDC(hdc) 
      Gdip_DeleteGraphics(G)
      
      init()
   }
   else
   {
     Gui, 1: Destroy
   }
return

#if KeyMouseToggle
   NumPad1::SelectWindow(1) 
   NumPad2::SelectWindow(2) 
   NumPad3::SelectWindow(3) 
   NumPad4::SelectWindow(4) 
   NumPad5::SelectWindow(5) 
   NumPad6::SelectWindow(6) 
   NumPad7::SelectWindow(7) 
   NumPad8::SelectWindow(8) 
   NumPad9::SelectWindow(9)
   NumPad0::ClickTheButtonNow()

#if

Init()
{
   global
   currX := 0
   currY := 0
   currW := A_ScreenWidth
   currH := A_ScreenHeight
}

SelectWindow(Win)
{
   global
   currW := currW / 3
   currH := currH / 3
      
   if (Win >= 1 and Win <= 3) 
   { 
      currY := currY + (currH * 2)
   }
   else if (Win >= 4 and Win <= 6) 
   { 
      currY := currY + currH
   }
   else if (Win >= 7 and Win <= 9) 
   { 
      currY := currY
   }
   
   if (Win == 1 || Win == 4 || Win == 7) 
   { 
      currX := currX
   }
   else if (Win == 2 or Win == 5 or Win == 8)
   { 
      currX := currX + currW
   }
   else if (Win == 3 or Win == 6 or Win == 9)
   { 
      currX := currX + (currW * 2) 
   }
   
   if (CurStep == 5) 
   { 
      CurStep := 0
      KeyMouseToggle := false
      Gui, 1: Destroy 
      ClickTheButton()
      return 
   } 
   
   CurStep++
   DrawNewBox()
}

DrawNewBox() 
{ 
  global 
  Gui, 1: Destroy 
  Gui, 1: -Caption +E0x80000 +LastFound +AlwaysOnTop +ToolWindow +OwnDialogs 
  Gui, 1: Show, NA 
  hwnd1 := WinExist() 
  hbm := CreateDIBSection(A_ScreenWidth, A_ScreenHeight) 
  hdc := CreateCompatibleDC() 
  obm := SelectObject(hdc, hbm) 
  G := Gdip_GraphicsFromHDC(hdc) 
  Gdip_SetSmoothingMode(G, 4) 

   if (currY > 0) 
      Gdip_DrawLine(G, pPen, currX, currY, currX + currW, currY) 
   if (currX > 0) 
      Gdip_DrawLine(G, pPen, currX, currY, currX, currY + currH) 
   if ( (currY + currH) <= A_ScreenHeight ) 
      Gdip_DrawLine(G, pPen, currX, currY + currH, currX + currW, currY + currH) 
   if ( (currX + currW) <= A_ScreenWidth )
      Gdip_DrawLine(G, pPen, currX + currW, currY, currX + currW, currY + currH) 

  Gdip_DrawLine(G, pPen, currX, currY + ( currH / 3 ), currX + currW, currY + ( currH / 3 ) ) 
  Gdip_DrawLine(G, pPen, currX, currY + ( ( currH / 3 ) * 2 ), currX + currW, currY + ( ( currH / 3 ) * 2) ) 

  Gdip_DrawLine(G, pPen, currX + ( currW / 3 ), currY, currX + ( currW / 3 ), currY + currH ) 
  Gdip_DrawLine(G, pPen, currX + ( ( currW / 3 ) * 2 ), currY, currX + ( ( currW / 3 ) * 2 ),  currY + currH ) 
  

  UpdateLayeredWindow(hwnd1, hdc, 0, 0, A_ScreenWidth, A_ScreenHeight) 
  
  SelectObject(hdc, obm) 
  DeleteObject(hbm) 
  DeleteDC(hdc) 
  Gdip_DeleteGraphics(G) 
  Gui, 1: Show, NA 
}

ClickTheButton() 
{ 
  global
  MouseClick, Left, (currx+currW/2), (curry+currH/2), 1, 0 
}

ClickTheButtonNow() 
{ 
  global
  MouseClick, Left, (currx+currW/2), (curry+currH/2), 1, 0 
  CurStep := 0
      KeyMouseToggle := false
      Gui, 1: Destroy 
  ;sgBox, %currw%  %currh% %curry%5 %curry%
}


Exit: 
   Gdip_Shutdown(pToken) 
ExitApp

Re: Any software exists to provide screen navigation via shortcut keys to overlay grid coordinates?

Post by tidbit » 05 Nov 2021, 11:51

  • a_screenwidth/height
  • basic math (divide the above by 3)
  • store the 9 parts in an array (my array is multi-dimensional, not a flat array)
  • when you choose a cell, get the x/y/w/h of it (this is easy. w/h will always be the same. only x/y change. and its stored in the array. simple read of a value)
  • divide by 2 to get the center of that cell
  • repeat all that for the newly selected cell
if you want to use the numpad like I did, simply give each key a value. numpad1 = 1, etc. then do myArr[numKeyPressed] or w/e
As for drawing lines, that uses gdip. I recommend robod's extended version https://github.com/marius-sucan/AHK-GDIp-Library-Compilation
dsewq1LYJ wrote:
05 Nov 2021, 06:39
it looks insanely useful, do you mind share some tip how to achive this?

Re: Any software exists to provide screen navigation via shortcut keys to overlay grid coordinates?

Post by dsewq1LYJ » 05 Nov 2021, 06:39

tidbit wrote:
27 Jun 2018, 20:42
my unreleased ahk screen grid, Not sure if I want to release it or not :/
https://streamable.com/gn39d

Image
it looks insanely useful, do you mind share some tip how to achive this?

Re: Any software exists to provide screen navigation via shortcut keys to overlay grid coordinates?

Post by itmitica » 11 Oct 2021, 12:35

Nice 'wormhole' navigation! Thanks.

Re: Any software exists to provide screen navigation via shortcut keys to overlay grid coordinates?

Post by GavinPen » 28 Jun 2018, 09:05

Thanks all

@guest3456 - that looks similar to the Dragon NaturallySpeaking MouseGrid
@Guest - I somehow couldn't get Mouse Numpad Grid to work

@tidbit - This looks very useful. Again looks similar to the Speech Recognition ones, but more convenient to control it from the keyboard instead of by speech.
Are you using NumPad 1-9 to choose the cells?

Re: Any software exists to provide screen navigation via shortcut keys to overlay grid coordinates?

Post by tidbit » 27 Jun 2018, 20:42

my unreleased ahk screen grid, Not sure if I want to release it or not :/
https://streamable.com/gn39d

Image

Re: Any software exists to provide screen navigation via shortcut keys to overlay grid coordinates?

Post by guest3456 » 26 Jun 2018, 23:21

I could've sworn something like this was built into Windows, but i'm not finding it in the Control Panel. I know I used something like this before

edit: ohhh it was Windows Speech Recognition. see this video:

Re: Any software exists to provide screen navigation via shortcut keys to overlay grid coordinates?

Post by GavinPen » 26 Jun 2018, 17:31

finally wrote something which more or less does what I was looking for, see:
https://autohotkey.com/boards/viewtopic.php?f=6&t=51201

Re: Any software exists to provide screen navigation via shortcut keys to overlay grid coordinates?

Post by GavinPen » 25 Oct 2017, 03:45

Thanks jeeswg, that script looks useful in its own right, and also as an example of how to move to coordinates.
What I still don't know how to do, however, is display the shortcut key combination for each coordinate

Re: Any software exists to provide screen navigation via shortcut keys to overlay grid coordinates?

Post by jeeswg » 25 Oct 2017, 01:57

I use this, which treats the screen as nine rectangles, and moves the cursor to the centre of a rectangle based on pressing Win+NumpadXXX. (I then use a keyboard via mouse script to navigate to the precise point, using Win+Left/Up/Right/Down.)

Code: Select all

#NumpadEnd:: ;mouse via keyboard - jump to region of screen
#NumpadDown::
#NumpadPgDn::
#NumpadLeft::
#NumpadClear::
#NumpadRight::
#NumpadHome::
#NumpadUp::
#NumpadPgUp::
#Numpad1::
#Numpad2::
#Numpad3::
#Numpad4::
#Numpad5::
#Numpad6::
#Numpad7::
#Numpad8::
#Numpad9::

vHotkey := StrReplace(A_ThisHotkey, "#Numpad")
vListKey := "End,Down,PgDn,Left,Clear,Right,Home,Up,PgUp"
oListX := StrSplit("1,2,3,1,2,3,1,2,3", ",")
oListY := StrSplit("3,3,3,2,2,2,1,1,1", ",")

;middle of top-left ninth of screen is 1/6 along, 1/6 down
;middle of middle ninth of screen is 3/6 along, 3/6 down
;middle of bottom-right ninth of screen is 5/6 along, 5/6 down

Loop, Parse, vListKey, `,
{
	if (vHotkey = A_LoopField) || (vHotkey = A_Index)
	{
		vPosX := Round((((oListX[A_Index] * 2) - 1) / 6) * A_ScreenWidth)
		vPosY := Round((((oListY[A_Index] * 2) - 1) / 6) * A_ScreenHeight)
		break
	}
}

vCMM := A_CoordModeMouse
vDMS := A_DefaultMouseSpeed
CoordMode, Mouse, Screen
SetDefaultMouseSpeed, 0
MouseMove, % vPosX, % vPosY
CoordMode, Mouse, % vCMM
SetDefaultMouseSpeed, % vDMS
return

Re: Any software exists to provide screen navigation via shortcut keys to overlay grid coordinates?

Post by nnnik » 25 Oct 2017, 01:24

I dont know if something like this exists but this shouldn't be difficult to make in AHK

Any software exists to provide screen navigation via shortcut keys to overlay grid coordinates?

Post by GavinPen » 24 Oct 2017, 17:15

Some vim-like Chrome extensions allocate and display key shortcuts which allow you to navigate to all links, text inputs and buttons on a page, eg
http://www.damianbast.com/content/image ... vimium.jpg

Dragon NaturallySpeaking's mousegrid
http://www.nuance.com/products/help/dra ... eGrid.html
allows you to zoom in on a particular spot on your screen using successive 3*3 grids.

Does anybody know if a tool in a similar vein (ahk-derived or otherwise) exists to display a grid over your whole screen,
and allocate alphanumeric coordinates (say rows A-Z,0-9, columns A-Z,0-9) to each cell, allowing you to click anywhere in the screen via the appropriate cell's unique 2 key combination (eg A2, 6Z, etc)?

Top