СОЛО на клавиатуре

Лайфхак клавиатуры для удобной навигации по тексту

Хабрахабр
17.10.2011

С первых курсов еще колледжа меня заинтересовала тема человеко-машинных интерфейсов — взаимодействие человека и машины. Не многое, что нас окружает удобно или эргономично, но в силу стандарта имеет большее распространение. Одним из таких устройств я считаю клавиатуру. Нет, я не собираюсь критиковать qwerty-раскладку, подойду к вопросу шире. В частности расположение блока цифровых и позиционных клавиш справа от буквенной части очень неудобно, да и вынесение управляющих клавиш тоже не лучшая мысль.

Не буду растекаться мыслью по древу, а перейду к сути. Пришлось 1,5 дня вносить много правок в давно написанный код, и постоянный перенос руки с клавиш-стрелок на клавиши-буквы, мягко говоря, надоел. Пришла мысль: было бы удобней, если клавиши управления курсором были на буквенной части клавиатуры. Да, идея не нова, но из тех решений, что есть (в том числе и клавиатурные сочетания Emacs'a), ничего не понравились — не удобно.

После некоторых раздумий появился такой скетч:

Последний вариант оказался комфортным и практически не требующим запоминания.

Нажимать две и более модифицирующих клавиши не удобно, поэтому использовал CapsLock (раньше его использовал для запуска Enso Launcher'a, сейчас для переключения закладок Punto Switcher'ом). Клавиши стрелок курсора заняли буквы I, K, J и L; Del, Home, End, PageUp и PageDown — O, P, «;», [ и ' соответственно. Insert'ом не пользуюсь и не стал его переносить, отдав предпочтения BackSpace'у, расположив его на клавиши буквы U. Также учел передвижение курсора с нажатым Shift'ом для выделения текста. А одновременное нажатие обоих Shift'ов теперь изменяет раскладку последнего введенного слова — горячая клавиша Break в Punto Switcher — до него тоже тянуться лень. Таким образом, получаем расширение функций CapsLock'а и удобную навигацию по тексту без переноса руки по клавиатуре. К слову, раскладка, при нажатии одновременно с капсом еще клавиш, остается той же что и до нажатия, одиночное нажатие так и осталось — смена раскладки.

Список сочетаний клавиш:

CapsLock + I — перемещение курсора вверх

CapsLock + K — вниз

CapsLock + J — влево

CapsLock + L — вправо

CapsLock + P — Home

CapsLock +; — End

CapsLock + [ — Page Up

CapsLock + ' — Page Down

эти клавиши также работают и с нажатым Shift'ом: CapsLock + Shift + I (и так далее).

CapsLock + O — Del

CapsLock + U — BackSpace

LShift + RShift — Break

Почему этот вариант удобен?

Набираю текст десятипальцевым методом, и в процессе набора руки остаются в одной позиции над клавиатурой. В этом случае курсор управляется вверх-вниз — средним пальцем, влево-вправо — указательным и безымянным, как и на обычных клавишах (специально поспрашивал коллег — других вариантов не назвали). Расположение остальных — как на родных клавишах (кроме Del и Backspase, их, думаю, запомнить просто). CapsLock нажимается мизинцем левой руки. Все делается без сдвига рук.

Идея идеей, но без реализации — это только бумагомарательство. Для реализации вышеописанного функционала написал простой скрипт исполняемый программой AutoHotkey. Сам скрипт:


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}

Скрипта для Linux не написал (еще не очень хорошо в нем ориентируюсь), если кому-то покажется эта идея интересной, и реализуют ее для Linux, буду благодарен. Пользуюсь этим решением второй день и очень доволен — удобно. Планирую еще расширить функционал. Картинку для скетча взял с сайта nabiraem.ru с разрешения администрации сайта.

Спасибо за внимание.

Николай Можаровский


← назадоглавлениедалее →

Оставить комментарий


Ваш комментарий будет опубликован после модерации.


Rambler's Top100
ErgoSolo
© 1997— «ЭргоСОЛО»
Дизайн: Алексей Викторович Андреев
Вебмастер: Евгений Алексеевич Никитин
Пишите нам:
Звоните нам по тел. +7 (495) 995-82-95. Мы работаем круглосуточно. Прямо сейчас на все Ваши вопросы готова ответить наша служба поддержки:
Круглосуточная трансляция из офиса «ЭргоСОЛО»

Поможем бросить курить
Все права на материалы, находящиеся на сайте ergosolo.ru, охраняются в соответствии с законодательством РФ, в том числе, об авторском праве и смежных правах.
Использование материалов сайта без разрешения ООО "ЭргоСоло" ЗАПРЕЩЕНО!
return_links(); ?>