dave@romano.cs.wisc.edu (Dave Cohrs) (07/23/89)
These aren't all specific to the Text widget, that's just where I was playing with them. These are general Translation manager questions. Question 1: Yesterday I decided I wanted to make the Text widget more like emacs in the way it understood characters. Well, I wasn't too ambitous so I decided I'd just do things I could redefine using *Text.Translations: #override and came across a few anomolies. From reading the Toolkit section on translations, I added the following to my resources: *Text.Translations: #override \ Ctrl<Key>X,<Key>u: unkill()\n\ Ctrl<Key>X,<Key>i: insert-file() (yes, I know this allows ^X ^U to work too, but I don't care for this example) and WOW! when I typed ^X u, it unkilled the text I had just killed. This had a really strange side-effect. I could no longer type "u"s or "i"s (shifted, controled, whatever). From my understanding of "#override", my new translations should have been prepended to the translation list (basically), which means that entering a "u" or an "i" that isn't preceeded by a ^X should have been handled by the standard <Key>: insert-char translation that's part of the Text widget. Nope. It no longer worked for these two keys. Here's the question... Why isn't the "^X u" and "u" case covered by the "more specific before less specific" rule of translations? BTW -- I was able to make this work by saying the following instead: *Text.Translations: #override \ Ctrl<Key>X,<Key>u: unkill()\n\ Ctrl<Key>X,<Key>i: insert-file()\n\ <Key>i: insert-char() \n\ <Key>u: insert-char() Questions 2: This is Text widget specific. I wanted to define CTRL(SPACE) to set a mark, and CTRL(W) to cut the text between mark and dot. Nope. No can do. The select-*() and extend-*() functions look at the position of the *MOUSE*, even if the event that caused these functions to be executed was a *KEYBOARD* event. Nowhere in the Text widget doc does it say these functions have to be executed from the mouse. Dumb dumb dumb! Why do select-*() not care about the type of event that caused them? Question 3: On a lark, I thought I'd play around with double clicking too. I was able to re-assign double clicked mouse buttons just fine, but am not able, no matter what I try, to define a double pressed key. The translation section in the Toolkit document doesn't say you can only double press mouse buttons. I tried assigning a double pressed Function-key 2 to perform some function (let's call it "translation") with: <Key>(2)F2: translation() and the translation was ignored. When I did: <Key>F2(2): translation() I got a syntax error, so the former appears to be the right way to say what I want. How do you do a *real* double pressed key? The translation (which does work) <Key>F2,<Key>F2: translation() Does not have the same semantics as: <Btn1Down>(2): translation() does for mouse presses. thanks for any info, dave cohrs -- Dave Cohrs +1 608 262-6617 UW-Madison Computer Sciences Department dave@cs.wisc.edu ...!{harvard,rutgers,ucbvax}!uwvax!dave