I see what you mean. That struct would need something like a bit mask to specifically tell the XIM3 which values to update and which ones to leave alone. There are some cases where this would be useful, but I guess that would be off topic.
The basic functionality of your app seems to work pretty well. It might be useful to save your progress though. Great job!