Клавиши навигации курсором на основном блоке клавиатуры

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

Было решено использовать клавиши, используемые в клавиатуре Miniguru, как более привычные, чем те что в VIM, но совместно с нажатой клавишей [Alt].

Клавиатурные сочетания:

  • стрелка вверх: Alt+i
  • стрелка влево: Alt+j
  • стрелка вниз: Alt+k
  • стрелка вправо: Alt+l
  • клавиша [Home]: Alt+u
  • клавиша [End]: Alt+o
  • клавиша [Page Up]: Alt+p
  • клавиша [Page Down]: Alt+;
  • клавиша [Delete]: Alt+m
  • клавиша [Insert]: Alt+,
  • клавиша [Backspace]: Alt+пробел

Установка в Ubuntu Linux

Для использования необходимо установить пакет xbindkeys:

$ sudo apt-get install xbindkeys

После чего файл создать файл ~/.xbindkeysrc (исходный код ниже), и запустить установленную программу:

$ xbindkeys

Можно работать. Чтобы работали сочетания Alt+Shift+[ijkl], необходимо убрать переключение раскладки клавиатуры по Alt+Shift, я переставил эту функцию на [Caps Lock].


Файл ~/.xbindkeysrc

"SamsungToolsDummyCommand"
  Control+Alt+Shift+Mod4+F1+F2+F3
"samsung-tools --show-notify --quiet --backlight hotkey"
  XF86Launch1
"samsung-tools --show-notify --quiet --cpu hotkey"
  XF86Launch3
"samsung-tools --show-notify --quiet --webcam hotkey"
  Alt+KP_Insert
"samsung-tools --show-notify --quiet --wireless hotkey"
  XF86WLAN

"xvkbd -xsendevent -text '\[Left]'"
m:0x8 + c:44
Alt + j
"xvkbd -xsendevent -text '\S\[Left]'"
m:0x9 + c:44
Shift+Alt + j
"xvkbd -xsendevent -text '\C\[Left]'"
m:0xc + c:44
Control+Alt + j
"xvkbd -xsendevent -text '\C\S\[Left]'"
m:0xd + c:44
Control+Shift+Alt + j

"xvkbd -xsendevent -text '\[Right]'"
m:0x8 + c:46
Alt + l
"xvkbd -xsendevent -text '\S\[Right]'"
m:0x9 + c:46
Shift+Alt + l
"xvkbd -xsendevent -text '\C\[Right]'"
m:0xc + c:46
Control+Alt + l
"xvkbd -xsendevent -text '\C\S\[Right]'"
m:0xd + c:46
Control+Shift+Alt + l

"xvkbd -xsendevent -text '\[Up]'"
m:0x8 + c:31
Alt + i
"xvkbd -xsendevent -text '\S\[Up]'"
m:0x9 + c:31
Shift+Alt + i
"xvkbd -xsendevent -text '\C\[Up]'"
m:0xc + c:31
Control+Alt + i
"xvkbd -xsendevent -text '\C\S\[Up]'"
m:0xd + c:31
Control+Shift+Alt + i

"xvkbd -xsendevent -text '\[Down]'"
m:0x8 + c:45
Alt + k
"xvkbd -xsendevent -text '\S\[Down]'"
m:0x9 + c:45
Shift+Alt + k
"xvkbd -xsendevent -text '\C\[Down]'"
m:0xc + c:45
Control+Alt + k
"xvkbd -xsendevent -text '\C\S\[Down]'"
m:0xd + c:45
Control+Shift+Alt + k

"xvkbd -xsendevent -text '\[Home]'"
m:0x8 + c:30
Alt + u
"xvkbd -xsendevent -text '\S\[Home]'"
m:0x9 + c:30
Shift+Alt + u
"xvkbd -xsendevent -text '\C\[Home]'"
m:0xc + c:30
Control+Alt + u
"xvkbd -xsendevent -text '\C\S\[Home]'"
m:0xd + c:30
Control+Shift+Alt + u

"xvkbd -xsendevent -text '\[End]'"
m:0x8 + c:32
Alt + o
"xvkbd -xsendevent -text '\S\[End]'"
m:0x9 + c:32
Shift+Alt + o
"xvkbd -xsendevent -text '\C\[End]'"
m:0xc + c:32
Control+Alt + o
"xvkbd -xsendevent -text '\C\S\[End]'"
m:0xd + c:32
Control+Shift+Alt + o

"xvkbd -xsendevent -text '\[Page_Up]'"
m:0x8 + c:33
Alt + p
"xvkbd -xsendevent -text '\S\[Page_Up]'"
m:0x9 + c:33
Shift+Alt + p
"xvkbd -xsendevent -text '\C\[Page_Up]'"
m:0xc + c:33
Control+Alt + p
"xvkbd -xsendevent -text '\C\S\[Page_Up]'"
m:0xd + c:33
Control+Shift+Alt + p

"xvkbd -xsendevent -text '\[Page_Down]'"
m:0x8 + c:47
Alt + semicolon
"xvkbd -xsendevent -text '\S\[Page_Down]'"
m:0x9 + c:47
Shift+Alt + semicolon
"xvkbd -xsendevent -text '\C\[Page_Down]'"
m:0xc + c:47
Control+Alt + semicolon
"xvkbd -xsendevent -text '\C\S\[Page_Down]'"
m:0xd + c:47
Control+Shift+Alt + semicolon

"xvkbd -xsendevent -text '\d'"
m:0x8 + c:58
Alt + m
"xvkbd -xsendevent -text '\S\d'"
m:0x9 + c:58
Shift+Alt + m
"xvkbd -xsendevent -text '\C\d'"
m:0xc + c:58
Control+Alt + m
"xvkbd -xsendevent -text '\C\S\d'"
m:0xd + c:58
Control+Shift+Alt + m

"xvkbd -xsendevent -text '\[Insert]'"
m:0x8 + c:59
Alt + comma
"xvkbd -xsendevent -text '\S\[Insert]'"
m:0x9 + c:59
Shift+Alt + comma
"xvkbd -xsendevent -text '\C\[Insert]'"
m:0xc + c:59
Control+Alt + comma
"xvkbd -xsendevent -text '\C\S\[Insert]'"
m:0xd + c:59
Control+Shift+Alt + comma

"xvkbd -xsendevent -text '\b'"
m:0x8 + c:65
Alt + space
26 февраля 2010