Began to implement the messaging protocol

This commit is contained in:
Pierre Pronchery 2012-05-11 08:16:56 +00:00
parent 1746d19cfa
commit d02e552203
6 changed files with 69 additions and 18 deletions

View File

@ -5,8 +5,9 @@ BINDIR = $(PREFIX)/bin
CC ?= cc CC ?= cc
CPPFLAGSF= -I ../include CPPFLAGSF= -I ../include
CPPFLAGS?= CPPFLAGS?=
CFLAGSF = -W CFLAGSF = -W `pkg-config --cflags libDesktop`
CFLAGS = -Wall -g -pedantic CFLAGS = -Wall -g -pedantic
LDFLAGSF= `pkg-config --libs libDesktop`
RM ?= rm -f RM ?= rm -f
LN ?= ln -f LN ?= ln -f
MKDIR ?= mkdir -p MKDIR ?= mkdir -p
@ -16,8 +17,8 @@ INSTALL ?= install
all: $(TARGETS) all: $(TARGETS)
keyboard_OBJS = callbacks.o common.o key.o keyboard.o layout.o main.o keyboard_OBJS = callbacks.o common.o key.o keyboard.o layout.o main.o
keyboard_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS) `pkg-config --cflags gtk+-2.0` keyboard_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
keyboard_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) `pkg-config --libs gtk+-2.0` -lXtst keyboard_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) -lXtst
keyboard: $(keyboard_OBJS) keyboard: $(keyboard_OBJS)
$(CC) -o keyboard $(keyboard_OBJS) $(keyboard_LDFLAGS) $(CC) -o keyboard $(keyboard_OBJS) $(keyboard_LDFLAGS)
@ -59,8 +60,11 @@ distclean: clean
install: $(TARGETS) install: $(TARGETS)
$(MKDIR) $(DESTDIR)$(BINDIR) $(MKDIR) $(DESTDIR)$(BINDIR)
$(INSTALL) -m 0755 -- keyboard $(DESTDIR)$(BINDIR)/keyboard $(INSTALL) -m 0755 -- keyboard $(DESTDIR)$(BINDIR)/keyboard
$(MKDIR) $(DESTDIR)$(BINDIR)
$(INSTALL) -m 0755 -- keyboardctl $(DESTDIR)$(BINDIR)/keyboardctl
uninstall: uninstall:
$(RM) -- $(DESTDIR)$(BINDIR)/keyboard $(RM) -- $(DESTDIR)$(BINDIR)/keyboard
$(RM) -- $(DESTDIR)$(BINDIR)/keyboardctl
.PHONY: all clean distclean install uninstall .PHONY: all clean distclean install uninstall

View File

