Shortcuts (WAS: api changes)

Rick Stockton rickstockton at
Mon Apr 16 20:25:05 BST 2012

The main text of my reply is at the bottom ...

On 04/16/2012 05:15 AM, Michael Jansen wrote:
> On Sunday, April 15, 2012 08:40:38 PM Thiago Macieira wrote:
>> On segunda-feira, 16 de abril de 2012 01.33.31, Stephen Kelly wrote:
>>>> The only applications that should do that are the workspace fixture
>>>> ones:
>>>> kwin and plasma.
>>> Yes, those are the ones that were brought up, together with the
>>> KWindowSystem class. Apart from those I don't think KDE uses X11, but even
>>> KWindowSystem might be partially obsoleted by QPA (there is a task to
>>> figure that out, but no one has taken it up yet).
>> Managing windows is a task only for the workspace applications. Putting
>> those classes in a generic library is a mistake.

I disagree. Things such as "Window Position", Size, and the need to Move 
a Window (to expose a UI keyboard) may also be fundamental for 
Applications on Handheld Platforms (as being described in another 
Thread). Keep it simple - that particular application needs to avoid 
COMPLETELY hiding it's  virtual keyboard, the requirement is 
straightforward - so let's provide the Application-Level tools to do so 
where we can. Where we can't, do it, note that in Doco (As GTK/Gnome has 
done.) GTK seems to agree with me; all of these items ARE available in 
the GtkWindow interface:
and their corresponding setters, and a lot of other GtkWindow() 
functions in 3.4.

I noticed, however, that the Gnome/Gtk people have a lot of complaints 
about DPI. Apparently, the value which QX11Info provides isn't 
trustworthy for screens with sizes other than 96 DPI. I wish that I had 
a monitor with more than 96 DPI, but I don't.... so I can't see any 
problems relating to this value.

>>> QX11Info is used in many places (including some widgets), and perhaps some
>>> places where it shouldn't be used, but it's still a porting burden even to
>>> figure out how to port the stuff (It's not clear to me how to, and the
>>> changes file doesn't even note that the class is removed).
>>> kf5{frameworks}$ grep -roh "QX11Info::[^\)]*)" * | sort | uniq
>>> QX11Info::appDpiX( int )
>>> QX11Info::appDpiY( int )
>>> QX11Info::appRootWindow()
>>> QX11Info::appRootWindow( screen_P )
>>> QX11Info::appScreen()
>>> QX11Info::appTime()
>>> QX11Info::appUserTime()
>>> QX11Info::display()
>>> QX11Info::screen()
>>> QX11Info::setAppDpiX(0, 96)
>>> QX11Info::setAppDpiY(0, 96)
>>> QX11Info::setAppTime(time)
>>> QX11Info::setAppTime(timestamp)
>>> QX11Info::setAppUserTime(time)
>>> QX11Info::setAppUserTime(timestamp)
>> Porting required for some of them, others need refactoring.
> I have one thing to add where we probably need some support from the qt
> project to do it correctly. Global Shortcuts.
> Since Qt does not support them we have to implement them ourselves. Which
> means working with X11 KeyCodes. Because there are no exporteded Qt Functions
> that map between X11 KeyCodes and Qt KeyCodes we had to implement the mapping
> ourselves (KKeyServer iirc) but failed to do that correctly because the code
> in question is complex. A source of many kde bugs.
> All that descibes Qt4. No idea what changed in Qt5.
> But such function or some Qt support for global shortcuts would help us.
> The same applies afaik for the mac. No idea about windows.
I would be delighted to help with the job of pushing KDE 'Golbal 
Shortcuts' Upstream (into a 'Global Shortcuts' property manager within 
Qt). Rather than figure out keyboard layout issues twice (once in Qt for 
"normal input" and Qt's limited shortcuts, a SECOND TIME in KDE for 
Global Shortcuts), do it all in Qt. As you know, Qt already has some 
default keyboard shortcuts values. (Intra-program, loaded for each 
program which includes the relevant headers.) But, for KDE's purposes, 
this would need to be extended: Many 'Global Shortcuts' should be pushed 
up to the Window Manager immediately, and the shortcuts need to be read 
from some sort of properties file, rather than C++ headers.

We should, I think, provide shortcuts, (KWin Global, Intra-Application 
"Global", and "Application-Specific") for mouse gestures and all those 
new mouse buttons. (KDE has an all-time-top-10-voted-for Bug on this, 
IIRC). And a simple, coherent shortcut-override system should be in 
place for any/all of those input devices. But I need some leaders... I'm 
pretty useless as a designer or programmer.

More information about the kde-core-devel mailing list