This section describes how to change how BitchX behaves when you press a key, and also what keys are already set up to do special things. - Introduction to Binding - Seeing Your Current Bindings - Saving Your Changed Bindings - Finding what key is bound to a given Function - Screen Functions - Default Bindings for BitchX
You will already have noticed that when you press the RETURN key, the message you have typed is sent to the current channel, or the command you have typed is obeyed. This is because the RETURN key is bound to the internal BitchX function SEND_LINE.
You can change the way keys are bound with the /BIND and /RBIND commands. If you give the BIND command the name of a key, it wil tell you what the key does. Use the circumflex (^) to ask about control characters. For example, let's see what Control-A is bound to:
You type: | /bind ^A |
Output: | * ^A is bound to BEGINNING_OF_LINE |
So in my copy of BitchX at least, Control-A moves to the start of the input line. Yours might do something different. To bind Control-A to BEGINNING_OF_LINE, you would do this:
You type: | /bind ^A BEGINNING_OF_LINE |
Output: | * ^A is bound to BEGINNING_OF_LINE |
You can see that BitchX confirms the binding with that message.
One way to see what your bindings are right now is to use the ?BIND command with no arguments. Unfortunately, this will produce a lot of output, and is a little hard to read. You can scroll up (the page up/down keys may work, if you have them, or ESC-p and ESC-n may work), but an easier way is to save the list to a file.
You type: | /win logfile ~/bindings /win log on /bind /win log off |
This will still generate masses of output, but a copy of it will be saved in the file bindings in your login directory. You can look at that file with a text editor such as vi or pico, or use the less command to scroll through it.
After a while, it is very likely that you will find some key bindings that you prefer over the default ones, and you will want to save them. Place the following lines in a file called .bitchxrc in your login directory (be careful to remember the dot at the start of the filename!):
You type: | /bind ^A BEGINNING_OF_LINE /load ~/.BitchX/BitchX.sav |
next time you start BitchX, Control-A will be bound to BEGINNING_OF_LINE.,/p>
You can find out what keys you need to press to activate a certain function using the /RBIND comand, which takes a function name as an argument and shows you all the key sequences that are bound to that function.
You type: | /rbind BEGINNING_OF_LINE |
Output: | * ^A is bound to BEGINNING_OF_LINE * META32-~ is bound to BEGINNING_OF_LINE |
In this case, there are two key sequences bound to Beginning of Line, although if we try to find how to type META32, we are in for a surprise:
You type: | /rbind META32 |
Output: | no output |
It turns out that, by default, META32 is unbound, so there is no way to type it. You may find that if you have a keyboard with a HOME or Start of Line key, BitchX will bind it for you automatically, but the important point to note is that not all functions nd meta keys are actually bound to anything.
This is the complete list of BitchX bindable functions availble for use with the /BIND command. The default keybindings are shown in the next section, below.
Function Name | Description |
---|---|
AUTOREPLY | types the nick of the last person to msg you |
AUTOREPLY_BACK | (commented out; a no-op) |
BACKSPACE | delete left one charater in the input buffer |
BACKWARD_CHARACTER | move left one charater in the input buffer |
BACKWARD_HISTORY | replace the input buffer with the previous string from your input history |
BACKWARD_WORD | move left to a space |
BEGINNING_OF_LINE | move left to the start of the line |
BLINK | insert the blink attribute (control-F) |
BOLD | insert BOLD (control-b) to toggle bold on/off |
CDCC_PLIST | display the offerlist to current channel |
CHANNEL_CHOPS | shows ops on the current channel (see USER) |
CHANNEL_NONOPS | shows non-ops on the current channel (see USER) |
CHANGE_TO_SPLIT | switch server to one on the other side of a netsplit |
CHELP | print the help index |
CLEAR_SCREEN | clear the current window |
COMMAND_COMPLETION | attempts to complete the current command based on what you've typed so far, so /cle might expand to /CLEAR for example |
CPU_SAVER | who knows? |
DCC_PLIST | show active DCC transfer status |
DCC_STATS | show accumulated DCC transfer stats |
DELETE_CHARACTER | delete under the cursor |
DELETE_NEXT_WORD | delete word forward |
DELETE_PREVIOUS_WORD | delete word backward |
DELETE_TO_PREVIOUS_SPACE | delete bigword backward |
END_OF_LINE | move to the end of input line |
ENTER_DIGRAPH | enter an 8-bit character I think |
ERASE_LINE | clear the whole input line |
ERASE_TO_BEG_OF_LINE | delete to the start of the line |
ERASE_TO_END_OF_LINE | delete to the end of the line |
FORWARD_CHARACTER | move forward one character |
FORWARD_HISTORY | replace the input line with the next item from your history |
FORWARD_WORD | move forward one word |
HIGHLIGHT_OFF | insert the highlight off character (control-o) that cancels all highlight modes (bold, underline, flash) |
IGNORE_NICK | inserts a command /ig <nick>, where <nick> is the last nick to send you a message. Press return if you want to keep the command, or delete it as if you had typed it by mistake... |
JOIN_LAST_INVITE | join the channel to which you were most revently /INVITEd |
META1_CHARACTER | |
META2_CHARACTER | |
META3_CHARACTER | |
META4_CHARACTER | |
META5_CHARACTER | |
META6_CHARACTER | |
META7_CHARACTER | |
META8_CHARACTER | |
META9_CHARACTER | |
META10_CHARACTER | |
META11_CHARACTER | |
META12_CHARACTER | |
META13_CHARACTER | |
META14_CHARACTER | |
META15_CHARACTER | |
META16_CHARACTER | |
META17_CHARACTER | |
META18_CHARACTER | |
META19_CHARACTER | |
META20_CHARACTER | |
META21_CHARACTER | |
META22_CHARACTER | |
META23_CHARACTER | |
META24_CHARACTER | |
META25_CHARACTER | |
META26_CHARACTER | |
META27_CHARACTER | |
META28_CHARACTER | |
META29_CHARACTER | |
META30_CHARACTER | |
META31_CHARACTER | |
META32_CHARACTER | |
META33_CHARACTER | |
META34_CHARACTER | |
META35_CHARACTER | |
META36_CHARACTER | |
META37_CHARACTER | |
META38_CHARACTER | |
META39_CHARACTER | |
NEW_BEGINNING_OF_LINE | same as beginning_of_line but also sets the internal extended_handled variable. |
NEW_SCROLL_BACKWARD | scroll the window half a screen backwards |
NEW_SCROLL_END | scroll to the end (the most recent part) of the current window |
NEW_SCROLL_FORWARD | scroll half a page down towards the end of the current window |
NEXT_WINDOW | move to the next window |
NICK_COMPLETION | the nick completion character |
NOTHING | key bound to this are silently ignored |
PARSE_COMMAND | not sure what this does |
PREVIOUS_WINDOW | cycle through windows |
QUIT_IRC | leave BitchX without any prompt or warning |
QUOTE_CHARACTER | the next character you type is inserted literally |
REFRESH_INPUTLINE | redraw the input buffer |
REFRESH_SCREEN | refresh the entire screen |
REVERSE | insert the reverse video command character (contreol-v) |
SCROLL_BACKWARD | scroll the window half a screen backwards |
SCROLL_END | scroll to the ens of the window" |
SCROLL_FORWARD | scroll forwards half a screen in the current window |
SCROLL_START | scroll to the start of the scrollback buffer in the current window |
SELF_INSERT | insert the key typed |
SEND_LINE | return: do the line! |
SHOVE_TO_HISTORY | save the current line in the history |
STOP_IRC | suspend BitchX (use fg to get it back; STOP_IRC is not always available |
SWAP_LAST_WINDOW | swap the current window with the last hidden one in the list |
SWAP_NEXT_WINDOW | swap the current window with the next hidden one |
SWAP_PREVIOUS_WINDOW | swap the current window with the next hidden one |
SWITCH_CHANNELS | talk to another channel in the same window |
TAB_MSG | inserts /msg nick at the start of the buffer< based on people who have messaged you recently |
TAB_MSG_BACK | autoreply |
TOGGLE_CLOAK | ctcp cloaking on or off; this will give a message like CTCP Cloaking is now [Off] when you press the key (Delete on the arrowpad by default). With CTCP cloacking on, people don't get replies from you for ctcp requests like ping, version and finger. |
TOGGLE_INSERT_MODE | witch between insert and overtype mode |
TOGGLE_STOP_SCREEN | stop scrolling I think" |
TRANSPOSE_CHARACTERS | swap the character under the cursor with the one to its left |
TYPE_TEXT | in a script, this makes text appear in the input buffer. In input, it's already there, so you don't see anything. |
UNCLEAR_TEXT | undoes the effect of clear! |
UNDERLINE | inserts control-_, the underline start/stop character |
UNSTOP_ALL_WINDOWS | resume scrolling everywehre |
WHOLEFT | show who was disconnected by a netsplit in all your current channels |
WINDOW_BALANCE | make the split screen windows be equally sized |
WINDOW_GROW_ONE | make the current window larger |
WINDOW_HELP | show the window help index |
WINDOW_HIDE | hide the current window; text will continue to accumulate in the hidden window with no indication that it's there. |
WINDOW_KILL | close (kill) the current window; does not part any channels. |
WINDOW_LIST | list your windows |
WINDOW_MOVE | swap this window with some other one |
WINDOW_SHRINK_ONE | make the current window smaller |
WINDOW_SWAP_1 | |
WINDOW_SWAP_2 | |
WINDOW_SWAP_3 | |
WINDOW_SWAP_4 | |
WINDOW_SWAP_5 | |
WINDOW_SWAP_6 | |
WINDOW_SWAP_7 | |
WINDOW_SWAP_8 | |
WINDOW_SWAP_9 | |
WINDOW_SWAP_10 | |
YANK_FROM_CUTBUFFER | insert the last text you deleted |
The following table shows the default key bindings for BitchX 1.75p2. In a few places, the ankh script changes bindings to make them closer to ircII, emacs, bash and other common utilities, and this has been indicated too.
Any keys not listed here are bound to SELF_INSERT; key sequences not listed here (such as control-w control-w) are bound to NOTHING instead.