@ -1,5 +1,5 @@
/* $Id$ */ /* $Id$ */
/* Copyright (c) 2010 Pierre Pronchery <khorben@defora.org> */ /* Copyright (c) 2010-2012 Pierre Pronchery <khorben@defora.org> */
/* This file is part of DeforaOS Desktop Keyboard */ /* This file is part of DeforaOS Desktop Keyboard */
/* This program is free software: you can redistribute it and/or modify /* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -42,6 +42,26 @@ void on_keyboard_embedded(gpointer data)
} }
/* on_keyboard_message */
int on_keyboard_message(void * data, uint32_t value1, uint32_t value2,
uint32_t value3)
{
Keyboard * keyboard = data;
KeyboardMessage message = value1;
switch(message)
{
case KEYBOARD_MESSAGE_SET_PAGE:
keyboard_set_page(keyboard, value2);
break;
case KEYBOARD_MESSAGE_SET_VISIBLE:
keyboard_show(keyboard, (value2 != 0) ? TRUE : FALSE);
break;
}
return 0;
}
/* on_keyboard_set_layout_keypad */ /* on_keyboard_set_layout_keypad */
void on_keyboard_set_layout_keypad(gpointer data) void on_keyboard_set_layout_keypad(gpointer data)
{ {

View File

@ -19,12 +19,15 @@
# define KEYBOARD_CALLBACKS_H # define KEYBOARD_CALLBACKS_H
# include <gtk/gtk.h> # include <gtk/gtk.h>
# include <Desktop.h>
/* public */ /* public */
/* functions */ /* functions */
gboolean on_keyboard_delete_event(gpointer data); gboolean on_keyboard_delete_event(gpointer data);
void on_keyboard_embedded(gpointer data); void on_keyboard_embedded(gpointer data);
int on_keyboard_message(void * data, uint32_t value1, uint32_t value2,
uint32_t value3);
void on_keyboard_set_layout_keypad(gpointer data); void on_keyboard_set_layout_keypad(gpointer data);
void on_keyboard_set_layout_letters(gpointer data); void on_keyboard_set_layout_letters(gpointer data);

View File

@ -21,6 +21,7 @@
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <gtk/gtk.h> #include <gtk/gtk.h>
#include <Desktop.h>
#define XK_LATIN1 #define XK_LATIN1
#define XK_MISCELLANY #define XK_MISCELLANY
#include <X11/Xlib.h> #include <X11/Xlib.h>
@ -362,6 +363,9 @@ Keyboard * keyboard_new(KeyboardPrefs * prefs)
} }
keyboard_set_layout(keyboard, KLS_LETTERS); keyboard_set_layout(keyboard, KLS_LETTERS);
pango_font_description_free(bold); pango_font_description_free(bold);
/* messages */
desktop_message_register(KEYBOARD_CLIENT_MESSAGE, on_keyboard_message,
keyboard);
return keyboard; return keyboard;
} }
@ -379,16 +383,6 @@ void keyboard_delete(Keyboard * keyboard)
/* accessors */ /* accessors */
/* keyboard_set_modifier */
void keyboard_set_modifier(Keyboard * keyboard, unsigned int modifier)
{
size_t i;
for(i = 0; i < keyboard->layouts_cnt; i++)
keyboard_layout_apply_modifier(keyboard->layouts[i], modifier);
}
/* keyboard_set_layout */ /* keyboard_set_layout */
void keyboard_set_layout(Keyboard * keyboard, unsigned int which) void keyboard_set_layout(Keyboard * keyboard, unsigned int which)
{ {
@ -406,6 +400,32 @@ void keyboard_set_layout(Keyboard * keyboard, unsigned int which)
} }
/* keyboard_set_modifier */
void keyboard_set_modifier(Keyboard * keyboard, unsigned int modifier)
{
size_t i;
for(i = 0; i < keyboard->layouts_cnt; i++)
keyboard_layout_apply_modifier(keyboard->layouts[i], modifier);
}
/* keyboard_set_page */
void keyboard_set_page(Keyboard * keyboard, KeyboardPage page)
{
/* FIXME really implement */
switch(page)
{
case KEYBOARD_PAGE_DEFAULT:
keyboard_set_layout(keyboard, 0);
break;
case KEYBOARD_PAGE_KEYPAD:
keyboard_set_layout(keyboard, 1);
break;
}
}
/* useful */ /* useful */
/* keyboard_show */ /* keyboard_show */
void keyboard_show(Keyboard * keyboard, gboolean show) void keyboard_show(Keyboard * keyboard, gboolean show)

View File

@ -19,6 +19,7 @@
# define KEYBOARD_KEYBOARD_H # define KEYBOARD_KEYBOARD_H
# include <gtk/gtk.h> # include <gtk/gtk.h>
# include "Keyboard.h"
# include "key.h" # include "key.h"
@ -41,6 +42,7 @@ void keyboard_delete(Keyboard * keyboard);
/* accessors */ /* accessors */
/* XXX be more explicit */ /* XXX be more explicit */
void keyboard_set_layout(Keyboard * keyboard, unsigned int which); void keyboard_set_layout(Keyboard * keyboard, unsigned int which);
void keyboard_set_page(Keyboard * keyboard, KeyboardPage page);
/* useful */ /* useful */
void keyboard_show(Keyboard * keyboard, gboolean show); void keyboard_show(Keyboard * keyboard, gboolean show);

View File

@ -1,15 +1,16 @@
targets=keyboard,keyboardctl targets=keyboard,keyboardctl
cppflags_force=-I ../include cppflags_force=-I ../include
cflags_force=-W cflags_force=-W `pkg-config --cflags libDesktop`
cflags=-Wall -g -O2
ldflags_force=`pkg-config --libs libDesktop`
cflags=-Wall -g -pedantic cflags=-Wall -g -pedantic
dist=Makefile,callbacks.h,common.h,key.h,keyboard.h,layout.h dist=Makefile,callbacks.h,common.h,key.h,keyboard.h,layout.h
[keyboard] [keyboard]
type=binary type=binary
cflags=`pkg-config --cflags gtk+-2.0`
ldflags=`pkg-config --libs gtk+-2.0` -lXtst
install=$(BINDIR)
sources=callbacks.c,common.c,key.c,keyboard.c,layout.c,main.c sources=callbacks.c,common.c,key.c,keyboard.c,layout.c,main.c
ldflags=-lXtst
install=$(BINDIR)
[key.c] [key.c]
depends=key.h depends=key.h
@ -28,3 +29,4 @@ type=binary
sources=keyboardctl.c sources=keyboardctl.c
cflags=`pkg-config --cflags libDesktop` cflags=`pkg-config --cflags libDesktop`
ldflags=`pkg-config --libs libDesktop` ldflags=`pkg-config --libs libDesktop`
install=$(BINDIR)