Hi Jordan--
On Fri 2014-10-03 15:40:20 -0400, Jordan Sissel wrote:
> I am inclined to agree with your assessment. I don't know if anything uses
> that function outside of libxdo itself. It's primary use (from what I
> remember) was internal for libxdo and may have only accidentally been
> exported, not intentionally.
hm, looking further with help from Jakub Wilk
(
https://bugs.debian.org/764076) i see that the xdo_t struct itself has
changed its form and size (the modmap and keymap members were removed).
And charcodemap_t has changed its semantics (but not its size):
typedef struct charcodemap {
wchar_t key; /** the letter for this key, like 'a' */
KeyCode code; /** the keycode that this key is on */
KeySym symbol; /** the symbol representing this key */
- int index; /** the index in the keysym-per-keycode list that is this key */
- int modmask; /** the modifiers activated by this key */
+ int group; /** the keyboard group that has this key in it */
+ int modmask; /** the modifiers to apply when sending this key */
/** if this key need to be bound at runtime because it does not
* exist in the current keymap, this will be set to 1. */
i confess i don't fully understand the difference between "index" and
"group" -- if they the same thing with different names, and if the
modmask comment change is just a clarification, then this actually isn't
an ABI change (though it is an API change, since the member was renamed)
lastly, the struct keysymcharmap (keysymcharmap_t) was removed, but i
think that's functionally the same API change as the removal of
xdo_get_keysym_charmap().
All of these changes were introduced in
bbf0e70ab614852cff8111cabeed8d5ffa9554e0, which appears to be the major
API and ABI breakage.
> +1 on not bumping SONAME. However, I am willing to bump SONAME version if
> others demand it.
So to fix the immediate problem for debian packages, i'm looking at
a couple options:
0) bump the SONAME -- i'm not sure what that would do to xdotool in
debian, since it would be a library transition. This would also
make debian's libxdo's SONAME diverge from upstream's, which i don't
like.
1) change the structs back: reintroduce the missing elements for xdo_t,
and just let them be unused -- i'm not entirely sure how to fix
charcodemap_t if those changes are semantic, since (a) we don't want
to change the size of the struct, and (b) we don't want one value to
have two different meanings. Maybe we punt on the charcodemap
changes? Note that this change would make things compiled against
debian's 3.20140805.1 of libxdo be binary incompatible with
unpatched versions of the same checkout of libxdo. (this same
problem already exists between 3.2013* and 3.20140805, though)
For the longer-term future of libxdo, i think the right thing would be
to move the declarations of the structs into internal header files, and
just refer to them as generic pointers outside the library.
What do you think? I'm likely to go ahead with option (1) for now, but
if you have other proposals, i'd be happy to take guidance.
Regards,
--dkg