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