Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: shift + keypad-кнопки: так же, как в Windows  (Прочитано 1046 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Пётр Седов

  • Автор темы
  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
shift + keypad-кнопки: так же, как в Windows
« : 02 Февраля 2016, 03:09:04 »
У меня Ubuntu 14.04 LTS, GNOME. Хочется, чтобы во всех текстовых редакторах, shift + keypad-кнопки работали так же, как в Windows (num lock выключен). Поиск по форуму показал, что проблема типичная:
https://forum.ubuntu.ru/index.php?topic=113132.0
https://forum.ubuntu.ru/index.php?topic=235949.0
https://forum.ubuntu.ru/index.php?topic=244056.0

Как сделать, чтобы shift + keypad_left и shift + keypad_right выделяли текст, это написано в последней ссылке. Но вот как сделать, чтобы например в gedit было:
ctrl + keypad_insert копирует текст (так же, как ctrl + insert)
shift + keypad_delete вырезает текст (так же, как shift + delete)
shift + keypad_insert вставляет текст (так же, как shift + insert)
?
(кстати, в LibreOffice Writer именно так, без всяких дополнительных настроек) Искал в Интернете, я правильно понимаю, что надо копать куда-то в сторону редактирования файла /usr/share/X11/xkb/symbols/keypad? Что лучше почитать?

Оффлайн F12

  • Администратор
  • Старожил
  • *
  • Сообщений: 4480
    • Просмотр профиля
Re: shift + keypad-кнопки: так же, как в Windows
« Ответ #1 : 02 Февраля 2016, 07:53:35 »
Пётр Седов,
Не знаю получится ли так в GNOME, а на Unity это (т.е. настройка сочетаний) делается в CompizConfig, вот только вопрос, стоит ли это делать?.. всегда есть риск упереться в уже используемую комбинацию ::)

Оффлайн Пётр Седов

  • Автор темы
  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Re: shift + keypad-кнопки: так же, как в Windows
« Ответ #2 : 03 Февраля 2016, 03:35:44 »
Не знаю получится ли так в GNOME, а на Unity
Я думал, что у меня GNOME (раз программа настройки называется gnome-tweak-tool), но запустил «phoronix-test-suite system-info» (как тут написано в закреплённой теме), и вижу:
Software:
..., Desktop: Unity 7.2.6, ...

это (т.е. настройка сочетаний) делается в CompizConfig,
Спасибо. Установил CompizConfig Settings Manager, разбираюсь.

вот только вопрос, стоит ли это делать?..
Ну я так привык текст редактировать: левая рука -- на shift/ctrl, правая рука -- на keypad-е. На клавиатуру смотреть не надо, поэтому быстро получается. Я понимаю, что джедаи всё в vim-е делают, без всякого keypad-а, но я-то не джедай :).

Оффлайн Пётр Седов

  • Автор темы
  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Re: shift + keypad-кнопки: так же, как в Windows
« Ответ #3 : 08 Февраля 2016, 00:19:31 »
Установил CompizConfig Settings Manager, разбираюсь.
Да, там есть раздел Общие > Команды, в котором можно задавать обще-системные shortcut-ы. Пытался имитировать нажатие shift + delete с помощью xvkbd, не вышло: не во всех программах работало.

Поэтому решил всё-таки отредактировать файл keypad. Мне помогло следующее:

1. Открываем файл keypad в редакторе gedit:
sudo gedit /usr/share/X11/xkb/symbols/keypad
Файл начинается так:
partial hidden keypad_keys
xkb_symbols "overlay" {
    include "keypad(overlay1)"
};

partial hidden keypad_keys
xkb_symbols "overlay1" {

    key  <KP7> { [  KP_Home ], overlay1=<KO7> };
    key  <KP8> { [  KP_Up ], overlay1=<KO8> };
    key  <KP9> { [  KP_Prior ], overlay1=<KO9> };

    key  <KP4> { [  KP_Left ], overlay1=<KO4> };
    key  <KP5> { [  KP_Begin ], overlay1=<KO5> };
    key  <KP6> { [  KP_Right ], overlay1=<KO6> };

    key  <KP1> { [  KP_End ], overlay1=<KO1> };
    key  <KP2> { [  KP_Down ], overlay1=<KO2> };
    key  <KP3> { [  KP_Next ], overlay1=<KO3> };

    key  <KP0> { [  KP_Insert ], overlay1=<KO0> };
    key <KPDL> { [  KP_Delete ], overlay1=<KODL> };

    key  <KO7> { [  KP_7 ] };
    key  <KO8> { [  KP_8 ] };
    key  <KO9> { [  KP_9 ] };

    key  <KO4> { [  KP_4 ] };
    key  <KO5> { [  KP_5 ] };
    key  <KO6> { [  KP_6 ] };

    key  <KO1> { [  KP_1 ] };
    key  <KO2> { [  KP_2 ] };
    key  <KO3> { [  KP_3 ] };

    key  <KO0> { [  KP_0 ] };
    key <KODL> { [  KP_Decimal ] };
};

