I occasionally use the following script to add bluetooth keyboards to my systems, it adds it at a system level, rather than a user level, which seems to make things work right from the boot, and my keyboard(s) are usable from the login prompt.
As written, you'll need bash (v4.0+ hopefully) and the bluez package, which supplies the bluez-simple-agent, bluez-test-device, bluez-test-input programs.
Most of the code below is to implement a list to allow you to choose which device, it really just boils down to the last 6 (non-comment) lines, if you know your BT MAC Address, you can replace all the choice stuff with a static assignment.
#!/bin/bash # # L Nix <[email protected]> # setup-bt-kb : allow choosing & pairing a bluetooth keyboard from the console # declare -a addrlist # while [ 1 ]; do echo -n "Scanning for Bluetooth devices ... " readarray -n 10 -O 0 -t addrlist < <(hcitool scan|grep -v "^Scanning"|sed -e "s/^[ \t]//g" -e "s/\t/ /g" | head -n 9) echo echo length=${#addrlist[@]} a=1 while [ ${a} -le ${length} ]; do echo "$a) ${addrlist[$a-1]}" a=$((a + 1)) done echo while [ 1 ]; do if [ ${length} -gt 0 ]; then echo -n "Choose (1-${length}), or " fi echo -n "'R' to rescan: " read -n 1 REPLY echo case ${REPLY} in Q) # just quit exit 0 ;; [0rR]) echo REPLY=0 break ;; [123456789]) if [ ${REPLY} -le ${length} ]; then echo "Got ${REPLY}" break fi ;; *) ;; esac done if [ ${REPLY} -gt 0 ]; then break fi done # device=${addrlist[${REPLY}-1]} # BTADDR=${device/% *} BTNAME=${device/#??:??:??:??:??:?? } # echo "selecting '${BTNAME}' at ${BTADDR}" # echo "Pairing with ${BTNAME} (Generally '0000')" bluez-simple-agent hci0 ${BTADDR} # echo "Setting trust level with ${BTNAME}" bluez-test-device trusted ${BTADDR} yes # echo "Connecting to ${BTNAME}" bluez-test-input connect ${BTADDR} # echo "Completed"