События.

Само собой разумеется, что вызов любой функции можно привязать к наиболее интуитивному для вас событию. События могут поступать, например, от клавиатуры и мыши. Синтаксис в обоих случаях (а они не единственны -- читайте документацию) одинаков: Key Keyname Context Modifiers Function и Mouse Button Context Modifiers Function соответственно. Keyname соответствует название интересующей вас клавиши (что выдает, например, программа xev), например, Multi_key. Context означает контекст события, то есть то место, где находился фокус во время события. Это может быть ``R'' для ``рабочего стола'', ``W'' для окна приложения, ``D'' для дектопного приложения (например, Nautilus), ``T'' для заголовка окна, ``S'' для границы окна (``['',``]'',``-'' и ``_'' для каждой границы соответственно), ``F'' для уголка границы (соответственно ``<'', ``^'', ``>'' и ``v''), ``I'' для иконки окна и цифры от 0 до 9 для соответствующих им кнопок заголовка. Естественно, вы можете указывать одновременно несколько контекстов (например, ``FST''). Модификатором может служить любая не запрещенная вами (по умолчанию запрещена Caps-Lock) клавиша-модификатор, например ``C'' соответствует Ctrl, ``S'' -- Shift, ``M'' -- Meta (обычно Alt), ``L'' -- Caps-Lock (если вы отмените его игнорирование), ``N'' -- если ваше событие должно выполняться только при выключенных модификаторах и ``A'' для любого модификатора.

Как видите все очень просто. Пример: # Выводим меню выбора параметров окна по привычной # клавише, либо по правой (третьей) кнопке мыши на # заголовке Key Menu W N Popup Window-Ops Title o0 o0 Mouse 3 T A Popup Window-Ops # Выводим главное меню по правой Win-кнопке Key Multi_key A N Popup /Debian # По Ctrl+TAB, или средней кнопке на ``рабочем столе'' # список окон Mouse 2 R A WindowList \ NoGeometryWithInfo NoCurrentDeskTitle Key TAB A C WindowList Root o70 o30 \ NoGeometryWithInfo NoCurrentDeskTitle # Ctrl-Esc для закрытия окна (ИМХО интуитивнее Alt+F4) # А по Ctrl+Shift+Esc закрываем все окна данного класса Key Escape A C Close Key Escape A CS Pick All ($c) Close # Для перемещения окна удерживая Alt # хватаем его правой кнопкой мыши и тащим... # Для изменения размера --- средная кнопка Mouse 3 W M Move Mouse 2 W M Resize Если вам не по нраву то, что в число модификаторов разработчики FVWM включили NumLock и ScrollLock, то (конечно же) это легко исправить командой IgnoreModifiers L25

Но и это не все! Как вам возможность изобразить курсором мыши некоторую фигуру, нажать некую кнопку и тем самым запустить ассоциированную с данной фигурой и кнопкой функцию? Подробности читайте в документации. Пример, запускающий Netscape, при рисовании буквы ``N'' и правой кнопке мыши: Stroke 7415963 3 R N Exec exec netscape...

Copyleft © 2002-2003 г.   Nikolay A. Panov, "Intro To Linux" (orig),  niksite@mail.ru,  ICQ: 122-40-8888