joric,
RN-42 is very easy to make a keyboard without hassle and deep knowledge of Bluetooth while it doesn'tt offer much methods to controll power. See datasheet, you can find some options related to power control and try them. Of course I already tried them all and I couldn't find useful options to improve battery life much.
Other modules may have better power control but I didn't find a module with easy solution for keyboard like RN-42. With using HCI you will be able to control a module power consumption better but you need more hassle and knowledge.
I think the matter is not the bluetooth module it's the hhkb capacitive electronics (wake up still needs a fully powered capacitive circuit). According to specs it alone draws 100 mA (probably about 80 mA without usb hubs) at 5v (doesn't even function at 3.3v, unfortunately) so a 2000 mAh battery will last only 25 hours, tops. Looks like the only way is to redesign the main board, maybe even place the whole controller there, but it's not very easy. It just wasn't designed as a low voltage keyboard. As for RN-42 it draws only 12 mA in the idle mode and 26 uA (!) in the deep sleep mode. Maybe it's possible to implement wake up using some kind of piezo vibration sensor, that could actually be the solution. E.g. this one costs only $2.95:
https://www.sparkfun.com/products/9196. Or maybe it's possible to power the main board using short impulses (1/10 s.) in the sleep mode, I don't have much experience with that.
Also there's some tips about arduino/atmega battery operation (
http://www.mysensors.org/build/battery):
Use the 3.3V version Arduino Pro Mini with the lower CPU clock speed (8MHz)
Sleep whenever possible by powering down the Arduino and radio. The sensor node can periodically wake up by either triggering a timer interrupt or by an attached sensor registering a reading on one of the Arduino interrupt enabled io-pins. Most of the MySensors example sketches implement sleep mode.
When powered down, the CPU, DS18B20 temp sensor and radio consume (very roughly) 120 uA - which is similar to the self discharge rate of a battery.
Disconnect the Arduino's power indicator LED by cutting the track between the LED and the resistor in series. Saves about 1.5 mA >
Disconnect the 3.3 VDC regulator because it is not needed. Cut the Vout pin with a sharp fine wire cutter. See images to the right on how to locate regulator. Saves about 220 uA.
Power the device with two AA batteries connected in series to the PCB. You can power 5 VDC sensors using an ultra low power step up converter (see the Buying Guide below). Power regulators will reduce the battery life due constant power consumption.
And... I don't know really how much an average keyboard sleeps when it's in use, probably almost never so all that sleep/wake thing might be worthless.