summaryrefslogtreecommitdiff
path: root/core/kbd/merge-fullline_singleline.patch
blob: cc2b2c3b05979f7d3dce1dac87654fd07d3989a5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
From 301cb9f132017ec67cc00681ca3f7a25f0d24ca2 Mon Sep 17 00:00:00 2001
From: Alexey Gladkov <gladkov.alexey@gmail.com>
Date: Mon, 7 Oct 2013 18:11:45 +0400
Subject: [PATCH] parser: Merge fullline and singleline rule

Signed-off-by: Alexey Gladkov <gladkov.alexey@gmail.com>
---
 src/libkeymap/parser.y |   59 ++++++++++++++++++++++++-----------------------
 1 files changed, 30 insertions(+), 29 deletions(-)

diff --git a/src/libkeymap/parser.y b/src/libkeymap/parser.y
index 627494a..17d953a 100644
--- a/src/libkeymap/parser.y
+++ b/src/libkeymap/parser.y
@@ -180,7 +180,6 @@ line		: EOL
 		| usualstringsline
 		| usualcomposeline
 		| keymapline
-		| fullline
 		| singleline
 		| strline
                 | compline
@@ -281,34 +280,7 @@ compline        : COMPOSE compsym compsym TO compsym EOL
 compsym		: CCHAR		{	$$ = $1;		}
 		| UNUMBER	{	$$ = $1 ^ 0xf000;	}
 		;
-singleline	:	{
-				ctx->mod = 0;
-			}
-		  modifiers KEYCODE NUMBER EQUALS rvalue EOL
-			{
-				if (lk_add_key(ctx, ctx->mod, $4, $6) < 0)
-					YYERROR;
-			}
-		| PLAIN KEYCODE NUMBER EQUALS rvalue EOL
-			{
-				if (lk_add_key(ctx, 0, $3, $5) < 0)
-					YYERROR;
-			}
-		;
-modifiers	: modifiers modifier
-		| modifier
-		;
-modifier	: SHIFT		{ ctx->mod |= M_SHIFT;	}
-		| CONTROL	{ ctx->mod |= M_CTRL;	}
-		| ALT		{ ctx->mod |= M_ALT;		}
-		| ALTGR		{ ctx->mod |= M_ALTGR;	}
-		| SHIFTL	{ ctx->mod |= M_SHIFTL;	}
-		| SHIFTR	{ ctx->mod |= M_SHIFTR;	}
-		| CTRLL		{ ctx->mod |= M_CTRLL;	}
-		| CTRLR		{ ctx->mod |= M_CTRLR;	}
-		| CAPSSHIFT	{ ctx->mod |= M_CAPSSHIFT;	}
-		;
-fullline	: KEYCODE NUMBER EQUALS rvalue0 EOL
+singleline	: KEYCODE NUMBER EQUALS rvalue0 EOL
 			{
 				unsigned int j, i, keycode;
 				int *val;
@@ -367,6 +339,33 @@ fullline	: KEYCODE NUMBER EQUALS rvalue0 EOL
 					}
 				}
 			}
+
+		| modifiers KEYCODE NUMBER EQUALS rvalue EOL
+			{
+				if (lk_add_key(ctx, ctx->mod, $3, $5) < 0)
+					YYERROR;
+				ctx->mod = 0;
+			}
+		| PLAIN KEYCODE NUMBER EQUALS rvalue EOL
+			{
+				if (lk_add_key(ctx, 0, $3, $5) < 0)
+					YYERROR;
+				ctx->mod = 0;
+			}
+		;
+modifiers	: modifiers modifier
+		| modifier
+		;
+modifier	: SHIFT		{ ctx->mod |= M_SHIFT;	}
+		| CONTROL	{ ctx->mod |= M_CTRL;	}
+		| ALT		{ ctx->mod |= M_ALT;		}
+		| ALTGR		{ ctx->mod |= M_ALTGR;	}
+		| SHIFTL	{ ctx->mod |= M_SHIFTL;	}
+		| SHIFTR	{ ctx->mod |= M_SHIFTR;	}
+		| CTRLL		{ ctx->mod |= M_CTRLL;	}
+		| CTRLR		{ ctx->mod |= M_CTRLR;	}
+		| CAPSSHIFT	{ ctx->mod |= M_CAPSSHIFT;	}
+		;
 		;
 
 rvalue0		:
@@ -393,6 +392,8 @@ lk_parse_keymap(struct lk_ctx *ctx, lkfile_t *f)
 	yyscan_t scanner;
 	int rc = -1;
 
+	ctx->mod = 0;
+
 	yylex_init(&scanner);
 	yylex_init_extra(ctx, &scanner);
 
-- 
1.7.3.3