Am 17.09.2010 um 08:49 schrieb Jens Nöckel: > > On Sep 16, 2010, at 11:24 PM, Stephan Witt wrote: > >> Am 17.09.2010 um 07:57 schrieb Jens Nöckel: >> >>> >>> On Sep 16, 2010, at 10:30 PM, Stephan Witt wrote: >>> >>>> Am 17.09.2010 um 06:31 schrieb Jens Nöckel: >>>> >>>>> >>>>> On Jun 5, 2010, at 7:40 PM, Jens Nöckel wrote: >>>>> >>>>> Hi again, >>>>> it's been a while, but now I have a patch for lyx-devel/trunk that >>>>> implements the customizable switching of Control and Modifier keys on Mac >>>>> OS X for LyX 2.0 with Qt 4.6. >>>> >>>>> Although I still have (at least) one open problem, maybe someone here >>>>> wants to try it out (I tested it and it works with the svn checkout): >>>>> >>>>> <modifierKey.diff.zip> >>>>> >>>>> As a brief explanation: By setting a preference, you decide whether Ctrl >>>>> and Meta are swapped next time LyX starts up (as is currently hard-coded >>>>> in LyX/Mac), or not (as many emacs users prefer). >>>> >>>> (Sorry, I should have raised my hand earlier.) >>>> >>>> I'm not a emacs user. So I wouldn't use that feature. In fact, I tried it >>>> and decided I don't like it. >>>> I don't know any application where you can swap Ctrl and Meta. Neither on >>>> MacOSX nor on Windows or Linux. >>>> The option to do so with Qt4 makes me think that this shouldn't be done at >>>> application level. >>>> It should be a global Qt preference. That's my personal opinion. But of >>>> course it's a matter of taste... >>>> Is there any other application using that feature (except emacs I guess)? >>>> >>>>> My main question is still the following: >>>>> There is now a new checkbox in frontend/qt/ui/PrefInput.ui which >>>>> determines the role of Control and Apple keys, but this new UI element >>>>> will appear for all versions of Qt and all platforms, even though it has >>>>> an effect only with Qt >= 4.6 (in the other files, my changes are only >>>>> applied when the right OS and version is detected). In order to make this >>>>> checkbox disappear when it's not needed, what is the best approach? Is >>>>> there a Qt or LyX directive for conditional UI elements that I could use >>>>> in PrefInput.ui (similar to compiler directives as in my previous post)? >>>>> My guess is that the answer is no. >>>> >>>> I don't know, but I would look for a function to hide the UI element >>>> conditionally.
A better option would be to create it hidden and make it visible only when it is sensible. >>>> Perhaps it is enough to have that preference without UI at first, document >>>> it and ask users later about the >>>> acceptance and how urgent the UI is needed. >>> >>> Hi Stephan, >>> it would be OK with me to just have a preference without UI, but I wanted >>> to explore the UI because Pavel already gave me a nice starting point for >>> how to do it (earlier in this thread). >> >> I can understand you very good. >> >> (I cannot see Pavels E-Mails in this thread - but that's not the point, >> non-relevant). >> > For completeness, here's the missing passage: > http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg160178.html Thanks. > >>> Anyway, about the philosophical reasons for why this is an issue in need of >>> fixing, see the LyX Wiki (the discussion goes back many years, so I can't >>> repeat it all here): http://wiki.lyx.org/Mac/LyXmodifierKeys >> >> I took a quick look. And had the idea to make the default for the new RC >> variable dynamic. It can depend on the keyboard binding. >> When mac.bind is used make it false, for emacs.bind make it true. >> > > In principle that sounds interesting because mac.bind would be really weird > with the switched modifiers. But what if a user has a custom bind file (e.g., > I have a custom xemacs.bind)? The naming of bind files is arbitrary and > therefore shouldn't be the basis for a dynamic adjustment of the RC variable. > But what about extending that idea a little: if the bind file name is not > emacs.bind or xemacs.bind, it would most likely be including one or the > other, so we could search the file for "\bind_file (x)emacs.bind" ... > > The more I think about it, the more it seems like a hack though. There should > be an explicit declaration of whether the switch is desired, LyX probably > shouldn't try to guess what the user wants. You're right. My proposal was not thought to the end. But I can imagine to make it three-state: No, Yes, Auto. When "Yes" then swap, when "No" then don't swap, when "Auto" then check the bindings for some emacs like usage. But it remains guessing... When reading the wiki I got the impression the "common" emacs user wants to swap the modifiers. > >>> Regarding a global Qt option: can that work if the libs are included as a >>> private framework? >> >> I don't know if global Qt options exist and how they work if any. But, I'd >> guess the storage of that would be some plist file in your home dir. >> In that sense with global I meant global for the user - not the machine. >> >>> In the standalone LyX, there is no system-wide Qt that is being used, so >>> any Qt setting would have to be done at the application level, right? >> >> I have to check Qt4 at first to answer that. >> >> In general that's a question for packaging of LyX. I think LyX should work >> with Qt4 frameworks. Then a private framework should be provided as option >> for machines with no or with the wrong Qt version. Currently there is no >> mechanism to decide that. That's why I package LyX with private Qt4 >> frameworks only. >> >> Stephan > > OK, that would be great if you find something out - I'll also look around in > the Qt docs some more. In the wiki there is the manipulation of ~/Library/Preferences/.GlobalPreferences.plist explained. But it doesn't work for me... the Qt4 developers didn't implement that feature :-) Stephan