LINUX.ORG.RU

ubuntu12.04 + gnome-shell + xbindkeys


0

2

В очередной раз cinnamon вынес мне мозг своими зависаниями\умираниями, и я решил попробовать настроить gnome3 ака под него. В определённый момент я перешёл к стадии горячих клавиш и обнаружил, что все комбинации win + anybody не работают из-за кнопки «обзор». Нагуглил пару решений, но толи руки ещё кривые, толи что-то другое виновато. В общем не сработали они у меня. Посему убрал в dconf-editor-е бинд на Super_L для activity.

Далее решил забиндить то что хотел, однако печалька - всё равно не биндятся. Погуглил и нашёл панацею - xbindkeys. С первого взгляда шикарное решение - давно о чём то подобном мечтал. Однако беда-печаль, все бинды у меня срабатывают не на отжатие - а на нажатие. В итоге стоит хотя быть чуть чуть пережать win+e как у меня открывается с десяток проводников... В общем не годится.

Есть там такой модификатор - Release, который, судя по описанию, должен эту проблему решать. Но он у меня не работает ни в Lisp-конфиге, ни в текстовом. Т.е. вообще никак не работает. xbindkeys -s - его фиксирует, но на этом дело и заканчивается. Ни базовые примеры, ни мои экспериментальные потуги не принесли ни каких плодов :(

Посему два вопроса:

  • как биндить win+чтолибо горячие клавиши, желательно при этом не убив этот бинд на activity.
  • как починить release в xbindkeys? Судя по гуглу я один такой...

В итоге стоит хотя быть чуть чуть пережать win+e как у меня открывается с десяток проводников...

надо же, 3 года использую xbindkeys, только после этой твоей фразы решил проверить и понял, что это так :D

lazyklimm ★★★★★
()
Ответ на: комментарий от lazyklimm

да, всё верно, если для любой из клавиш клавиатурной комбинации отключить автоповтор нажатия (xset -r код_клавиши) - то release работает как нужно.

Так что можешь отрубить автоповтор для Super, хак, конечно, но что делать

А как чинить? Первое, что приходит в голову - ограничить в коде интервал, с которым может срабатывать биндинг к одному и тому же сочетанию клавиш. Сделать элементарно, но некрасиво. Есть другие предложения?

lazyklimm ★★★★★
()
Ответ на: комментарий от lazyklimm

чуть более изящное решение - на KeyPress отключать автоповтор, включать обратно только после KeyRelease

lazyklimm ★★★★★
()

XkbSetDetectableAutoRepeat спасает ситуацию

lazyklimm ★★★★★
()
Ответ на: комментарий от lazyklimm

thx

На удивление смог собрать пакет сам, обычно когда пытался такое делать (для других программ) - ./configure писал кучу непонятно как разрешаемых зависимостей (непонятных для нуба вроде меня, к тому же не сишника). А тут помогло:

sudo aptitude install guile-1.8 guile-1.8-dev

Пакет собрал через checkinstall. Вроде работает. Вот ссылка на i386 ubuntu12 если кому пригодится - http://rghost.ru/38019042.

faiwer
() автор топика
Ответ на: thx от faiwer

Беда печаль. о5 проблемы:

1. У меня win+q === gnome-terminal. Таких биндов хватает. Если я жму win + q, и отпускаю вначале q, а потом win - всё ок. Но если я отпускаю вначале win - не срабатывает. Проанализировав как я обычно жму, понял, что минимум 50% нажатий приходится на второй случай, так клава устроена, что ли. А постоянно напрягать мозг при использовании гор.клавиш - извращение. Всегда и везде работали оба варианта. Можно ли как-нибудь этот вопрос решить\обойти?

2. Пока тестил - несколько раз упали Х-ы :) Сейчас не дома, более детально описать не могу. Впрочем они от xbindkeys и раньше падали. Чтоб её эту 12-ую...

3. Не получилось забиндить одновременно win и win+anybody. Либо то, либо то. В принципе, не критично. Но можно ли как-нибудь и это обойти?

faiwer
() автор топика
Ответ на: thx от faiwer

Пакет собрал через checkinstall.

зря, там всё элементарно собирается правильно:

sudo apt-get build-dep xbindkeys

apt-get source xbindkeys

cd xbindkeys-версия/

patch -p0 < файлпатча.diff

fakeroot debian/rules binary

lazyklimm ★★★★★
()
Ответ на: комментарий от faiwer

1) честно говоря - не знаю, сам всю жизнь использую только на нажатие, тогда таких проблем нет.

2) запускай в терминале с параметрами -v -n и смотри, почему падает

3) теоретически - можно попробовать(например, win биндить на отжатие, сочетания - на нажатие), на практике - хз

lazyklimm ★★★★★
()
Ответ на: комментарий от lazyklimm
sudo apt-get build-dep xbindkeys
apt-get source xbindkeys
cd xbindkeys-версия/
patch -p0 < файлпатча.diff
fakeroot debian/rules binary

Как всё просто оказывается. Спасибо. Что же я раньше мучился то.

теоретически - можно попробовать(например, win биндить на отжатие, сочетания - на нажатие), на практике - хз

Попробую такой вариант:

  • win+anybody - без release, но запускать bash скрипт, который как нибудь должен будет блокировать повторный запуск
  • win - с release
faiwer
() автор топика
Ответ на: комментарий от faiwer

В конечном итоге пришёл к следующей схеме:

1. Overlay gnome-shell menu. Моя затея повешать его на winkey не удалась, т.к. не получилось применить к winkey - release. С чем это связано - не знаю :(. Посему остановился на варианте winkey+`.

Я понятия не имею как сие меню активировать из консоли нормально, а посему вначале эмулировал его через xdotools key Alt+F1, а потом наткнулся на это:

dbus-send --session --type=method_call \
    --dest=org.gnome.Shell /org/gnome/Shell \
    org.freedesktop.DBus.Properties.Set \
        string:org.gnome.Shell \
        string:OverviewActive \
        variant:boolean:true

Насколько я понимаю, оно делает тоже самое но с понтами и менее говнокодисто :) Если существует и нормальный способ, тот гугол тщательно его от меня cпрятал.

Чтобы сий код заработал без release (а с ним в итоге оказалось страшно неудобно, т.к. он половинчатый) мне нужно «отжимать» все клавиши, иначе сработает не Alt+F1 а хрень+Alt+F1, что, естественно, результата не даст. Посему вначале добавил:

xdotool keyup Super_L;
xdotool keyup grave;
xdotool keyup Cyrillic_io;
xdotool keyup Cyrillic_IO;

Последние два символа - буквы Ё и ё.

2. Обычные бинды аля winkey+q организовал проще:

"xdotool keyup Super_L && gnome-terminal"
    Mod4 + q

"xdotool keyup Super_L && nautilus"
    Mod4 + e

keyup-ы здесь вместо release. Т.е. бинд срабатывает сразу, но не срабатывает циклично, т.к. winkey уже типа отжат :)

faiwer
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.