Клавиши управления курсором прямо в раскладке

Ранее для добавления удобных клавиш управления курсором на основном алфавитном блоке клавиатуры использовалась утилита xbindkeys совсместно с xvkbd. К сожалению, это решение оказалось практически неработоспособным в Unity, который используется в Ubuntu, начиная с версии 11.04.

Сейчас придумал более совершенный способ, который будет работать во всех операционных системах. Заключается он в том, что мы вешаем клавиши управления курсором прямо в раскладку на место клавиш с нажатой AltGr (используется для дополнительных букв национальных алфавитов, не помещающихся в стандартную клавиатуру). Работает это решение во всех программах, без задержек (в отличие от прошлого решения), позволяет использовать совместно с этими клавишами любые модификаторы, навроде Ctrl и Shift. Единственный минус - придется модифицировать все используемые вами раскладки.

Напоминаю используемую мною схему расположения клавиш:

В Microsoft Windows в раскладках нельзя использовать эмуляцую спецклавиш, только различные символы из юникод-таблицы можно добавить, поэтому нужна программа, которая перехватывает нажатия клавиш и переназначает по-своему, например KeyMan (ссылка на сайт радиолюбителя Steve Key, так как официальный сайт видимо уже давно сломался).

Пример конфигурирования в Ubuntu Linux файлов с раскладками, например файл /usr/share/X11/xkb/symbols/ru

partial hidden alphanumeric_keys
xkb_symbols "common" {
    key <AD07> {    [    Cyrillic_ghe,    Cyrillic_GHE, Home, Home  ]   };
    key <AD08> {    [    Cyrillic_sha,    Cyrillic_SHA, Up, Up  ]   };
    key <AD09> {    [  Cyrillic_shcha,  Cyrillic_SHCHA, End, End    ]   };
    key <AD10> {    [     Cyrillic_ze,     Cyrillic_ZE, Prior, Prior    ]   };
    //...

    key <AC07> {    [      Cyrillic_o,  Cyrillic_O, Left, Left  ]   };
    key <AC08> {    [     Cyrillic_el,     Cyrillic_EL, Down, Down  ]   };
    key <AC09> {    [     Cyrillic_de,     Cyrillic_DE, Right, Right    ]   };
    key <AC10> {    [    Cyrillic_zhe,    Cyrillic_ZHE, Next, Next  ]   };
    //...

    key <AB07> {    [Cyrillic_softsign,Cyrillic_SOFTSIGN, Delete, Delete    ]   };
    key <AB08> {    [     Cyrillic_be,     Cyrillic_BE, Insert, Insert  ]   };
    //...

    include "level3(ralt_switch)"
};

/usr/share/X11/xkb/symbols/us

partial hidden alphanumeric_keys 
xkb_symbols "common" {
    key <AD07> { [         u,   U, Home, Home               ] };
    key <AD08> { [         i,   I, Up, Up               ] };
    key <AD09> { [         o,   O, End, End               ] };
    key <AD10> { [         p,   P, Prior, Prior               ] };
    //...
    key <AC07> { [         j,   J, Left, Left               ] };
    key <AC08> { [         k,   K, Down, Down               ] };
    key <AC09> { [         l,   L, Right, Right               ] };
    key <AC10> { [ semicolon,    colon, Next, Next           ] };
    //...
    key <AB07> { [         m,   M, Delete, Delete               ] };
    key <AB08> { [         comma,   less, Insert, Insert               ] };
    //...
    include "level3(ralt_switch)"
};
13 октября 2011