[If you don’t know who or what these (*) are, check the Glossary page.]
At The Robotic Frog, we’re still very much in love with CrunchBang 11 (Waldorf). It has a couple of small warts, but from our point of view, it’s performing brilliantly.
CrunchBang isn’t a Linux distribution that we would recommend to a complete Linux newbie. If you’re brand new to Linux, RoboFrog* recommends Xubuntu 12.04 or Linux Mint. (TheFrog prefers Xubuntu.) If you’re at all comfortable with using command line and a text editor, with a little persistence, you should be able to get CrunchBang to look and feel the way you want. It’s worth the effort.
CrunchBang 11: Apple Extended Keyboard
Wired Apple Keyboard (Photo credit: Jalada and Sefran)
I love the Apple Extended (aluminum) Keyboard. The touch is just right, the keys are large, and they’re well-spaced for my hands. I like the short keystroke too.
Fair warning: RoboFrog’s aunt has the same Apple Extended Keyboard and she hates it…because of the size of the keys and short keystroke. Go figure.
There are a couple of problems with it, though. First, it doesn’t have an Insert key. I use Freemind (mind-mapping software)…a lot. The keyboard command to insert a new node is…you guessed it…Insert. Some have recommended the Enter key on the number pad for this function, but Enter doesn’t do the same thing as Insert. Enter adds a new node to the root node…no matter which node is highlighted. Insert adds a new node to the highlighted node. With Numlock turned off, the Zero-key on the number pad will produce the Insert command. It’s a minor irritation, though, to remember to turn the number pad on and off each time I use Freemind. I prefer to have the number pad always turned on.
The Apple keyboard has several unused keys (in the Linux world): F13-F19. Those function keys are just sitting there taking up space…unless we give them a job. F13 looks like a good candidate for Insert…if we can figure out how to assign the Insert command to it.
Google It!
We talked last time about the power of Google (search engines) and man pages. Here’s how we used those tools to solve our Insert-key problem.
A Google search is almost always the best place to start solving a problem. We’re not the most sophisticated searchers; we keep it simple. First, think about what kind of information you want. In this case, we have an Apple Extended Keyboard; we want to assign the Insert command to an unused key; and, we think F13 (the F13 function key) is a terrific candidate since it’s near the location that we expect the Insert key on a PC keyboard. So here’s our Google search:
[apple extended keyboard insert f13]
As you can see, it’s simply a bunch of keywords identifying the three things we want to know something about: apple extended keyboard, insert, f13. F13 is a wild guess, but it makes the search more specific…and it does make a difference. The solution we finally choose does not come up if we search without the f13 keyword.
The Google search gives a list of links. The best of all worlds is if we get a link that say, “RoboFrog, here’s how to set the F13 key to Insert on your Apple Extended Keyboard with CrunchBang 11 running on BigDog.” That rarely happens. We’d like a specific solution to our problem, but more importantly, we’re looking for clues. One of the links says, “Apple Keyboard – ArchWiki.” This is from the Arch Linux documentation. Your first impression may be that this isn’t very useful because it’s about Arch Linux. We’re trying to configure CrunchBang Linux. That’s a mistake. We used Arch Linux for a long time and know what’s in their wiki documents. Arch-folk are expected to fix their own problems. To help with that, the Arch Linux community put together terrific documentation that they keep on the ArchWiki. I can’t count the number of problems that RoboFrog has solved with information HE* found on the ArchWiki. So, when an ArchWiki link pops up, we pay attention.
What did we find at the ArchWiki? We’re not going to repeat the wiki here. Click the link to see the wiki page. We’ll point out the sections in which we found useful information.
“Function keys do not work” — (ArchWiki)
It’s not that the function keys don’t work. It’s that you have to use the fn shift key to get to them because the keyboard defaults to the media keys. Here’s an example of a problem we didn’t even know that we had. We really like the media keys and we use them a lot. If you want an interesting exercise, try pressing the fn shift key to activate the function keys while, at the same time, holding down both the Control and Alt keys, then pressing F3 (Ctl+Alt+F3). (Experienced Linux-ers know that this is how you switch to a console window.) You have to be a contortionist to do this. Then, you have to press Ctl+Alt+F7 to return to your graphical environment and that’s even more difficult. It would be much better to shift the media keys rather than the function keys. So in this ArchWiki section, is a fix for this problem for Arch Linux…and, it works just fine with CrunchBang.
“Media Keys” — (ArchWiki)
We keep a utility called Tomboy running on all of our machines. It’s a notes application. A notes application is like having a pad of sticky-notes always available. It’s a terrific tool to have when problem solving. We copy and paste the information from the ArchWiki to a ‘sticky-note’ and continue looking for clues. That way we don’t have to keep going back and forth between web sites.
Reading down the ArchWiki page, we find a few more clues. Under the Media Keys section are the following:
- ~/.Xmodmap
- keycode 49 = less greater less greater bar brokenbar
- “Then run
xmodmap ~/.Xmodmap
. This command can also go into ~/.bashrc
.”
- xev
That’s quite a lot of information and it took only a few minutes to get it. If your new to Linux, this is probably pretty scary stuff. If, however, you know a bit about configuration files, command line utilities, and shell scripting there are a bunch of clues here.
.Xmodmap is a configuration file and it’s located in the home directory (~/). I checked my home directory and there’s no .Xmodmap. That’s okay; it means that I need to create one.
[keycode 49 = …] When you press a key, it produces a number that the computer reads: a keycode. This tells us that we can take a known keycode (49 in this case) and assign stuff to it. We don’t want to play around with keycode 49, but if we can find the keycode for our F13 key, then this is how to assign a function to it. The information for the assignment is stored in our .Xmodmap configuration file. Apparently, that’s not enough, though.
[xmodmap] appears to be a utility program and we have to feed it the information in our .Xmodmap file. There’s another clue that I missed: “This command can also go into ~/.bashrc."
Frankly, I’m a little embarrassed that I missed this one. It’s important, as you’ll see later.
[xev] This is the holy grail. It’s a utility program that displays the keycode for a key when we press it. Now we have a way to determine the keycode for our F13 function key.
We learned a lot. Even though this information isn’t specific to CrunchBang Linux (or whatever your favorite distribution) it’s very useful and applicable. The point is that we should scan links from our search even if they don’t appear applicable to our particular distribution. This is Linux and there are more things, from distribution to distribution, that are the same than are different.
Lazy Robot: Apple Aluminum Keyboard on Linux
You know what? Just as we like Robotic Frogs, we also like Lazy Robots (LR)! Going back to our search list, the third entry is for Lazy Robot. We consider that a good omen. Not only did we get a chuckle from the name, but we also got an exact solution to our problem…almost.
If we follow the link to Lazy Robot, we’re greeted immediately with a picture of the Apple Extended Keyboard. We’re in the right place. Lazy Robot does a terrific job of distilling things down to the essentials.
Scanning the page we see that the keycode for F13 is 191 and LR shows us how to assign Insert to the keycode. It doesn’t get much better than that.
That’s it. It will be enabled when you log in. If you want to enable it immediately, type this:
$ xmodmap .Xmodmap
Magic. You now have an insert key.
Caveat emptor: I can’t tell you how grateful we are to folks like Lazy Robot for sharing information like this. It’s one of the reasons that we do what we do. But…there’s always a ‘but’, isn’t there? But this is only mostly right for our system. That’s not unusual, so be careful.
Here’s how we configure CrunchBang:
- create a configuration text file in our home directory (/home/robofrog/.Xmodmap)
- Add a line to the file: keycode 191 = Insert
- From the command line execute: xmodmap ~/.Xmodmap
RoboFrog and I are doing high-fives. It works perfectly. Finally, I have an Insert key. No more shifting the number pad on and off. That is until I rebooted. Once I rebooted, no more Insert.
“Insert is gone,” says I.
“Did you add xmodmap to the start up script?”
HE* has that look on HIS* face. You know the one. The one that says, “Did you plug it in?” I just want to smack HIM. Actually, RoboFrog is the most patient of Frogs. Maybe the look is my imagination. Not!
“Try running xmodmap again,” says TheFrog.
I do…Magic!…I have Insert again. What does that tell me? That xmodmap must be run every time my system boots (Of course, TheFrog knows that.). No problem. I do that by putting the command in one of my startup scripts. CrunchBang gives me a simple way to do that.
Settings->Openbox->Edit autostart
Add this line to the Openbox autostart configuration file:
xmodmap ~/.Xmodmap &
Now Insert is assigned to F13 every time my system boots. More problem solving and the Apple keyboard next time.