| Summary: | meta keys no longer get through to bash | ||
|---|---|---|---|
| Product: | [Applications] konsole | Reporter: | Erik Ernst <eernst> |
| Component: | general | Assignee: | Konsole Bugs <konsole-bugs-null> |
| Status: | RESOLVED WORKSFORME | ||
| Severity: | normal | ||
| Priority: | NOR | ||
| Version First Reported In: | unspecified | ||
| Target Milestone: | --- | ||
| Platform: | RedHat Enterprise Linux | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | |||
|
Description
kde-bug-receive
2002-04-11 15:18:39 UTC
> meta-<foo> no longer gets through to bash. What is meta? Win? Alt? Solaris' Meta? > For instance (with bash configured to use emacs sequences so meta-b means > go backward a word) typing "bar" followed by meta-b jumps backward over Alt-b goes one word back here (like Alt Left). Win-b prints "b" character. On Thursday 11 April 2002 04:24 pm Stephan Binner wrote: > > meta-<foo> no longer gets through to bash. > > What is meta? Win? Alt? Solaris' Meta? Oops. Sorry to be so vague. Short answer meta is the X keysym. Long answer: The text on the plastic is "Alt".=20 running xmodmap to reveal my modifiers I get: xmodmap: up to 2 keys per modifier (keycodes in parentheses): shift Shift_L (0x32) Shift_R (0x3e) lock Caps_Lock (0x75) control Control_L (0x42) mod1 Meta_L (0x40) mod2 Num_Lock (0x4d) mod3 Alt_L (0x25) mod4 Hyper_L (0x74) Hyper_R (0x6d) mod5 Super_R (0x71) Super_L (0x73) and pressing the key in question while running xev produces: KeyPress event serial 28 synthetic NO window 0x1a00001 root 0x32 subw 0x0 time 653167439 (9155) root:(1369564) state 0x0 keycode 64 (keysym 0xffe7 Meta_L) same_screen YES XLookupString gives 0 characters: "" > > For instance (with bash configured to use emacs sequences so meta-b mea= ns > > go backward a word) typing "bar" followed by meta-b jumps backward over > > Alt-b goes one word back here (like Alt Left). Win-b prints "b" character. Interesting. Pressing my "Alt" (mod3) key _does_ work -- but that's not wha= t I=20 think should happen. Most linux setups default to binding the Alt keysym to= =20 the key labelled "alt" and then let unix programs interpret Alt to mean=20 Meta. I've rearranged my keys to go the old fashioned Unix way with an=20 actual "meta" keysym. I think the "<foo>-b goes backwards" behaviour shoul= d=20 have stayed with either the <foo> which is defined as X mod1 or with the= =20 <foo> which is _any_ X modifier key and has a keysym named Meta_L or Meta_R= .=20 I do _not_ think the behaviour should have moved to stay with the key with= =20 the name "alt." at least not without some way of changing it. Is there suc= h? Thanks Benjamin S. Scarlet I'm using a Kinesis keyboard (Essential, no support for remapping keys), and using xmodmap
to arrange my keys in a convenient manner. With such a keyboard, some keys are different
(e.g., keys with keycode 115-117 are only available when a special "Keypad" toggle is active,
and they are then located on "H", "N", and "<quote>"). For anybody with an unusual keyboard
or anybody who is using xmodmap to rearrange their keys, it is important to be able to control
the effect of keys using their X keysym/modifier settings, rather than relying on the hardwired
keycode values.
Is it correct that konsole will now insist on using the physical "Alt" (left?) key in order to
type <meta-b> and achieve a "word backward" effect (and a lot of similar commands with
<meta-X> for other values of X) with zsh, bash and similar programs? I tried to test this
hypothesis (see below), but I haven't been able to confirm it.
When I updated to a new version of konsole (it says "Qt: 3.0.5, KDE: 3.0.5, Konsole:
1.1.3"), all the <meta-foo> editing commands suddenly stopped working. I use Meta (which is
keycode 107, keysym Meta_L, modifier mod1) to achieve the "word backward" effect with "b"
in Emacs and (until recently) in konsole+zsh.
This seems to be impossible today (I can't find a modifier that lets keycode 107, modifier
Meta_L have the desired effect), but I cannot make the physical Alt keys work either.
I tried out all the following combinations:
Keycode Keysym Modifier
64 Alt_L mod1
64 Alt_R mod1
64 Alt_L mod3
64 Alt_R mod3
113 Alt_L mod1
113 Alt_R mod1
113 Alt_L mod3
113 Alt_R mod3
I tried to press the specified "Alt" key and "B" with each of the above settings, and in none
of the cases did the "word backward" command execute, the command line was just
extended with a "b".
So in what sense does "Alt" have the <meta-..> effect? I don't seem to be able to make
that happen. And even then, I'd much prefer to have these editing commands on the
Meta_L/mod1 key, such that it works like in Emacs.
Hoping that I can soon get back my missing editing commands on the command line .. :-)
Thanks -
Erik Ernst
The problem can be fixed in the following way (based on the source rpm file 'kdebase3-3.0.4-6.src.rpm'). Note that this is a 'quice-n-dirty' solution (I don't even know how many conventions I'm breaking), but it's easy, and it solves the problem for me .. It is now again possible for me to use meta-B and friends for command line editing. :-) Here are the tiny patches: -------------------------------------------------------------------------- Patch for keytrans.h -------------------------------------------------------------------------- 27c27,28 < #define BITS_COUNT 7 --- > #define BITS_Meta 7 > #define BITS_COUNT 8 -------------------------------------------------------------------------- Patch for TEmuVt102.cpp -------------------------------------------------------------------------- 824c824,825 < encodeStat(AltButton , BITS_Alt ), --- > encodeStat(AltButton , BITS_Alt ) + > encodeStat(MetaButton , BITS_Meta ), 872c873 < if ((ev->state() & AltButton) && !metaspecified ) sendString("\033"); --- > if ((ev->state() & MetaButton) && !metaspecified ) sendString("\033"); 880c881 < if (ev->state() & AltButton) sendString("\033"); // ESC, this is the ALT prefix --- > if (ev->state() & MetaButton) sendString("\033"); // ESC, this is the ALT prefix -------------------------------------------------------------------------- HTH, Erik Ernst In the patches given in the previous comment, some newlines have somehow been added by the uploading software. Hence, to get the correct patch you must first remove the newline in 5 places: After the word 'BITS_Alt', 'BITS_Alt', 'BITS_Meta', 'the', and 'the'. Moreover, white space was compressed to single spaces. However, you can easily reconstruct the correct spacing if you insert the changes manually---it's only adding 2 lines and changing 3 lines, after all. HTHF (Hope This Helps, Finally :-), Erik Ernst Replaced kde-bug-receive@greynode.net with eernst@daimi.au.dk due to bounces by reporter The problem apparently has been solved in newer versions of the software (I'm running SuSE 9.1 now, and 'konsole --version' yields: Qt: 3.3.1, KDE: 3.2.1, Konsole: 1.3.1). (Marking this bug as resolved). |