partial hidden keypad_keys
xkb_symbols "overlay2" {

    key  <KP7> { [  KP_Home ], overlay2=<KO7> };
    key  <KP8> { [  KP_Up ], overlay2=<KO8> };
    key  <KP9> { [  KP_Prior ], overlay2=<KO9> };

    key  <KP4> { [  KP_Left ], overlay2=<KO4> };
    key  <KP5> { [  KP_Begin ], overlay2=<KO5> };
    key  <KP6> { [  KP_Right ], overlay2=<KO6> };

    key  <KP1> { [  KP_End ], overlay2=<KO1> };
    key  <KP2> { [  KP_Down ], overlay2=<KO2> };
    key  <KP3> { [  KP_Next ], overlay2=<KO3> };

    key  <KP0> { [  KP_Insert ], overlay2=<KO0> };
    key <KPDL> { [  KP_Delete ], overlay2=<KODL> };

    key  <KO7> { [  KP_7 ] };
    key  <KO8> { [  KP_8 ] };
    key  <KO9> { [  KP_9 ] };

    key  <KO4> { [  KP_4 ] };
    key  <KO5> { [  KP_5 ] };
    key  <KO6> { [  KP_6 ] };

    key  <KO1> { [  KP_1 ] };
    key  <KO2> { [  KP_2 ] };
    key  <KO3> { [  KP_3 ] };

    key  <KO0> { [  KP_0 ] };
    key <KODL> { [  KP_Decimal ] };
};

partial hidden keypad_keys
xkb_symbols "operators" {
    // Puts some commands to control the X server on
    // the fifth level of the keypad's operator keys.
    key <KPDV> {
        type="CTRL+ALT", // Ungrab cancels server/keyboard/pointer grabs
        symbols[Group1]= [ KP_Divide, KP_Divide, KP_Divide, KP_Divide, XF86_Ungrab ]
    };
    key <KPMU> {
        type="CTRL+ALT", // ClsGrb kills whichever client has a grab in effect
        symbols[Group1]= [ KP_Multiply, KP_Multiply, KP_Multiply, KP_Multiply, XF86_ClearGrab ]
    };
    key <KPSU> {
        type="CTRL+ALT", // -VMode switches to the previous video mode
        symbols[Group1]= [ KP_Subtract, KP_Subtract, KP_Subtract, KP_Subtract, XF86_Prev_VMode ]
    };
    key <KPAD> {
        type="CTRL+ALT", // +VMode switches to the next video mode
        symbols[Group1]= [ KP_Add, KP_Add, KP_Add, KP_Add, XF86_Next_VMode ]
    };
};

default  partial hidden keypad_keys
xkb_symbols "x11" {

    include "keypad(operators)"

    key  <KP7> { [  KP_Home, KP_7 ] };
    key  <KP8> { [  KP_Up, KP_8 ] };
    key  <KP9> { [  KP_Prior, KP_9 ] };

    key  <KP4> { [  KP_Left, KP_4 ] };
    key  <KP5> { [  KP_Begin, KP_5 ] };
    key  <KP6> { [  KP_Right, KP_6 ] };

    key  <KP1> { [  KP_End, KP_1 ] };
    key  <KP2> { [  KP_Down, KP_2 ] };
    key  <KP3> { [  KP_Next, KP_3 ] };
    key <KPEN> { [ KP_Enter ] };
    key <KPEQ> { [ KP_Equal ] };

    key  <KP0> { [  KP_Insert, KP_0 ] };
    key <KPDL> { [  KP_Delete, KP_Decimal ] };
    key <KPPT> { [  KP_Decimal, KP_Decimal ] };
};
В трёх местах меняем symbol-ы:
KP_Home → Home
KP_Up → Up
KP_Prior → Prior
KP_Left → Left
KP_Right → Right
KP_End→ End
KP_Down → Down
KP_Next → Next
KP_Insert → Insert
KP_Delete → Delete
Другие symbol-ы (KP_Begin, KP_Decimal, ...) не трогаем.

2. xkb-конфигурация компилируется в .xkm-файлы, поэтому стираем их:
sudo rm /var/lib/xkb/*.xkm

3. Перезапускаем систему. При этом компилируются новые .xkm-файлы.

Работает так как надо, почти во всех редакторах. Только почему-то в gedit, когда русская раскладка клавиатуры, shift + keypad_delete не вырезает текст (но при этом ctrl + keypad_insert копирует текст, shift + keypad_insert вставляет текст).

Не подскажите, куда лучше написать разработчикам Ubuntu, чтобы исправили нелогичность ввода из-коробки? (num lock выключен, но:
shift + left/right выделяют текст, shift + keypad_left/keypad_right -- нет;
shift + delete вырезает текст, shift + keypad_delete -- нет;
и т. д.) По-английски более/менее умею писать.

 

Страница сгенерирована за 0.035 секунд. Запросов: 23.