booley 25.02.2010 23:14
How-to`s — xbindkeys
xbindkeys — программа для привязки команд к клавишам (это еще зовется хоткеями). В чем плюс — она не привязана ни к какому WM или (боже упаси) DE, а значит можно использовать одни хоткеи во всех WM (если у вас стоит больше чем один window manager).Сначала нужно создать файл конфигурации. Лучше всего его расположить в домашней папке.
Чтобы xbindkeys выдал конфиг, нужно запустить его с параметром -d. Не будем захламлять консоль, сразу перенаправим вывод в конфиг.
xbindkeys -d > ~/.xbindkeysrc
Как следует из комментариев в этом файле, хоткеи задаются в формате:
"command"
key
И если с "command" все более-менее понятно, то для key нужно получить сканкод клавиши. Для этого запускаем (из эмулятора терминала)
xbindkeys -mk
И передав фокус в появившееся окно, смело нажимаем нужные кнопки. В консоли будет нужный код
randomwind@farrias: ~$xbindkeys -mk
Press combination of keys or/and click under the window.
You can use one of the two lines after «NoCommand»
in $HOME/. xbindkeysrc to bind a key.
— — Press «q» to stop.— -
«(Scheme function) «
m:0x0 + c:225
XF86Search
Из чего видно, что нужный код: m:0x0 + c:225 (для кнопки Search на моей мультимедиа-клавиатуре).
Например, часть моего конфига. MPC.
"mpc next"
c:171 + m:0x0
"mpc prev"
c:173 + m:0x0
"mpc stop"
c:174 + m:0x0
"mpc toggle"
c:172 + m:0x0
"notify-send "`mpc|head -1`" "`mpc`""
c:181 + m:0x0
Надеюсь, в общих чертах понятно.
UPD: После написания наткнулся на http://www.juev.ru/2009/09/13/xbindkeys/
Про сочетания в стиле emacs.
что-бы не засорять домашнюю директорию кучей конфигов, для этого и придумали .config
это для тех кто следует стандарту xdg, а всем ли программам он нужен?
у меня вот достаточно долгое время $XDG_CONFIG_HOME была выставлена в $HOME/.all/etc вместо ~/.config а $XDG_DATA_HOME и прочее в ~/.all/share и т.д. - эти переменные придуманы совсем не для того что бы "не захломлять"
ну а если надо то xbindkeys -f путь/к/конфигу (-fg для scm файлов)
а теперь по сабжу
Писали уже на вилинуксе о гуйне xbindkeys_config (для ленивых) но emacs сочетания не умеет гуй.
а так вот пример емаксоподобного сочитания клавиш (только тут в примере в добавок к тому что у Juev показано два префикса.
у меня вот достаточно долгое время $XDG_CONFIG_HOME была выставлена в $HOME/.all/etc вместо ~/.config а $XDG_DATA_HOME и прочее в ~/.all/share и т.д. - эти переменные придуманы совсем не для того что бы "не захломлять"
ну а если надо то xbindkeys -f путь/к/конфигу (-fg для scm файлов)
а теперь по сабжу
Писали уже на вилинуксе о гуйне xbindkeys_config (для ленивых) но emacs сочетания не умеет гуй.
а так вот пример емаксоподобного сочитания клавиш (только тут в примере в добавок к тому что у Juev показано два префикса.
зы, забыл спросить, а bash у вас тоже свой конфиг в ~/.config/ хранит? а флеш? а gkt? а гном? а кеды? а темы/иконки тоже не в .themes/.icons ложите а в ~/.config =)
уй какие захламители =)
надо быть менее прихотливым, и вам воздастся за это
уй какие захламители =)
надо быть менее прихотливым, и вам воздастся за это
это для тех кто следует стандарту xdg, а всем ли программам он нужен?
А почему бы и нет, чем плохо если программа следует стандарту?
эти переменные придуманы совсем не для того что бы "не захломлять"
Извините, а для чего?В стандарте написано "$XDG_CONFIG_HOME defines the base directory relative to which user specific configuration files should be stored.".
Так что, выставлять их в $HOME/.all IMHO некорректно, и уж точно это не основное их предназначение.
Так что, выставлять их в $HOME/.all IMHO некорректно
где-то видите противоречие? как раз в стандарте и написано что для пользователя определеят, вот я как пользователь себе и определил. раньше этой директорией всегда был $HOME =)
Извините, а для чего?
что бы унифицировать, не? а xdg ещё и некий стандарт на меню и соответсвия мимтипов программе.
А почему бы и нет, чем плохо если программа следует стандарту?
тем что стандарты бывают разные, не всегда $XDG_* определены(хотя в линуксе уже скоро без него и шагу не сделаешь)вообще введенный fdo стандарт достаточно хитрозад - ему не следуют даже сами составители (теже гномокеды следуют не полностью), да и gst от gconf (некоторые плагины) зависит . намекая что kde при полном следовании стандарту зависит от gtk/gnome - вот такие они "стандарты" ^_^
Так что, выставлять их в $HOME/.all IMHO некорректно
Прошу прощения, это я ошибся, я прочитал это как /home/.all, т.е. я думал Вы делали что-то вроде виндового \Documents and Settings\All Users.Но, мы обсуждаем вопрос хранить конфиги в домашней директории или в поддиректории, и как эта поддиректория обзывается ~/.config или ~/.all IMHO в споре ничего не меняет. Или я опять чего не понял в вашем примере?
что бы унифицировать, не?
Не, унификация была и раньше - все и всё хранили в $HOME. А вот бардак в хомяке через некоторое время возникал, да и сейчас возникает. Вот сделал ls -a ~/ |grep "^\." | wc -l
и получил 74 файла/директории, и это при том, что часть программ хранит конфиги в .config, .kde и.т.п.
не всегда $XDG_* определены
Это в стандарте учтено "If $XDG_CONFIG_HOME is either not set or empty, a default equal to $HOME/.config should be used.". Так что здесь никаких проблем нет.
вообще введенный fdo стандарт достаточно хитрозад - ему не следуют даже сами составители (теже гномокеды следуют не полностью), да и gst от gconf (некоторые плагины) зависит . намекая что kde при полном следовании стандарту зависит от gtk/gnome - вот такие они "стандарты" ^_^
Насколько я понимаю fdo продвигает не один стандарт, а набор стандартов для разных задач. И разработчику программы, конечно нужны не все fso-шные стандарты, скажем, создателю консольной программы не нужна "Icon Theme Specification". Но следовать "XDG Base Directory Specification", IMHO ничто не мешает, кроме лени разработчиков, благо стандарт маленький и простой как 3 копейки.Структура KDE это какой то кошмар, без поиска найти что либо практически не возможно. Скажем хранить почту в "/home/user/.kde4/share/apps/kmail/mail" это бред. Но это IMHO не повод валить все в домашнюю директорию.
и как эта поддиректория обзывается ~/.config или ~/.all IMHO в споре ничего не меняет. Или я опять чего не понял в вашем примере?
на то он и $HOME что там можно бардак разводить как угодно. это всё тонко очень, как по мне так ещё и не очень прозрачно. раньше всё что в хоме с . в начале всё конфиги иначе нет - вот порядок, а тут разброд и шатание (помнится автор deadbeef хранил всё в .config и только из комментов на лоре узнал о xdg) - не будет разброда будет гуд - иначе лажа как сейчас
Это в стандарте учтено
но не учтена перезапись если я в ~/.config храню под такиме же именами что-то =)
на то он и $HOME что там можно бардак разводить как угодно.
Мне лично бардак в $HOME и не нравиться.
это всё тонко очень, как по мне так ещё и не очень прозрачно. раньше всё что в хоме с . в начале всё конфиги иначе нет - вот порядок
Не все так здорово, сейчас в ~/.pogram/ программа хранит все свои данные, и конфиги и кеши и сохраненные данные, например у меня в .VirtualBox/ лежат образы дисков, .bogofilter/ - база спама. XDG как раз предлагает структурировать данные ($XDG_CONFIG_HOME, $XDG_CONFIG_HOME и.т.д.).
а тут разброд и шатание ... - не будет разброда будет гуд - иначе лажа как сейчас
Для этого и делают стандарты, чтоб не было разброда и шатания.
но не учтена перезапись если я в ~/.config храню под такиме же именами что-то =)
А перезапись ~/.programrc?
Единственный резон для этого - бекап конфигов, что реализуемо ln'ами. Но симлинки всё равно останутся в ~
>для кнопки Search на моей мультимедиа-клавиатуры
«е»?
Плюсик тебе, добрый человек. У самого xbindkeysd некоторыми биндингами заведует.
«е»?
Плюсик тебе, добрый человек. У самого xbindkeysd некоторыми биндингами заведует.
>для кнопки Search на моей мультимедиа-клавиатуры
«е»?
«е»?
Спасибо, поправил.
xbindkeys не панацея, некоторые хоткеи могут (и должны) быть "от" window manager. Связанные с окнами, к примеру, или переключение рабочих столов.
А для таких плюшек, как mpc next - очень даже.
а я стараюсь xbindkeys и на управление wm повесить если wm позволяет (благо мой крысояд это позволяет) это неимоверно облегчает переход на другой wm(который тоже так умеет) если поменять конфиг не разбираясь в тонкостях хоткеев wm'а (да тот же крысояд считает клавиши при русской и басурманской раскладкой разными - Cyrillic_yeru и e к примеру, а ещё и заглавные буквы как Cyrillic_YERU != Cyrillic_yeru)
А тут я писал про MoC.
Кстати, в нынешнем компе нет мультимедия-клавиш, так что пост твой напомнил о xbindkeys, а то управляю либо запуском плеера, либо командами в консоли. Как не белый человек прям.
Кстати, в нынешнем компе нет мультимедия-клавиш, так что пост твой напомнил о xbindkeys, а то управляю либо запуском плеера, либо командами в консоли. Как не белый человек прям.
Мне думается, что обязательно стоило упомянуть про утилиту xev. Так, на всякий случай.
А еще есть xev!
Такого же будет недостаточно.
Лучше написать отдельный пост, а сюда ссылку.
Для настройки дополнительных клавиш мыши (скажем 4ой, 5ой) отлично подходит btnx
У меня таким раком настроены копирование и вставка.
У меня таким раком настроены копирование и вставка.
Кнопки мыши xbindkeys ловит. Насчет 4-5ых правда не знаю.
btnx это конф.тулза или что-то отдельное?
btnx это конф.тулза или что-то отдельное?
Apt-cache выдает это:
Я примерно понял :)
randomwind@farrias:~$ apt-cache show btnx
Package: btnx
Priority: optional
Section: utils
Installed-Size: 120
Maintainer: Philipp Huebner
Architecture: i386
Version: 0.4.11-3
Depends: libc6 (>= 2.3), libdaemon0 (>= 0.10), btnx-config (>= 0.4.9)
Filename: pool/main/b/btnx/btnx_0.4.11-3_i386.deb
Size: 20746
MD5sum: 32df79d5dd7c38b87ab5b53c654789f0
SHA1: 37ee391ab858e8ee0cf3be7e8bae17b92a2196f4
SHA256: 0858f94b64477a9f7db4ec02f27678c28fd5ae0efe6e9a9442328d579d550b55
Description-ru: служба перенаправления событий, генерируемых кнопками мыши
btnx — это служба, которая позволяет отправлять события клавиатуры и
комбинаций кнопок мыши при нажатии кнопки мыши. Также она может выполнять
команды. Обеспечивает простой и быстрый способ настройки кнопок мыши в
соответствии с вашими предпочтениями.
Homepage: http://www.ollisalonen.com/btnx/
Tag: hardware::input, hardware::input:mouse, implemented-in::c, role::program, use::configuring
Package: btnx
Priority: optional
Section: utils
Installed-Size: 120
Maintainer: Philipp Huebner
Architecture: i386
Version: 0.4.11-3
Depends: libc6 (>= 2.3), libdaemon0 (>= 0.10), btnx-config (>= 0.4.9)
Filename: pool/main/b/btnx/btnx_0.4.11-3_i386.deb
Size: 20746
MD5sum: 32df79d5dd7c38b87ab5b53c654789f0
SHA1: 37ee391ab858e8ee0cf3be7e8bae17b92a2196f4
SHA256: 0858f94b64477a9f7db4ec02f27678c28fd5ae0efe6e9a9442328d579d550b55
Description-ru: служба перенаправления событий, генерируемых кнопками мыши
btnx — это служба, которая позволяет отправлять события клавиатуры и
комбинаций кнопок мыши при нажатии кнопки мыши. Также она может выполнять
команды. Обеспечивает простой и быстрый способ настройки кнопок мыши в
соответствии с вашими предпочтениями.
Homepage: http://www.ollisalonen.com/btnx/
Tag: hardware::input, hardware::input:mouse, implemented-in::c, role::program, use::configuring
Я примерно понял :)
кстати есть какая-нить возможность перенести конфиги в ~/.config/ хотя бы для этой программы?