when i use xrandr to reconfigrured my screens,the pointer allways be screen's egde.so that i can't find out where my pointer is.
And always,screen's edge has some small components, such as 'Showing Desktop'.so, if pointer stop on screen's edge, maybe make 'Showing Desktop' take effect.
so,i think make the pointer to the nearest CRTC's center maybe better.
Here are some questions bothers me:
Your answer 1: Just described when xorg send that event,but didn't explain why did xorg send this event? If you don't know that,why did you think remove xorg XkbSendNewKeyboardNotify event is correct?
Your answer 2:Why we don't need send XkbSendNewKeyboardNotify event when switch input ? Maybe post your reason?
Your answer 3:Your Process analysis 3,i think base_mods is not error,because Qt didn't initialized yet,base_mods was be changed by "SHIFT". Maybe that can explain why gtk is correct.
And,why remove xorg XkbSendNewKeyboardNotify event instead of you are not deal XkbSendNewKeyboardNotify event?
I had seen your merger request,and i hane some questions:)
Did you know that why did xorg to send XkbSendNewKeyboardNotify event?
Why remove this logic so violently?
Why did Qt can't finished initialized in time?
You can use Gtk to replace Qt. Although,this solution could only be temporary.
According to XKB protol said:
XKB supports the XkbNewKeyboardNotify event, which reports a change in keyboard geometry or the range of supported keycodes. The server can generate an XkbNewKeyboardNotify event when it detects a new keyboard, or in response to an XkbGetKeyboardByName request (see section 16.3.12) which loads a new keyboard description. When a client opens a connection to the X server, the server reports the minimum and maximum keycodes. If the range of supported keycodes is changed, XKB keeps track of the minimum and maximum keycodes that were reported to each client and filters out any events that fall outside of that range. Note that these events are simply ignored; they are not delivered to some other client. When the server sends an XkbNewKeyboardNotify event to a client to inform it of the new keycode range, XKB resets the stored range of legal keycodes to the keycode range reported in the event. Non-XKB clients and XKB-aware clients that do not request XkbNewKeyboardNotify events never receive events from keys that fall outside of the legal range that XKB maintains for that client. When a client requests XkbNewKeyboardNotify events, the server compares the range of keycodes for the current keyboard to the range of keycodes that are valid for the client. If they are not the same, the server immediately sends that client an XkbNewKeyboardNotify event. Even if the “new” keyboard is not new to the server, it is new to this particular client.
So,I don't know what did xorg do wrong?
And,if a new keyboard was really be connecting, what should xorg do?