7.8. Window Manager Key Customisation   

And the key bindings. The Meta key is normally the one marked Alt on the keyboard. As mentioned previously, this file contains a definition for the key bindings specified in the ".Xdefaults" file: 4Dwm*keyBindings: myKeyBindings

    ############################################################################

#
# Key Binding Description
#
# The following key bindings override the 4DwmKeyBindings located in the
# /usr/lib/X11/system.4Dwmrc file.
# myKeyBindings is defined to be the current resource for key bindings in
# the $HOME/.Xdefaults file of the ~4Dgifts directory.
#
# The key binding syntax is:
#
# keys bindings_set_name
# {
# key context function
# :
# key context function
# }
#
keys myKeyBindings
{
Meta<Key>w root f.refresh
Meta<Key>w icon|window f.refresh_win
Meta<Key>r window f.resize
Meta<Key>m window f.move
Meta<Key>a window f.raise_lower
Meta<Key>i root f.minimize_all
Meta<Key>i window f.minimize
Meta<Key>o root f.normalize_all
Meta<Key>b window f.maximize
Meta<Key>k window f.kill
# the following key definitions are ripped whole-hog out of
# /usr/lib/X11/system.4Dwmrc to maintain this functionality
# Same as the standard OSF Key Bindings
Shift<Key>Escape window|icon f.post_wmenu
Meta<Key>space window|icon f.post_wmenu
Meta<Key>Tab root|icon|window f.next_key
Meta Shift<Key>Tab root|icon|window f.prev_key
Meta<Key>Escape root|icon|window f.next_key
Meta Shift<Key>Escape root|icon|window f.prev_key
Meta Shift Ctrl<Key>exclam root|icon|window f.set_behavior
Meta<Key>F6 window f.next_key transient
Meta Shift<Key>F6 window f.prev_key transient
<Key>F4 icon f.post_wmenu
# <Key>Right window f.maximize
# <Key>Left window f.normalize
# <Key>Up window f.raise
# <Key>Down window f.lower
# <Key>Pause root|icon|frame|window f.exec "/etc/killall -USR1 xtodo&"
# SGI added key bindings
Shift<Key>Escape root f.menu 4DwmRootMenu
Meta<Key>space root f.menu 4DwmRootMenu
}

Note the 5 commented out key bindings above: <Key>Right -> <Key>Pause. These I use to get better functionality out of my Window System. The first 4 are used to control size and position of windows.

<Key>Right means if I press the key which is the right arrow key in a window, then the f.maximize function is applied to that window : it expands to its largest size! Similarly for <Key>Left, it returns to its normal size. In this way, I can get more geometry real estate for my windows in one keystroke and return them to normal size with another.

The Up and Down arrow buttons are tied to pushing and popping the window. Unfortunately, I lose the use of the arrow keys for vi but this is not disasterous for me. Perhaps you could tie that functionality to Ctrl<Key>XXX or Meta<Key>XXX rather than just <Key>XXX.

The last entry, <Key>Pause is used to send a USR1 signal to a program which runs in the background. (In this case it is an X based To-Do list manager which is totally "withdrawn" from the screen - it does not take up any real-estate. The signal tells it to "map" itself onto the display!!) Notice that this function happens if the cursor is in the root window, a frame of a window, and icon or the body of a window. That is, everywhere.

Can you see from the above that if I type <ALT>k in a window, that the X Window System application is killed?