[kbd] [PATCH] Understand the CapsShift modifiers
Michael Schutte
m.schutte.jr at gmail.com
Sat Apr 5 14:46:53 MSD 2008
This patch adds support for the CapsShift_Lock and SCapsShift keysyms to
dumpkeys and loadkeys, which are understood my Linux kernels since 2.6.24.
Thanks to Samuel Thibault <samuel.thibault at ens-lyon.org>.
Signed-off-by: Michael Schutte <m.schutte.jr at gmail.com>
---
man/man5/keymaps.5 | 7 +++++--
src/analyze.l | 2 ++
src/dumpkeys.c | 3 ++-
src/ksyms.c | 6 ++++--
src/loadkeys.y | 3 ++-
src/modifiers.h | 1 +
6 files changed, 16 insertions(+), 6 deletions(-)
diff --git a/man/man5/keymaps.5 b/man/man5/keymaps.5
index 29aadfe..1b28a29 100644
--- a/man/man5/keymaps.5
+++ b/man/man5/keymaps.5
@@ -99,9 +99,9 @@ in the map file.
.LP
Which of the actions bound to a given key is taken when it is pressed
depends on what modifiers are in effect at that moment.
-The keyboard driver supports 8 modifiers. These modifiers are labeled
+The keyboard driver supports 9 modifiers. These modifiers are labeled
(completely arbitrarily) Shift, AltGr, Control, Alt, ShiftL, ShiftR,
-CtrlL and CtrlR.
+CtrlL, CtrlR and CapsShift.
Each of these modifiers has an associated weight of power of two
according to the following table:
.LP
@@ -134,6 +134,9 @@ CtrlL
.TP 24
CtrlR
128
+.TP 24
+CapsShift
+256
.PD
.RE
.LP
diff --git a/src/analyze.l b/src/analyze.l
index f55c676..adb9474 100644
--- a/src/analyze.l
+++ b/src/analyze.l
@@ -48,6 +48,7 @@ ShiftL shiftl|ShiftL|SHIFTL
ShiftR shiftr|ShiftR|SHIFTR
CtrlL ctrll|CtrlL|CTRLL
CtrlR ctrlr|CtrlR|CTRLR
+CapsShift capsshift|Capsshift|CapsShift|CAPSSHIFT
AltIsMeta [aA][lL][tT][-_][iI][sS][-_][mM][eE][tT][aA]
Strings strings|Strings|STRINGS
Compose compose|Compose|COMPOSE
@@ -106,6 +107,7 @@ To to|To|TO
{ShiftR} {return(SHIFTR);}
{CtrlL} {return(CTRLL);}
{CtrlR} {return(CTRLR);}
+{CapsShift} {return(CAPSSHIFT);}
{AltIsMeta} {return(ALT_IS_META);}
{Strings} {return(STRINGS);}
{Compose} {return(COMPOSE);}
diff --git a/src/dumpkeys.c b/src/dumpkeys.c
index b0a108d..73f913a 100644
--- a/src/dumpkeys.c
+++ b/src/dumpkeys.c
@@ -282,7 +282,8 @@ static struct {
{ "shiftl", KG_SHIFTL },
{ "shiftr", KG_SHIFTR },
{ "ctrll", KG_CTRLL },
- { "ctrlr", KG_CTRLR }
+ { "ctrlr", KG_CTRLR },
+ { "capsshift", KG_CAPSSHIFT }
};
static void
diff --git a/src/ksyms.c b/src/ksyms.c
index b58af59..a322f70 100644
--- a/src/ksyms.c
+++ b/src/ksyms.c
@@ -1482,7 +1482,8 @@ static const char *lock_syms[] = {
"ShiftL_Lock",
"ShiftR_Lock",
"CtrlL_Lock",
- "CtrlR_Lock"
+ "CtrlR_Lock",
+ "CapsShift_Lock"
};
/* Keysyms whose KTYP is KT_SLOCK. */
@@ -1495,7 +1496,8 @@ static const char *sticky_syms[] = {
"SShiftL",
"SShiftR",
"SCtrlL",
- "SCtrlR"
+ "SCtrlR",
+ "SCapsShift"
};
/* Keysyms whose KTYP is KT_BRL. */
diff --git a/src/loadkeys.y b/src/loadkeys.y
index 5497130..179fd03 100644
--- a/src/loadkeys.y
+++ b/src/loadkeys.y
@@ -5,7 +5,7 @@
*/
%token EOL NUMBER LITERAL CHARSET KEYMAPS KEYCODE EQUALS
-%token PLAIN SHIFT CONTROL ALT ALTGR SHIFTL SHIFTR CTRLL CTRLR
+%token PLAIN SHIFT CONTROL ALT ALTGR SHIFTL SHIFTR CTRLL CTRLR CAPSSHIFT
%token COMMA DASH STRING STRLITERAL COMPOSE TO CCHAR ERROR PLUS
%token UNUMBER ALT_IS_META STRINGS AS USUAL ON FOR
@@ -186,6 +186,7 @@ modifier : SHIFT { mod |= M_SHIFT; }
| SHIFTR { mod |= M_SHIFTR; }
| CTRLL { mod |= M_CTRLL; }
| CTRLR { mod |= M_CTRLR; }
+ | CAPSSHIFT { mod |= M_CAPSSHIFT; }
;
fullline : KEYCODE NUMBER EQUALS rvalue0 EOL
{
diff --git a/src/modifiers.h b/src/modifiers.h
index af44b33..19d58be 100644
--- a/src/modifiers.h
+++ b/src/modifiers.h
@@ -7,3 +7,4 @@
#define M_SHIFTR (1 << KG_SHIFTR)
#define M_CTRLL (1 << KG_CTRLL)
#define M_CTRLR (1 << KG_CTRLR)
+#define M_CAPSSHIFT (1 << KG_CAPSSHIFT)
--
1.5.4.4
More information about the kbd
mailing list