--  README for bbkeys, a general XWindow keygrabber, meant to be a working
--  example of a better window-hinting scheme with blackbox.

One thing to note on the tool that may seem odd to the user, but... (well, 
frankly, I didn't see you helping me write this application.... =:) ) and 
that would be how I handle the configuration tool launch.  As it stands 
right now, when the user clicks the key-hole button to re-configure the
key-grabs, bbkeys will freeze itself until the re-configuration tool 
(explained below, Mr. Impatient) exits.  The problem that this is solved by is
that I didn't want to dump all keygrabbings in-between configuration sessions.
I either freeze bbkeys until the config-tool exits or I drop all keygrabbings
so the configuration tool can re-grab those keys.  Subject to change due to
user-feedback, of course.... 

As for the tool itself, it's a fairly trivial thing to write a keygrabber, and
it's a real cinch when you don't have to worry about users muddling about with
YOUR windows, etc.  But such is life. So here's the way it works: bbkeys will 
pick up its style-settings from the same places that the other bbtools does.
But its key-grabbings come from $HOME/.bbkeysrc.  There are several avenues
open to the user to set any key-grabs that the user wishes.  

-[  First is the qt-tool that is included inside ./bbkeysconf.  I'd 
    like to get this thing used more than the other two methods, but I'm 
    also very aware that many users use blackbox because of the fact that
    they don't like big, bloated things, and as such,
    they most probably don't have qt on their boxes.  Oh, and on this 
    qt-conflaguration tool, it's not built by default, so if you want it 
    (come on, you know you want it =:) ), you'll need to 'cd bbkeysconf'
    and do a `make` followed again up by a `make install` as root.  

-[  bbkeys can be launched with the -noqt option and whenever the little
    reconfigure button (the key-hole) on bbkeys is clicked, bbkeys will
    launch a very simple interactive rc-file generator (written in C) inside
    of an xterm.  I'm assuming even the anti-big-bloated-things-people
    have those luxuries on their boxen.  If this is an incorrect assumption,
    do let me know. =:)

-[  Third is manually editting $HOME/.bbkeysrc. The format is very easy, 
    and it consists of lines describing the Key to grab, the modifier to 
    grab the key with (if any, or "None" if none), and the action to 
    perform. My $HOME/.bbkeysrc file is as follows,
    for example's sake:

    KeyToGrab(m), WithModifier(Mod1), WithAction(Minimize)
    KeyToGrab(Up), WithModifier(Mod1), WithAction(Raise)
    KeyToGrab(Down), WithModifier(Mod1), WithAction(Lower)
    KeyToGrab(F4), WithModifier(Mod1), WithAction(Close)
    KeyToGrab(1), WithModifier(Mod1), WithAction(Workspace1)
    KeyToGrab(2), WithModifier(Mod1), WithAction(Workspace2)
    KeyToGrab(3), WithModifier(Mod1), WithAction(Workspace3)
    KeyToGrab(4), WithModifier(Mod1), WithAction(Workspace4)
    KeyToGrab(Right), WithModifier(Control), WithAction(NextWorkspace)
    KeyToGrab(Left), WithModifier(Control), WithAction(PrevWorkspace)
    KeyToGrab(Tab), WithModifier(Mod1), WithAction(NextWindow)
    KeyToGrab(ISO_Left_Tab), WithModifier(Mod1+Shift), WithAction(PrevWindow)
    KeyToGrab(F2), WithModifier(Mod1), WithAction(ShadeWindow)
    KeyToGrab(F10), WithModifier(Mod1), WithAction(MaximizeWindow)
    KeyToGrab(F1), WithModifier(Mod1), WithAction(ExecCommand), DoThis(xterm -fn sabvga -bg black -fg lightyellow -title 'vanRijn@movingparts_baybee!!')

    It's that easy.  

Whichever avenue you choose, bbkeys will check for a change in its .bbkeysrc
file every 10 seconds or so, so it'll pick up any changes you've made to it.

Is it perfect? Absolutely not.  

Will it core-dump all over your lap and puke on your shoes? Hopefully not.  

Are there bugs? Oh, you betcha.  

Do I want to know about them there bugs? Yah, for sure.

Are there things that I'm still planning to do? Ayup (that's what TODO is for).
 
-------------------------------------------------------------------------------
Ye olde liste of bbkeys window-commands....

          Minimize
          Raise
          Lower
          Close
          Workspace1
          Workspace2
          Workspace3
          Workspace4
          Workspace5
          Workspace6
          Workspace7
          Workspace8
          Workspace9
          NextWorkspace
          PrevWorkspace
          NextWindow
          PrevWindow
          ShadeWindow
          MaximizeWindow
          StickWindow
          ExecCommand
          MaximizeVertical
          MaximizeHorizontal

... more to come, I'm sure....
-------------------------------------------------------------------------------

--  Copyright (c) 1999-2000 by Jason Kasper
--  parts Copyright (c) 1998-1999 by John Kennis
--  parts Copyright (c) 1997,1998 by Brad Hughes.

--  This program is free software; you can redistribute it and/or modify
--  it under the terms of the GNU General Public License as published by
--  the Free Software Foundation; either version 2 of the License, or
--  (at your option) any later version.
--
--  This program is distributed in the hope that it will be useful,
--  but WITHOUT ANY WARRANTY; without even the implied warranty of
--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--  GNU General Public License for more details.
--
--  You should have received a copy of the GNU General Public License
--  along with this program; if not, write to the Free Software
--  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
--
-- (See the included file COPYING / GPL-2.0)
--

The files Image.cc (.hh) are taken from the Blackbox,
only one class-name was changed.

The files LinkedListed.cc (.hh) are taken from Blackbox without any change.

Thanks to:

Brad Hughes  <bhughes@tcac.net>
	For writing the Blackbox Windowmanager (and with this a great deal 
	of the code for this application).

John Kennis <j.m.b.m.kennis@ele.tue.nl>
	For writing the bbtools that I shamelessly snarfed

The Windowmaker guys for the great examples of key-code grabbing.
