summaryrefslogtreecommitdiff
path: root/plugins/keyboard/keysrc.l
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-03-26 12:52:32 +0000
committerDana Jansens <danakj@orodu.net>2003-03-26 12:52:32 +0000
commit91ebde9e8842678e0d0704dc7945b2b84aba314f (patch)
tree8a7350529e86af79f865336112ab5cc37f354707 /plugins/keyboard/keysrc.l
parent59ad2e319a58af43ca77cda7307888e5ae34ea2a (diff)
load keybindings from keysrc
Diffstat (limited to 'plugins/keyboard/keysrc.l')
-rw-r--r--plugins/keyboard/keysrc.l44
1 files changed, 44 insertions, 0 deletions
diff --git a/plugins/keyboard/keysrc.l b/plugins/keyboard/keysrc.l
new file mode 100644
index 00000000..258a23b9
--- /dev/null
+++ b/plugins/keyboard/keysrc.l
@@ -0,0 +1,44 @@
+%{
+#include <glib.h>
+#include "y.tab.h"
+
+extern void kparseerror(char *s);
+int kparselineno;
+%}
+
+field [A-Za-z0-9][-A-Za-z0-9]*
+number [0-9]+
+desktop [dD][eE][sS][kK][tT][oO][pP]
+execute [eE][xX][eE][cC][uU][tT][eE]
+restart [rR][eE][sS][tT][aA][rR][tT]
+string \"[^"\n]*\"
+
+%%
+
+^[ \t]*#.*\n kparselineno++;
+{number} kparselval.integer = atoi(kparsetext); return INTEGER;
+{execute} kparselval.string = g_strdup(kparsetext); return EXECUTE;
+{restart} kparselval.string = g_strdup(kparsetext); return RESTART;
+{desktop} kparselval.string = g_strdup(kparsetext); return DESKTOP;
+{field} kparselval.string = g_strdup(kparsetext); return FIELD;
+{string} {
+ /* drop the quotes */
+ kparselval.string = g_strdup(kparsetext+1);
+ if (kparselval.string[kparseleng-2] != '"') {
+ g_warning("improperly terminated string on line %d\n",
+ kparselineno);
+ kparseerror("");
+ } else
+ kparselval.string[kparseleng-2] = '\0';
+ return STRING;
+ }
+
+[ \t]
+\n kparselineno++; return *yytext;
+. kparseerror("");
+
+%%
+
+int kparsewrap() {
+ return 1;
+}