Keyboard life hack for easy text navigation

Published on October 14, 2011

Keyboard life hack for easy text navigation

From the first years of college, I was interested in the topic of human-machine interfaces - human-machine interaction. Not much that surrounds us is convenient or ergonomic, but by virtue of the standard it is more widespread. One of these devices, I think the keyboard. No, I’m not going to criticize the qwerty-layout, I’ll approach the question more broadly. In particular, the location of the block of digital and position keys to the right of the alphabetic part is very inconvenient, and the removal of control keys is also not a good idea.
I will not spread my thoughts on the tree, but move on to the essence. It took 1.5 days to make many changes to the long-written code, and the constant transfer of the hand from the arrow keys to the letter keys, to put it mildly, was tired. The thought came: it would be more convenient if the cursor keys were on the alphabetic part of the keyboard. Yes, the idea is not new, but of those solutions that are (including Emacs'a keyboard shortcuts), I did not like anything - it’s not convenient.
After some thought, such a sketch appeared:
image

The last option turned out to be comfortable and practically not requiring memorization.
Pressing two or more modifier keys is not convenient, so I used CapsLock (I used to use it to start Enso Launcher, now to switch bookmarks with Punto Switcher). The arrow keys occupied the letters I, K, J, and L; Del, Home, End, PageUp and PageDown are O, P, “;”, [and 'respectively. I do not use Insert and did not transfer it, giving preference to BackSpace, placing it on the keys of the letter U. I also took into account the cursor movement with Shift pressed to select the text. And the simultaneous pressing of both Shift'ov now changes the layout of the last word entered - the Break hotkey in the Punto Switcher - laziness also reaches him. Thus, we get an extension of CapsLock's functions and convenient navigation through the text without moving your hand around the keyboard. By the way, the layout, when you press more keys at the same time as the caps,
List of keyboard shortcuts:
CapsLock + I - move the cursor up
CapsLock + K - down
CapsLock + J - left
CapsLock + L - right
CapsLock + P - Home
CapsLock +; - End
CapsLock + [- Page Up
CapsLock + '- Page Down
these keys also work with the Shift key pressed: CapsLock + Shift + I (and so on).

CapsLock + O - Del
CapsLock + U - BackSpace
LShift + RShift - Break

Why is this option convenient?
I type in the text using the 10-finger method, and in the process of typing my hands remain in one position above the keyboard. In this case, the cursor is controlled up and down - with the middle finger, left and right - with the index and anonymous, as on ordinary keys (I specifically asked my colleagues - they didn’t name other options). The location of the rest is the same as on the native keys (except Del and Backspase, I think they are easy to remember). CapsLock is pressed with the little finger of the left hand. Everything is done without a hand shift.

An idea is an idea, but without implementation - it is only paperwork. To implement the above functionality, I wrote a simple script executed by AutoHotkey. The script itself:

CapsLock & +VK49:: ;key i
GetKeyState state, Shift
if state = D
Send {Shift}+{Up}
else
Send {Up}
Return

CapsLock & +VK4b:: ;key k
GetKeyState state, Shift
if state = D
Send {Shift}+{Down}
else
Send {Down}
Return

CapsLock & +VK4A:: ;key j
GetKeyState state, Shift
if state = D
Send {Shift}+{Left}
else
Send {Left}
Return

CapsLock & +VK4C:: ;key l
GetKeyState, state, Shift
if state = D
Send {Shift}+{Right}
else
Send {Right}
Return

CapsLock & VK50:: ;key p
GetKeyState state, Shift
if state = D
Send {Shift}+{Home}
else
Send {Home}
Return

CapsLock & VKBA:: ;key ;
GetKeyState state, Shift
if state = D
Send {Shift}+{End}
else
Send {End}
Return

CapsLock & VKDB:: ;key [
GetKeyState state, Shift
if state = D
Send {Shift}+{PgUp}
else
Send {PgUp}
Return

CapsLock & VKDE:: ;key '
GetKeyState state, Shift
if state = D
Send {Shift}+{PgDn}
else
Send {PgDn}
Return

CapsLock & VK55:: Send {Backspace} ;key u
CapsLock & VK4F:: Send {Del} ;key o

LShift & RShift:: Send {Pause}


I haven’t written a script for Linux (I’m still not very good at it), if someone finds this idea interesting, and if it is implemented for Linux, I will be grateful. I use this solution the second day and am very pleased - convenient. I plan to further expand the functionality. I took the picture for the sketch from nabiraem.ru with the permission of the site administration.
Thanks for attention.