Configuring Keynav Tool for double click, right click and record-replay

TL;DR    Download & run this script.sh and setup following key binding for keynav:

I = double click, O = right click, RETURN = click

keynav is a tool that control's mouse with keyboard superfast. It lets immediate pointer navigation to specific portion of screen, it also lets store specific point on screen and load that pointer location later (similar to vims record/replay) which is handy in some cases when you are needed to click on same area of screen frequently.

Here is a quote from keynav's site (semicomplete.com/projects/keynav):

keynav - retire your mouse.
It lets you move the pointer quickly to most points on the screen with only a few key strokes.

It lets mouse pointer reach any and every corner of screen with few keystrokes. Each key stroke devides the screen into 1/4 and lets pick any of 4 portion of screen with HJKL which is similar to vim's key binding.

kenav screenshot

In this image, one of desktop item is selected with key sequence L L L K

Common Keys:

CTRL+; = bring up Keynav Navigator
ESC = exit
; = cause mousemove event at particular cursor position without clicking
qa = save mouse pointer location on screen for buffer 'a'
@a = go to previously saved pointer position on screen into 'a' buffer
h,j,k,l = basic navigation

Enabling double-click & right-click:

The default configuration do not come with some key actions like right click and double click. So you can enable them by adding following lines:

i warp,doubleclick 1,end
o warp,click 3,end

Add them into keynav config file ~/.keynavrc.

Give a read to this detailed documentaion for adding more actions like drag, drop, mousemove, middle click and more.

Whole config:

~/.keynavrc:

ctrl+semicolon start
Escape end
ctrl+bracketleft end
h cut-left
j cut-down
k cut-up
l cut-right
y cut-left,cut-up
u cut-right,cut-up
b cut-left,cut-down
n cut-right,cut-down
shift+h move-left
shift+j move-down
shift+k move-up
shift+l move-right
shift+y move-left,move-up
shift+u move-right,move-up
shift+b move-left,move-down
shift+n move-right,move-down
space warp,click 1,end
semicolon warp,end
1 click 1
2 click 2
3 click 3

# Zoom to the current window
w windowzoom

# Zoom to the cursor location with a given height and width
c cursorzoom 200 200

# Handy for holding ctrl while using keynav:
ctrl+h cut-left
ctrl+j cut-down
ctrl+k cut-up
ctrl+l cut-right
ctrl+y cut-left,cut-up
ctrl+u cut-right,cut-up
ctrl+b cut-left,cut-down
ctrl+n cut-right,cut-down

# Arrow keys can move the grid as welll
Left cut-left
Down cut-down
Up cut-up
Right cut-right
shift+Left move-left
shift+Down move-down
shift+Up move-up
shift+Right move-right
ctrl+Left cut-left
ctrl+Down cut-down
ctrl+Up cut-up
ctrl+Right cut-right
ctrl+shift+Left move-left
ctrl+shift+Down move-down
ctrl+shift+Up move-up
ctrl+shift+Right move-right

# Record keynav actions
q record
# e.g. start recording by pressing 'qa'. Following 
# move actions completed, press 'q'. It should save 
# these actions for key 'a' and pressing 'a' should replay them.  

shift+at playback

### Example using the 'sh' command.
# Make firefox the active window
f sh "xdotool windowactivate $(xdotool search -title -- '- Mozilla Firefox')", end
# Make a new tab in google chrome:
t sh "xdotool windowactivate $(xdotool search --title -- '- Google Chrome' | head -1); xdotool key ctrl+t",end
# Paste
v sh "xdotool key shift+Insert"

### Drag examples
# Start drag holding the left mouse button
#q drag 1
# Start drag holding middle mouse + control and shift
#w drag 2 ctrl+shift
# Dragging with modifiers
#q drag 1
#ctrl+q drag 1 ctrl
#shift+q drag 1 shift
#shift+ctrl+q drag 1 shift+ctrl

### History
a history-back

### Example of cut and move without the default values
#h cut-left .75
#j cut-down .75
#k cut-up .75
#l cut-right .75
#shift+h move-left .50
#shift+j move-down .50
#shift+k move-up .50
#shift+l move-right .50

### Example using a 2-row, 3-column grid, 
# mapped to Insert/Home/PageUp/etc...
#6 grid 2x3
#Insert cell-select 1x1
#Home cell-select 1x2
#Prior cell-select 1x3   # PageUp
#Delete cell-select 2x1
#End cell-select 2x2
#Next cell-select 2x3   # PageDown

### Example using a 3x3 grid with nethack-vi keys
#ctrl+semicolon start, grid 3x3
#h cell-select 1x2      # left
#j cell-select 2x3      # down
#k cell-select 2x1      # up
#l cell-select 3x2      # right
#y cell-select 1x1      # up-left
#u cell-select 3x1      # up-right
#b cell-select 1x3      # down-left
#n cell-select 3x3      # down-right
#period cell-select 2x2 # center

i warp,doubleclick 1,end
o warp,click 3,end

References:

http://manpages.ubuntu.com/manpages/artful/man1/keynav.1.html https://github.com/jordansissel/keynav/blob/master/keynav.pod

No comments:

Post a Comment