Progress report: HID handling



Hija,

Finally, a progress report.
As you might have read on his blog, Daniel Stone's laptop was stolen
from a hotel room in Barcelona. Unfortunately all work he had been doing
on HAL-based hotplug detection in the X server (which is decided to be
the way to go, no GVM-like daemon) was only available on this machine in
a local git branch, and he got no backups anywhere else. Result: most of
the work had to be redone, although he still had a patch somewhere. As
this is a core component for my SoC project, and he had to sort out some
other things first, I restarted to implement this myself.
I added initial code to my local xserver branch, but this did not
compile (autofoo problems). I decided to use -svn, -git and alike builds
of the software I use where possible. Compiling gnome-control-center
(which I also need) from svn didn't work though as the glib version of
my system's glib is too old. So I built glib in a local tree and
installed it somewhere under my home directory, then wanted to rebuild
gnome-cc, which failed as (my system's) gtk+'s .la file
hard-included /usr/lib/libglib-2.0.so, etc, I hope you get the picture.
So I decided to run jhbuild. Unfortunately, this gave lots of problems
too with libraries included in the libtool --mode=link stage, but were
not installed inside the jhbuild environment. Result: lots of manual
dependency-resolution and rebuilds so the system .la files weren't used
anymore.
Anyway, after a lot of cursing I got a working jhbuild environment
(well, I don't actually run it as a desktop, just as a build environment
and to run some of the applications I need to patch/write).

Anyway, back to the HAL-xserver thing. Unfortunately writing this wasn't
very easy: integrating D-Bus code when you got a GMainLoop isn't too
hard, when you haven't got a mainloop is somewhat harder. I wasn't very
familiar with the X code/functions neither, so writing the initial
support was kinda hard, but I did learn quite a lot.
Some days later though I talked to Daniel and read some of his mails on
the HAL list, turned out he had implemented more than I did, so I
stopped that work. While doing this I submitted a minor header file
patch to the xorg list.

Meanwhile I found out HAL does not recognize my touchpad as a
"input.mouse" device, just as an "input" device, so it wouldn't be
auto-detected by the server. So I created a patch for HAL to detect
synaptics touchpads and give them the "input.mouse" and "input.touchpad"
capabilities. After some input from the list (thanks mjg59) ALPS support
was added too. The final patches aren't merged (yet) though, and DavidZ
did not provide any feedback.

Then I started to dig into XInput to be able to get a list of input
devices from the server. Getting a list isn't too difficult, but there
are some issues here, the main one being not to be able to know whether
a device is actually connected to the system: when you configure some
USB mouse as an evdev device in xorg.conf, and you plug it in, it's
added to the device list. When you remove the device, it's still in the
list though :(

Meanwhile I've been bugging Daniel to provide a tree of his hal-enabled
xserver. He didn't really want to as code needs to be cleaned up, but
this implies I can't do any testing neither. Yesterday he provided me
some patches, but they can't be applied to the current xserver master
branch as some files he got aren't in there yet :-/ I hope he'll push
his changes really soon now.

Once I was able to fetch a list of mouse devices from the server, I
added code to my local git-svn branch of gnome-cc to create such a list.
I need to get in touch with the maintainer of gnome-cc to figure out how
he'd like to allow the user to do per-device configuration UI-wise.

As I'll need to run xserver-git once the HAL stuff lands, and fglrx
doesn't work with this (I'm stuck with an ATI X1600), I wanted to try
the new xf86-video-avivo driver. Seems my GPU and/or laptop panel
doesn't really like this driver, so I'm debugging the driver with it's
main author. Doing this without ssh access to my own machine is, well,
not very convenient though.

Last days I've been working with bluez to write code to detect BT HID
devices using the new D-Bus interface. I got code now which lists
adapters, discovers devices on request, finds my mouse, but in the end
connecting to it doesn't work: a connection is made, an input device is
created, but then the thing immediately disconnects. I have no clue what
causes this, as the older hidd method did work. Investigating.
I also sent a mail to the desktop-devel list today as proposed by my
mentor regarding the "Discover BT devices" GUI.

That's it for now. I'm *really really really* waiting for Daniel's
hal-branch push. If you see him, poke ;-)

That's about it for now. Unlike planned, I'm not at GUADEC, which I
frankly hate (the not being there), can't change anything about it
though.

Regards,

Nicolas

Attachment: signature.asc
Description: This is a digitally signed message part



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]