Добрый день.
Имеется мышка с дополнительными кнопками. В винде я привык на две из них вешать копирование\вставку. Перейдя на Kubuntu 13.10., попытался настроить то же самое. С помощью xbyndkeys повесил на дополнительные кнопки произвольные скрипты, с помощью которых осуществляется должна осуществляться работа с буфером обмена. С этим проблем нет. Теперь самое сложное - нужно програмно вызывать копирование\вставку, что бы все это надежно работало. Что я пробовал:
1. С помощью xvkbd/xdotool/xto эмулировать нажатие клавиш Ctrl+C/V или Ctrl/Shift+Insert.
2. С помощью этих же утилит напрямую набирать текст, получаемый из буфера обмена через xclip/xsel.
Первый вариант работает через раз - криво и ненадежно. Второй ещё хуже.
В свзяи с этим вопрос - как можно вызвать копирование\вставку быстро и надежно, не связываясь с глючной эмуляцией нажатия клавиатуры? Я долго гуглил, но ничего не нашел.
А чем копировать/вставить через среднюю кнопку мыши не устраивает, что нужен такой велосипед?
То же вариант, но все таки это неудобно по ряду причин. Например, если нужно скопировать кусок кода поверх другого - средняя кнопка не поможет.
У меня imwheel легко и ненавязчиво навешивает на боковые клавиши нужные сочетания. Можно разные в разных приложениях. Лучше я не нашёл.
Смотрел я эту программу. То же самое, что и xbyndkeys. Главный вопрос - работу с буфером обмена - она никак не решает.
И чем плохо эмулирование Ctrl+C/V?..
Тем, что в некоторых случаях страшно глючит.
В каких случаях? Как глючит? Из вас всё надо клещами тянуть :( Я этой утилитой пользуюсь, сколько на линуксе, никаких нареканий.
В общем, я частично решил проблему. Оказывается, часть глюков вызывает klipper, а именно опция "не допускать пустого буфера обмена". Её нужно снять.
Для копирования\вставки используется xdotool - она работает надежнее и гибче настраивается, чем xvkbd. Но у xdotool есть глюк - она не работает при русской раскладке. Поэтому пришлось повесить на кнопки Win форсированное переключение раскладки и дальше вызывать скрипт для копирования:
#!/bin/bash
LANG=$(xset -q | awk 'BEGIN { a[1]="ru"; a[0]="en"; } /LED/ { print a[$10 && 32]; }')
case $LANG in
ru)
xdotool key 'ISO_First_Group'
xdotool keydown 'Control'
xdotool keydown 'Insert'
sleep 0.3
xdotool keyup 'Insert'
xdotool keyup 'Control'
xdotool key 'ISO_Last_Group';;
en)
xdotool keydown 'Control'
xdotool keydown 'Insert'
sleep 0.3
xdotool keyup 'Insert'
xdotool keyup 'Control'
esac
для вставки - аналогично.
Но в любом случае, такое решение корявое. По прежнему хотелось бы найти родное средство для работы с буфером обмена (как xclip, но для окон, а не терминала). Неужели в открытой ОС нет ничего подобного?
Вы хотите с помощью мышки производить команды:
1. "Копировать в буфер обмена"
2. "Вставить из буфера обмена"
У меня средняя кнопка мышки выполняет команду по пункту 2. А первый пункт можно сделать так: в klipper в настройках убрать галку у опции "Игнорировать выделение мышью" как показано на скрин-шоте:
После этого при выделении текста мышью он сразу же попадает в буфер обмена вообще без нажатия какой либо кнопки. Возможно это не так удобно, но тем не менее чем то похоже на решение вашей задачи. Кстати, здесь будет полезно посмотреть в справке к приложению klipper статью «Работа с буфером обмена». Например я только сейчас узнал, что есть два разных буфера: буфер обмена и буфер выделения.
Третья задача, которую, — как я понял, — вы также перед собой ставите — производить действия с буфером обмена специальными скриптами. Эту задачу также можно решить с помощью утилиты klipper. Для этого в настройках перейдите на вкладку "Действия":
Отправить комментарий