Controlling Vision Client with only Keyboard controls

I have a job site where the Client computers only have keyboards, no touchscreen and no mouse. This site is in a messy and volatile environment which is why waterproof keyboards are the only things that survive the day to day. I'm trying to figure out how to control Vision client within their restricted controls. I'm able to tab between most things on a Window, but the outline that shows what's selected is very difficult to see and which object it goes to next is unpredictable at times. Additionally tabbing between things on the page only works on objects in the Main Window, it does not go over to the Docked Window in order to navigate to other pages.

Any suggestions in order to get around these issues? Adding touchscreens/mice to the site is not an option, as of this moment.

Check out Vision client event keystroke scripts for setting up hotkeys. You can get more tab control by grouping components together. Also, you'll probably want to make use of focusGained and focusLost event handlers to toggle a custom border on the component in focus. You can also use requestFocusInWindow() on a lot of vision components.


I completely forgot about the focus events! I have some plans for some of the hotkeys and will do some more research to see what else it can do with them. 'requestFocusInWindow()' definitely will help the popups and docked Windows. I was hoping there was a less intensive workaround built in for this, but this definitely gets me a useable starting point to work off of.

Relevant links for anyone else dealing with the same painful issue.
Client events:
Focus Manipulation:


For the mouse controls you could use the windows mouse keys. If they don't have a numpad on their keyboards it would be trickier but you could possibly get something working with keystroke client events and scripting, though idk how resource intensive that would be or how well it would work. Plus that would only work in Ignition then.*
Windows Mouse Controls

As for the outline one way to do it would be to change the border of the template through* the 'mouseEntered' and 'mouseExited' event handlers.

1 Like

I didn't know about the windows mouse keys, I'll look into that as a possible option.

I found a somewhat odd solution to the border issue while messing around with what @dkhayes117 suggested. Not all objects have borders, so I have a small transparent "Mouse" that's on the screen (rectangle named Mouse), and on each of the objects' focusGained I have a transform that moves the "Mouse" to it. Running into an issue with templates not liking this method, but I just started messing with it a few hours ago so just gotta toy with it some more.

outline = event.source.parent.getComponent('Mouse')
    component.x, component.y,