| The Following User Says Thank You to cardiff-blues For This Useful Post: | ||
I got an N900 just before Christmas and already had a Freedom Universal 2 BT keyboard. I followed the instructions to enable HID support on the N900 and was able to pair the keyboard. It's been working fine since then, but only as a larger copy of the built-in keyboard. By that I mean:Since following qobi's instructions it's been working as before but now with all keys working as expected - brilliant work!
The Alt-Gr key worked as the function key. All the keys and symbols on the internal keyboard could be reproduced with the BT keyboard - tap or double/tap Shift or Alt-Gr for caps/lock or symbol/lock. With Alt-Gr pressed 'A' would give '*', 'H' would give ')' etc.
Once the device was paired there was no need to re-pair unless it was rebooted. Once the keyboard was opened, the connection light would flash briefly and it was ready to go.
Installing the new firmware over-the-air did not cause me any problems.
#!/bin/bash
kbid=`hildon-im-xkbtool --list | grep FREEDOM`
#echo "kbid:${kbid:3:1}"
setxkbmap -device ${kbid:3:1} -I -I/usr/share/X11/xkb-chinook -rules base -model pc105 -layout us
#!/bin/bash
kbid=`hildon-im-xkbtool --list | grep FREEDOM`
#echo "kbid:${kbid:3:1}"
setxkbmap -device ${kbid:3:1} -I -I/usr/share/X11/xkb-chinook -rules base -model pc105 -layout us
import sys
# import python dbus module
import dbus
# import python dbus GLib mainloop support
import dbus.mainloop.glib
import gobject
import thread, time
import re
import commands
#hildon-im-xkbtool --list
KEYBOARDNAME = "Nokia SU-8W"
#Keyboard mac address
DEVICE = "dev_00_0E_xx_xx_xx_xx"
#setxkbmap
MODEL = "nokiasu8w"
LAYOUT = "fi"
def connected(*args, **kwargs):
bus = dbus.SystemBus()
iface = dbus.Interface(bus.get_object('org.freedesktop.Notifications',
'/org/freedesktop/Notifications'),
'org.freedesktop.Notifications')
if args[0] == "Connected":
if args[1] == False:
iface.SystemNoteInfoprint(KEYBOARDNAME + " disconnected")
else:
iface.SystemNoteInfoprint(KEYBOARDNAME + " connected")
time.sleep(2)
testi = commands.getoutput("hildon-im-xkbtool --list")
#ID 3, Name: "keyboardname"
keybId = re.search("ID (\\d+), Name: \"" + KEYBOARDNAME, str(testi)).group(1)
commands.getoutput("setxkbmap -device " + keybId +
" -I -I/usr/share/X11/xkb-chinook " +
"-rules base -model " + MODEL +
" -layout " + LAYOUT)
def main():
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
# Get the session bus
bus = dbus.SystemBus()
try:
#Get default adapter
manager = dbus.Interface(bus.get_object("org.bluez",
"/"),
"org.bluez.Manager")
#dbus-send --system --print-reply --dest=org.bluez / org.bluez.Manager.DefaultAdapter
adapter = manager.DefaultAdapter()
# Get the remote interface for the remote object
interface = dbus.Interface(bus.get_object('org.bluez',
adapter + "/" + DEVICE),
"org.bluez.Input")
interface.connect_to_signal("PropertyChanged", connected)
except dbus.DBusException:
sys.exit(1)
loop = gobject.MainLoop()
loop.run()
if __name__ == "__main__":
main()
| The Following 5 Users Say Thank You to jakoleh For This Useful Post: | ||