Видео смотреть бесплатно

Смотреть 4k видео

Официальный сайт janmille 24/7/365

Смотреть видео бесплатно

Denis 23.01.2009 19:43

How-to`sxbindkeys а-ля vim

Многие знают об особенностях работы с клавиатурой в редакторе vim. И многим они нравятся. Мне также нравятся эти особенности, и после знакомства с дополнением vimperator для firefox iceweasel захотелось сделать нечто подобное для всей системы в целом. А точнее — запускать программы по нажатию на клавиатуре какой-то предопределенной буквы.



Для того чтобы это реализовать нужно было создать какой-нибудь дополнительный режим работы клавиатуры, при котором запуск программ не мешал бы обычному вводу текста. Что-нибудь, похожее на XCompose key.



Давным-давно у меня был xbindkeys, настроенный на работу с мультимедийными клавишами клавиатуры. Его-то я и решил поковырять в первую очередь, и... все получилось! Поковыряв примеры scm файлов настройки (до этого у меня был стандартный формат), я накидал такой скриптик:



 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
;; Удаление "вторых" клавиш

(define (remove-keys)

(remove-xbindkey '("g"))

(remove-xbindkey '("w"))

(remove-xbindkey '("f"))

(remove-xbindkey '("o"))

(remove-xbindkey '("a"))

(remove-xbindkey '("t"))

(remove-xbindkey '("m"))

(remove-xbindkey '("l"))

(remove-xbindkey '("h"))

(remove-xbindkey '("Escape"))

(grab-all-keys)

)



;; Добавление одной "второй" клавиши

(define (add-key key command)

(xbindkey-function key

(lambda ()

(run-command command)

(remove-keys))))



;; Список "вторых" клавиш для добавления

(define (add-keys)

(add-key "g" "google_search&")

(add-key "w" "wikipedia_search&")

(add-key "f" "firefox_url&")

(add-key "o" "opera_url&")

(add-key "a" "arora_url&")

(add-key "t" "google_translate&")

(add-key "m" "xclip -o | sed -n 1p | xargs xterm -e man")

(add-key "l" "arora http://linux.org.ru/")

(add-key "h" "arora http://habrahabr.ru/")



(xbindkey-function '("Escape")

(lambda ()

(remove-keys)))

)



;; цепляем "первую" клавишу

(xbindkey-function '("XF86AudioMute")

(lambda ()

(add-keys)

(grab-all-keys)))






Таким образом, при запуске xbindkeys цепляет клавишу XF86AudioMute, при нажатии на которую он цепляет заданные в функции add-keys клавиши поверх их первоначальных действий. После нажатия на одну из этих клавиш или клавишу Escape он их всех "отпускает" выполнять свои обычные действия, т.е. ввод символов.



Подробнее хотелось бы рассказать о клавишах g, f, m. Вдохновившись этой статьей на хабре, я написал вот такие скрипты:



Для g:
1
xclip -o | sed -r '2~1d;s/(^\s+|\s+$)//g;s/%/%25/g;s/#/%23/g;s/\$/%24/g;s/&/%26/g;s/\+/%2B/;s/,/%2C/g;s/:/%3A/g;s/;/%3B/g;s/=/%3D/g;s/\?/%3F/g;s/@/%40/g;s/\s/+/g' | awk '{print "http://www.google.ru/search?hl=ru&q;=" $1}' | xargs arora





Для f:
1
xclip -o | sed -n 1p | xargs firefox -new-tab





Для m скрипт приведен в конфигурационном файле.



Для остальных браузеров/сервисов скрипты аналогичны, только с указанием других команд/url'ов.



Теперь я могу в любое время выделить имя функции (например, printf) в любом редакторе, нажать последовательно две клавиши и посмотреть документацию по ней или найти в гугле ошибку из лога какой-нибудь программы.



Может быть, кому-то, кто не любит сажать свои пальцы на шпагат нажатием комбинаций клавиш (зачастую, уже занятых чем-нибудь), такой подход к хоткеям покажется полезным.



Тэги: vim xbindkeys
+ 3 -
Похожие Поделиться

Обращение к пользователям

В хорошем качестве hd видео

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн