aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/asciidoc/fluxbox-keys.txt89
1 files changed, 50 insertions, 39 deletions
diff --git a/doc/asciidoc/fluxbox-keys.txt b/doc/asciidoc/fluxbox-keys.txt
index a26af34..f98c40d 100644
--- a/doc/asciidoc/fluxbox-keys.txt
+++ b/doc/asciidoc/fluxbox-keys.txt
@@ -20,29 +20,41 @@ Variable parameters are shown in emphasis: 'argument'
20 20
21Optional parameters are shown in square brackets: ['argument'] 21Optional parameters are shown in square brackets: ['argument']
22 22
23All other characters shown are required verbatim. Whitespace is required 23Other characters shown are required verbatim. Exceptions to these rules are
24where shown, but it is fine to add more whitespace. 24mentioned when appropriate.
25 25
26DESCRIPTION 26DESCRIPTION
27----------- 27-----------
28The keys file defines the keyboard shortcuts for 'fluxbox(1)'. 28The keys file defines the keyboard shortcuts for 'fluxbox(1)'.
29 29
30You can customize fluxbox's key handling through the ~/.fluxbox/keys file. The 30You can customize fluxbox's key handling through the ~/.fluxbox/keys file. The
31file consists of lines of the basic format: 31file consists of entries of the basic format (the outer set of square brackets
32is verbatim):
32 33
33*['modifiers'] 'key' :'command' ['arguments' '...']* 34'keymode'*["*['modifiers'] 'key'*"]* = 'action'
34 35
35The space between the 'key' and the *:* before the 'command' is mandatory. 36For description of 'keymode' see the KEYMODES section.
36 37
37All modifiers and commands are case-insensitive. Some command arguments 38The string in square brackets specifies the key combination to which an action
38(especially those that will be passed to the shell) are case-sensitive. Some 39is bound. It consists of key names optionally preceded by modifiers. Keys and
40modifiers are separated by spaces. Modifiers are case-insensitive, while some
39key names are case-sensitive. 41key names are case-sensitive.
40 42
41Lines beginning with a '#' or '!' are considered comments and are unread by 43'action' can either be a lua funcion or a string representing a fluxbox command.
42fluxbox. 44Lua functions can for example be used to change values of fluxbox resources (see
45*fluxbox(1)* for a description of resources) or to add further keybindings.
46Fluxbox commands are described in the COMMANDS section.
43 47
44You will need to ``reload'' fluxbox after editing the keys file so it picks up 48To remove a binding for a specific key combination use *nil* as 'action'. To
45your change. 49remove all keybindings from a keymode, use the syntax:
50
51'keymode'*:clear()*
52
53Standard lua comments are used: everything from *--* to the end of the line is
54ignored. Block comments are enclosed in *--[[* and *]]*.
55
56Changes to this file are automatically picked up by fluxbox so there is no need
57to restart or reconfigure. Fluxbox will never overwrite this file.
46 58
47MODIFIERS 59MODIFIERS
48--------- 60---------
@@ -127,28 +139,37 @@ CHAINING
127Key bindings can be chained in a fashion similar to Emacs key bindings using the 139Key bindings can be chained in a fashion similar to Emacs key bindings using the
128syntax: 140syntax:
129 141
130'modifiers-1' 'key-1' 'modifiers-2' 'key-2' :'command' ['arguments ...']* 142'keymode'*["*['modifiers-1'] 'key-1' ['modifiers-2'] 'key-2'... *"]* = 'action'
131 143
132To abort a chained command part-way through typing it, press the <ESC> key. 144To abort a chained command part-way through typing it, press the <ESC> key.
133 145
134.To Bind CTRL+C CTRL+X (Which means, press CTRL+C then CTRL+X) to quit fluxbox 146.To Bind CTRL+C CTRL+X (Which means, press CTRL+C then CTRL+X) to quit fluxbox
135........ 147........
136Control c Control x :Quit 148default_keymode["Control c Control x"] = "Quit"
137........ 149........
138 150
139KEYMODES 151KEYMODES
140-------- 152--------
141A specific set of key mappings can be activated and de-activated on-the-fly 153A specific set of key mappings can be activated and de-activated on-the-fly
142using what are called keymodes. The syntax to define a mapping in a keymode 154using what are called keymodes. Fluxbox provides a default keymode called
143is: 155*default_keymode*. To create a new keymode use the syntax:
156
157'keymode' *= newKeymode()*
144 158
145*'keymode': 'modifiers' 'key' :'command' ['arguments' '...']* 159Where 'keymode' is any legal lua variable name. If you want to activate this
160keymode when a certain key combination is pressed, use the syntax:
146 161
147Where 'keymode' is any alpha-numeric string name. 162'other_keymode'*["*'key combination'*"] = function()* 'keymode'*:activate() end*
148 163
149When this keymode is activated (see the *KeyMode* command below), all bindings 164When this keymode is activated, all bindings
150prefaced by that keymode name become active (and all other keybindings will be 165prefaced by that keymode name become active (and all other keybindings will be
151deactivated) until the keymode changes again. 166deactivated) until the keymode changes again. Do not forget to add a binding
167which will reactivate the old keymode if you want to be able to return to it.
168
169If you do not want to type *default_keymode* for every binding, you can create
170an alias for it using the syntax:
171
172'x' *= default_keymode*
152 173
153COMMANDS 174COMMANDS
154-------- 175--------
@@ -558,16 +579,6 @@ These commands have special meanings or behaviors.
558 Alternates between the commands. On the first press of the bound 579 Alternates between the commands. On the first press of the bound
559 key, runs 'command1'. On the next press, runs 'command2'. 580 key, runs 'command1'. On the next press, runs 'command2'.
560 581
561*BindKey* 'keybinding'::
562 Adds the given 'keybinding' (which must be a valid key binding as
563 defined in the DESCRIPTION section above) to your keys file.
564
565*KeyMode* 'keymode' ['return-keybinding']::
566 Activates the named 'keymode' (or, all key binding lines prefaced
567 with the same 'keymode':) and deactivates all others until the
568 'return-keybinding' (by default *Escape*) is pressed. The default
569 keymode is named 'default'.
570
571*ForEach* {'command'} [{'condition'}] | *Map* {'command'} [{'condition'}]:: 582*ForEach* {'command'} [{'condition'}] | *Map* {'command'} [{'condition'}]::
572 Runs the given 'command' (normally one from the *Window Commands* 583 Runs the given 'command' (normally one from the *Window Commands*
573 section above) on each window. If you specify a 'condition' (See 584 section above) on each window. If you specify a 'condition' (See
@@ -625,7 +636,7 @@ include::client-patterns.txt[]
625 636
626FILES 637FILES
627----- 638-----
628*~/.fluxbox/keys*:: 639*~/.fluxbox/keys.lua*::
629 This is the default location for the keybinding definitions. 640 This is the default location for the keybinding definitions.
630*/usr/X11R6/include/X11/keysymdef.h*:: 641*/usr/X11R6/include/X11/keysymdef.h*::
631 X key names are in this file. 642 X key names are in this file.
@@ -655,18 +666,18 @@ Here are some interesting and/or useful examples you can do with your keys
655file. 666file.
656 667
657.................. 668..................
658# Mod4+drag moves a window 669-- Mod4+drag moves a window
659OnWindow Mod4 Mouse1 :StartMoving 670default_keymode["OnWindow Mod4 Mouse1"] = "StartMoving"
660 671
661# If any xterm windows are open, cycle through them. If none are open, open 672-- If any xterm windows are open, cycle through them. If none are open, open
662# one: 673-- one:
663Mod4 t :If {Some Matches (xterm)} {NextWindow (xterm)} {Exec xterm} 674default_keymode["Mod4 t"] = "If {Some Matches (xterm)} {NextWindow (xterm)} {Exec xterm}"
664 675
665# Set a different wallpaper on every workspace: 676-- Set a different wallpaper on every workspace:
666ChangeWorkspace :Exec fbsetbg ~/.fluxbox/bg$(xprop -root _NET_CURRENT_DESKTOP | awk '{print $3}').png 677default_keymode["ChangeWorkspace"] = "Exec fbsetbg ~/.fluxbox/bg$(xprop -root _NET_CURRENT_DESKTOP | awk '{print $3}').png"
667 678
668# Focusses the next window with it's xproperty 'PROP' set to 'foo' 679-- Focusses the next window with it's xproperty 'PROP' set to 'foo'
669Mod4 p Mod4 Tab :NextWindow (@PROP=foo) 680default_keymode["Mod4 p Mod4 Tab"] = "NextWindow (@PROP=foo)"
670.................. 681..................
671 682
672 683