「FVWM」 – 鼠标、键盘、手势的绑定

Key [(window)] Keyname Context Modifiers Function

将键盘键绑定到指定的FVWM命令。语法与Mouse绑定的语法相同,只是用Keyname替换了鼠标按钮编号。通常,按下键时激活键绑定。

Keyname,是/usr/include/X11/keysymdef.h中定义的标准X11键名(没有XK_前缀),或keysym数据库/usr/X11R6/lib/X11/XKeysymDB。只保证在”没有修饰键“或”仅保持Shift键“的情况下生成的键名可以正常工作。

Context,该字段如同在Mouse绑定中的定义,指的是上下文窗口。但是,按下某个键时,上下文窗口是具有键盘焦点的窗口。这不一定与指针所在的窗口相同(使用SloppyFocus或ClickToFocus)。请注意,使用“R”(根窗口)上下文的键绑定无法与SloppyFocus和ClickToFocus一起正常工作。如果遇到问题,请改用PointerKey命令。如果要将键绑定到具有SloppyFocus或ClickToFocus的窗口,当指针不在窗口上时,该窗口应该起作用,fvwm假定指针位于客户端窗口上(即,您必须使用’W’上下文)。菜单的特殊上下文“M”可用于(重新)定义菜单控件。它可以单独使用,也可以与’T’,’S’,’I’,'[‘,’]’,’-‘和’_’一起使用。有关详细信息,请参阅“Menu绑定”部分。

Modifiers,该字段如同在Mouse绑定中的定义,修饰键,前缀键。

Function,要执行的FVWM命令。如果Function为’-‘,则删除绑定。

以下示例在按下Alt-Ctrl-Shift-F11时弹出内置窗口列表,无论鼠标指针位于何处:

Key F11 A SCM WindowList

将键绑定到标题栏按钮会导致该按钮的显示。有关详细信息,请参阅Mouse命令。

Mouse [(window)] Button Context Modifiers Function

定义鼠标绑定。

Button

Button,是鼠标按钮编号。如果Button为”0“,则任何按钮都执行指定的Function。请注意,只有鼠标按钮1到5会被X11完全支持。上述任何数字仅部分有效。复杂功能不能与这些按钮一起使用,也不能用任何需要按住按钮拖动指针的操作。这是由于X11的限制。默认情况下,允许的最高按钮数为”9“。

Context

Context,描述绑定的适用位置。有效上下文为:

  • R:根窗口
  • W:应用程序窗口
  • D:桌面应用程序(如kdesktop或Nautilus桌面)、
  • T:窗口标题栏
  • S:窗口四周(侧面、顶部、底部栏)
  • [、]、-、_:仅适用于左侧、右侧、顶部、底部
  • <、^、>、v:左上角、右上角、右下角、左下角
  • F:适用于窗框(角落)
  • I:表示图标窗口
  • 0~9:表示标题栏按钮
  • A:所有的以上情境。

这些字母字符之间可以的任何组合。例如,当鼠标位于窗口边框中的任何位置(标题栏按钮除外)时,应用“FST”上下文。只有’S’和’W’对于未修饰的窗口有效。

菜单的特殊上下文“M”可用于(重新)定义菜单控件。它可以单独使用,也可以与’T’,’S’,’I’,'[‘,’]’,’-‘和’_’一起使用。有关详细信息,请参阅“Menu绑定”部分。

特殊上下文“P”控制可用于放置窗口的按钮。使用此上下文时,不允许使用修饰符(修饰符必须为”N“),不允许使用窗口,并且Funxction必须是:PlaceWindowPlaceWindowDragPlaceWindowInteractiveCancelPlacementCancelPlacementDragCancelPlacementInteractive这七个中的一个。

PlaceWindow使Button可用于窗口放置,用于交互式和拖动移动。CancelPlacement反过来。这使得Button取消移动,以进行交互和拖动移动。但是,它可能无法覆盖放置后重新调整新窗口的大小。这由Emulate命令控制。此外,无论是否将其设置为PlaceWindow,都可以通过在拖动时释放被按住的按钮来放置被拖动的窗口。

PlaceWindowDrag、PlaceWindowInteractive/CancelPlacementDrag、CancelPlacementInteractive的作用类似于PlaceWindow/CancelPlacement,但它们仅影响以交互方式拖动/放置的窗口。

-与CancelPlacement是等价的。

以下示例使所有按钮(除了按钮3)可用于交互式放置,并且如果在完成移动之前按下按钮1可以取消,则通过其他按钮启动拖动移动而不是取消:

Mouse 0 P N PlaceWindow
Mouse 3 P N CancelPlacement
Mouse 1 P N CancelPlacementDrag

(window)

(window),默认情况下,绑定适用于所有窗口。您可以通过在括号中指定窗口名称来指定绑定仅适用于特定窗口。窗口名称是通配符模式,指定要将绑定应用于的窗口的类、资源、名称。

以下示例显示了如何使用相同的键绑定来执行不同的功能,具体取决于所关注的窗口:

Key (rxvt)  V A C Echo ctrl-V-in-RXVT
Key (*term) V A C Echo ctrl-V-in-Term
Key (*vim)  V A C --
Key         V A C Echo ctrl-V-elsewhere

“–”操作表示事件应传播到指定的窗口以进行处理。 这只是特定于窗口的绑定的有效操作。

此示例演示如何在rxvt窗口上按下按钮3时显示WindowList:

Mouse (rxvt) 3 A A WindowList

请注意,Fvwm实际上拦截了特定于窗口的绑定的所有事件,并且(如果聚焦窗口与任何绑定不匹配)将事件的合成副本发送到窗口。 这应该对大多数应用程序透明,但是(出于安全原因)某些程序默认忽略这些合成事件(xterm就是其中之一)。 要启用这些事件的处理,请将以下行添加到~/.Xdefaults文件中:

XTerm*allowSendEvents:  true

即可。

Modifiers

Modifiers,“N”表示无修饰符,“C”表示Ctrl,“S”表示Shift,“M”表示Meta,“L”表示Caps-Lock,“A”表示任何修饰符。 例如,修饰符“SM”表示当Meta键和Shift键同时按下时。X11修饰符mod1到mod5表示为数字“1”到“5”。默认情况下忽略修饰符“L”。要打开它,请使用IgnoreModifiers命令。

Function

Function,是fvwm的命令之一。或者如果Function为’-‘,则删除绑定。

标题栏按钮的编号为标题栏左侧的奇数编号按钮和右侧的偶数编号。 较小编号的按钮显示在窗口的外侧,而较大编号的按钮显示在窗口的中间(0表示10的缩写)。 总之,按钮编号为:

1 3 5 7 9 0 8 6 4 2

具有绑定动作的最高奇数编号按钮决定了标题栏左侧绘制的按钮数。具有绑定动作的最高偶数决定了绘制的右侧按钮的数量。 操作可以绑定到鼠标按钮或键盘键。

参考文献

Fvwm Manual/Mouse, Key & Stroke Bindings