The following frame shows the button bindings of the SG 4Dwmrc file.
The first entry -
<Btn1Click> frame f.raiseover the frame of a window then the f.raise event will be invoked.
indicates that when a Btn1Click is detected and the cursor is
Shift Ctrl<Btn1Down> window f.raise_resizeButton number 1 is down and the cursor is inside a window then the f.raise_resize event is invoked. And so on.
indicates that when the Shift and Control keys are pressed and
As mentioned previously, this file contains a definition
for the button bindings specified in the ".Xdefaults" file:
4Dwm*buttonBindings: myButtonBindings
############################################################################
#
# Button Binding Description
#
# The syntax for this type of structure is as follows:
#
# buttons bindings_set_name
# {
# button context function
# :
# button context function
# }
#
# The syntax for the context specification is
#
# context = object[|context]
# object = root | icon | window | title | frame | border | app
#
# The context specification indicates where the mouse cursor must be for the
# button binding to be effective. For example, a context of `window' indicates
# that the pointer must be over a client window or window manager frame for
# the button binding to be effective. The `frame' context is for the window
# manager frame around a client window (including the border and titlebar),
# the `border' context is for the border part of the window manager frame
# (not including the titlebar), the `title' context is for the title area of
# the window manager frame, and the `app' context is for the application window
# (not including the window manager frame).
#
# If a function is specified in a type of resource where it is not supported
# or is invoked in a context that does not apply, the function is treated as
# f.nop (no operation is performed).
#
############################################################################
#####################################################################
#
# The following button bindings override the 4DwmButtonBindings located in the
# /usr/lib/X11/system.4Dwmrc file.
# myButtonBindings is defined to be the current resource for button bindings in the
# $HOME/.Xdefaults file of the ~4Dgifts directory.
#
buttons myButtonBindings
{
<Btn1Click> frame f.raise
<Btn1Click> icon f.normalize
Ctrl<Btn1Down> frame|icon f.lower
Shift<Btn1Down> frame|icon f.raise
Shift Ctrl<Btn1Down> window f.raise_resize
<Btn2Down> frame|icon f.move
Ctrl<Btn2Down> frame|icon f.lower
Shift<Btn2Down> frame|icon f.raise
Shift Ctrl<Btn2Down> window f.raise_move
<Btn3Down> frame|icon f.post_wmenu
Ctrl<Btn3Down> frame|icon f.post_wmenu
Shift<Btn3Down> frame|icon f.post_wmenu
Meta<Btn3Down> window|icon f.post_wmenu
Shift Ctrl<Btn3Down> window f.post_wmenu
<Btn1Down> root f.menu clients
<Btn2Down> root f.menu hosts
<Btn3Down> root f.menu rootMenu
# Exercise extensive care when binding things to the meta key.
# this can be costly to emacs and other applications see below.
Meta<Btn1Down> frame f.raise_lower
Meta<Btn2Down> frame f.move
# Here is how to make an emacs user grumpy.
# Meta<Btn1Down> window f.raise_lower
# Meta<Btn2Down> window f.move
Meta<Btn1Down> window f.minimize
}