[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master a38096f: Undo the effect of CapsLock when other mod
From: |
Eli Zaretskii |
Subject: |
[Emacs-diffs] master a38096f: Undo the effect of CapsLock when other modifiers are present |
Date: |
Sat, 15 Oct 2016 14:19:46 +0000 (UTC) |
branch: master
commit a38096f8e2978a14f3bc8fa0dc3e0c9d0f753c3c
Author: Dima Kogan <address@hidden>
Commit: Eli Zaretskii <address@hidden>
Undo the effect of CapsLock when other modifiers are present
* src/keyboard.c (make_lispy_event): Effectively undo the effect
of CapsLock if any modifiers other than Shift are present in a key.
(Bug#24456)
---
src/keyboard.c | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/src/keyboard.c b/src/keyboard.c
index ca40c6e..87a6851 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -5417,6 +5417,36 @@ make_lispy_event (struct input_event *event)
{
c &= 0377;
eassert (c == event->code);
+ }
+
+ /* Caps-lock shouldn't affect interpretation of key chords:
+ Control+s should produce C-s whether caps-lock is on or
+ not. And Control+Shift+s should produce C-S-s whether
+ caps-lock is on or not. */
+ if (event->modifiers & ~shift_modifier)
+ {
+ /* this is a key chord: some non-shift modifier is
+ depressed */
+
+ if (uppercasep (c) &&
+ !(event->modifiers & shift_modifier))
+ {
+ /* Got a capital letter without a shift. The caps
+ lock is on. Un-capitalize the letter */
+ c = downcase(c);
+ }
+ else if (lowercasep (c) &&
+ (event->modifiers & shift_modifier))
+ {
+ /* Got a lower-case letter even though shift is
+ depressed. The caps lock is on. Capitalize the
+ letter */
+ c = upcase(c);
+ }
+ }
+
+ if (event->kind == ASCII_KEYSTROKE_EVENT)
+ {
/* Turn ASCII characters into control characters
when proper. */
if (event->modifiers & ctrl_modifier)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] master a38096f: Undo the effect of CapsLock when other modifiers are present,
Eli Zaretskii <=