From: Kai.Grossjohann@CS.Uni-Dortmund.DE (Kai Großjohann)
Subject: Re: Switch Meta and Alt modifiers
Date: Thu, 14 Feb 2002 11:09:01 +0100 [thread overview]
Message-ID: <vafd6z8nznm.fsf@INBOX.auto.emacs.devel.tok.lucy.cs.uni-dortmund.de> (raw)
In-Reply-To: <vafzo3na09i.fsf@INBOX.auto.emacs.devel.tok.lucy.cs.uni-dortmund.de> (Kai.Grossjohann@cs.uni-dortmund.de's message of "Wed, 09 Jan 2002 18:43:05 +0100")
[-- Attachment #1: Type: text/plain, Size: 219 bytes --]
Here is a new version, incorporating a suggestion from Stefan
Monnier. I have made an entry in etc/NEWS.
Should I use "unsigned int" or "EMACS_UINT"?
Opinions?
kai
--
~/.signature is: umop 3p!sdn (Frank Nobis)
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: core --]
[-- Type: text/x-patch, Size: 7729 bytes --]
Index: etc/NEWS
===================================================================
RCS file: /cvsroot/emacs/emacs/etc/NEWS,v
retrieving revision 1.597
diff -u -r1.597 NEWS
--- etc/NEWS 12 Feb 2002 18:58:21 -0000 1.597
+++ etc/NEWS 14 Feb 2002 10:07:23 -0000
@@ -240,9 +240,12 @@
example, if you set `jit-lock-defer-time' to 0.25, fontification will
only happen after 0.25s of idle time.
-** If you hit M-C-SPC (mark-sexp) repeatedly, the marked region
-will now be extended each time, so you can mark the next two sexps with
-M-C-SPC M-C-SPC, for example.
+** Marking commands extend the region when invoked multiple times. If
+you hit M-C-SPC (mark-sexp), M-@ (mark-word), M-h (mark-paragraph), or
+C-M-h (mark-defun) repeatedly, the marked region will now be extended
+each time, so you can mark the next two sexps with M-C-SPC M-C-SPC,
+for example. This feature also works for mark-end-of-sentence, if you
+bind that to a key.
** In the *Occur* buffer, `o' switches to it in another window, and
C-o displays the current line's occurrence in another window without
@@ -386,6 +389,14 @@
The new variable `w32-pass-extra-mouse-buttons-to-system' controls
whether Emacs should handle the extra buttons itself (the default), or
pass them to Windows to be handled with system-wide functions.
+
+** Under X11, it is possible to swap Alt and Meta (and Super and Hyper).
+The new variables `x-alt-keysym', `x-hyper-keysym', `x-meta-keysym',
+and `x-super-keysym' can be used to choose which keysyms Emacs should
+use for the modifiers. For example, the following two lines swap
+Meta and Alt:
+ (setq x-alt-keysym 'meta)
+ (setq x-meta-keysym 'alt)
---
** A French translation of the `Emacs Survival Guide' is available.
Index: src/xterm.c
===================================================================
RCS file: /cvsroot/emacs/emacs/src/xterm.c,v
retrieving revision 1.703
diff -u -r1.703 xterm.c
--- src/xterm.c 27 Jan 2002 16:43:36 -0000 1.703
+++ src/xterm.c 14 Feb 2002 10:07:24 -0000
@@ -381,6 +381,14 @@
extern int extra_keyboard_modifiers;
+/* The keysyms to use for the various modifiers. */
+
+unsigned int Vx_alt_keysym;
+unsigned int Vx_hyper_keysym;
+unsigned int Vx_meta_keysym;
+unsigned int Vx_super_keysym;
+static Lisp_Object Qalt, Qhyper, Qmeta, Qsuper, Qmodifier_value;
+
static Lisp_Object Qvendor_specific_keysyms;
extern XrmDatabase x_load_resources P_ ((Display *, char *, char *, char *));
@@ -6422,12 +6430,28 @@
struct x_display_info *dpyinfo;
unsigned int state;
{
+ unsigned int mod_meta = meta_modifier;
+ unsigned int mod_alt = alt_modifier;
+ unsigned int mod_hyper = hyper_modifier;
+ unsigned int mod_super = super_modifier;
+ EMACS_UINT tem;
+
+ tem = Fget (Vx_alt_keysym, Qmodifier_value);
+ if (! EQ (tem, Qnil)) mod_alt = XUINT (tem);
+ tem = Fget (Vx_meta_keysym, Qmodifier_value);
+ if (! EQ (tem, Qnil)) mod_meta = XUINT (tem);
+ tem = Fget (Vx_hyper_keysym, Qmodifier_value);
+ if (! EQ (tem, Qnil)) mod_hyper = XUINT (tem);
+ tem = Fget (Vx_super_keysym, Qmodifier_value);
+ if (! EQ (tem, Qnil)) mod_super = XUINT (tem);
+
+
return ( ((state & (ShiftMask | dpyinfo->shift_lock_mask)) ? shift_modifier : 0)
- | ((state & ControlMask) ? ctrl_modifier : 0)
- | ((state & dpyinfo->meta_mod_mask) ? meta_modifier : 0)
- | ((state & dpyinfo->alt_mod_mask) ? alt_modifier : 0)
- | ((state & dpyinfo->super_mod_mask) ? super_modifier : 0)
- | ((state & dpyinfo->hyper_mod_mask) ? hyper_modifier : 0));
+ | ((state & ControlMask) ? ctrl_modifier : 0)
+ | ((state & dpyinfo->meta_mod_mask) ? mod_meta : 0)
+ | ((state & dpyinfo->alt_mod_mask) ? mod_alt : 0)
+ | ((state & dpyinfo->super_mod_mask) ? mod_super : 0)
+ | ((state & dpyinfo->hyper_mod_mask) ? mod_hyper : 0));
}
static unsigned int
@@ -6435,12 +6459,29 @@
struct x_display_info *dpyinfo;
unsigned int state;
{
- return ( ((state & alt_modifier) ? dpyinfo->alt_mod_mask : 0)
- | ((state & super_modifier) ? dpyinfo->super_mod_mask : 0)
- | ((state & hyper_modifier) ? dpyinfo->hyper_mod_mask : 0)
- | ((state & shift_modifier) ? ShiftMask : 0)
- | ((state & ctrl_modifier) ? ControlMask : 0)
- | ((state & meta_modifier) ? dpyinfo->meta_mod_mask : 0));
+ unsigned int mod_meta = meta_modifier;
+ unsigned int mod_alt = alt_modifier;
+ unsigned int mod_hyper = hyper_modifier;
+ unsigned int mod_super = super_modifier;
+
+ EMACS_UINT tem;
+
+ tem = Fget (Vx_alt_keysym, Qmodifier_value);
+ if (! EQ (tem, Qnil)) mod_alt = XUINT (tem);
+ tem = Fget (Vx_meta_keysym, Qmodifier_value);
+ if (! EQ (tem, Qnil)) mod_meta = XUINT (tem);
+ tem = Fget (Vx_hyper_keysym, Qmodifier_value);
+ if (! EQ (tem, Qnil)) mod_hyper = XUINT (tem);
+ tem = Fget (Vx_super_keysym, Qmodifier_value);
+ if (! EQ (tem, Qnil)) mod_super = XUINT (tem);
+
+
+ return ( ((state & mod_alt) ? dpyinfo->alt_mod_mask : 0)
+ | ((state & mod_super) ? dpyinfo->super_mod_mask : 0)
+ | ((state & mod_hyper) ? dpyinfo->hyper_mod_mask : 0)
+ | ((state & shift_modifier) ? ShiftMask : 0)
+ | ((state & ctrl_modifier) ? ControlMask : 0)
+ | ((state & mod_meta) ? dpyinfo->meta_mod_mask : 0));
}
/* Convert a keysym to its name. */
@@ -15035,6 +15076,45 @@
staticpro (&last_mouse_motion_frame);
last_mouse_motion_frame = Qnil;
+
+ Qmodifier_value = intern ("modifier-value");
+ Qalt = intern ("alt");
+ Fput (Qalt, Qmodifier_value, make_number (alt_modifier));
+ Qhyper = intern ("hyper");
+ Fput (Qhyper, Qmodifier_value, make_number (hyper_modifier));
+ Qmeta = intern ("meta");
+ Fput (Qmeta, Qmodifier_value, make_number (meta_modifier));
+ Qsuper = intern ("super");
+ Fput (Qsuper, Qmodifier_value, make_number (super_modifier));
+
+ DEFVAR_LISP ("x-alt-keysym", &Vx_alt_keysym,
+ doc: /* Which keys Emacs uses for the alt modifier.
+This should be one of the symbols `alt', `hyper', `meta', `super'.
+For example, `alt' means use the Alt_L and Alt_R keysyms. The default
+is nil, which is the same as `alt'. */);
+ Vx_alt_keysym = Qnil;
+
+ DEFVAR_LISP ("x-hyper-keysym", &Vx_hyper_keysym,
+ doc: /* Which keys Emacs uses for the hyper modifier.
+This should be one of the symbols `alt', `hyper', `meta', `super'.
+For example, `hyper' means use the Hyper_L and Hyper_R keysyms. The
+default is nil, which is the same as `hyper'. */);
+ Vx_hyper_keysym = Qnil;
+
+ DEFVAR_LISP ("x-meta-keysym", &Vx_meta_keysym,
+ doc: /* Which keys Emacs uses for the meta modifier.
+This should be one of the symbols `alt', `hyper', `meta', `super'.
+For example, `meta' means use the Meta_L and Meta_R keysyms. The
+default is nil, which is the same as `meta'. */);
+ Vx_meta_keysym = Qnil;
+
+ DEFVAR_LISP ("x-super-keysym", &Vx_super_keysym,
+ doc: /* Which keys Emacs uses for the super modifier.
+This should be one of the symbols `alt', `hyper', `meta', `super'.
+For example, `super' means use the Super_L and Super_R keysyms. The
+default is nil, which is the same as `super'. */);
+ Vx_super_keysym = Qnil;
+
}
#endif /* HAVE_X_WINDOWS */
Index: src/alloc.c
===================================================================
RCS file: /cvsroot/emacs/emacs/src/alloc.c,v
retrieving revision 1.263
diff -u -r1.263 alloc.c
--- src/alloc.c 8 Feb 2002 21:23:53 -0000 1.263
+++ src/alloc.c 14 Feb 2002 10:07:24 -0000
@@ -396,7 +396,7 @@
/* Addresses of staticpro'd variables. */
-#define NSTATICS 1024
+#define NSTATICS 1026
Lisp_Object *staticvec[NSTATICS] = {0};
/* Index of next unused slot in staticvec. */
next parent reply other threads:[~2002-02-14 10:09 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <vafzo3na09i.fsf@INBOX.auto.emacs.devel.tok.lucy.cs.uni-dortmund.de>
2002-02-14 10:09 ` Kai Großjohann [this message]
2002-02-14 12:30 ` Switch Meta and Alt modifiers Andreas Schwab
2002-02-15 9:38 ` Kai Großjohann
2002-02-17 5:48 ` Eli Zaretskii
2002-02-17 9:58 ` Kai Großjohann
2002-02-17 10:10 ` Eli Zaretskii
2002-02-17 15:23 ` Kai Großjohann
2002-02-17 17:00 ` Eli Zaretskii
2002-02-19 6:36 ` Richard Stallman
2002-02-19 9:31 ` Eli Zaretskii
2002-02-20 22:12 ` Richard Stallman
2002-02-21 6:44 ` Eli Zaretskii
2002-02-22 4:32 ` Richard Stallman
2002-02-24 17:41 ` Kai Großjohann
2002-02-24 18:49 ` Jason Rumney
2002-02-24 19:10 ` Kai Großjohann
2002-02-25 0:09 ` Richard Stallman
2002-02-25 6:03 ` Eli Zaretskii
2002-02-21 18:59 ` Jason Rumney
2002-02-17 11:53 ` Jason Rumney
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=vafd6z8nznm.fsf@INBOX.auto.emacs.devel.tok.lucy.cs.uni-dortmund.de \
--to=kai.grossjohann@cs.uni-dortmund.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.