From 1b3eeed2e3e199d06433534a69bbe6593c798e1c Mon Sep 17 00:00:00 2001 From: Ricardo Salveti de Araujo Date: Tue, 10 Nov 2009 16:41:53 -0300 Subject: [PATCH 083/118] matchbox-keyboard-svn: adding mamona modifications Signed-off-by: Ricardo Salveti de Araujo --- .../10-ugly-hack-to-get-net_workarea-hint.patch | 41 +++ ...1-get-net_workarea-even-if-there-is-no-wm.patch | 70 ++++ .../files/4-Add-rendering-debug-logging.patch | 11 - ...to-use-more-than-one-third-of-screen-size.patch | 24 ++ .../8-Get-mwm_hints-before-set-no-decoration.patch | 60 ++++ ...itial-values-for-window-size-and-position.patch | 93 ++++++ .../files/mamona/keyboard-mamona.xml | 348 ++++++++++++++++++++ .../files/support_mamona_im.patch | 89 +++++ recipes/matchbox-keyboard/matchbox-keyboard_svn.bb | 26 ++- 9 files changed, 749 insertions(+), 13 deletions(-) create mode 100644 recipes/matchbox-keyboard/files/10-ugly-hack-to-get-net_workarea-hint.patch create mode 100644 recipes/matchbox-keyboard/files/11-get-net_workarea-even-if-there-is-no-wm.patch create mode 100644 recipes/matchbox-keyboard/files/7-Fix-resize-loop-bug-allowing-kbd-to-use-more-than-one-third-of-screen-size.patch create mode 100644 recipes/matchbox-keyboard/files/8-Get-mwm_hints-before-set-no-decoration.patch create mode 100644 recipes/matchbox-keyboard/files/9-Ajust-initial-values-for-window-size-and-position.patch create mode 100644 recipes/matchbox-keyboard/files/mamona/keyboard-mamona.xml create mode 100644 recipes/matchbox-keyboard/files/support_mamona_im.patch diff --git a/recipes/matchbox-keyboard/files/10-ugly-hack-to-get-net_workarea-hint.patch b/recipes/matchbox-keyboard/files/10-ugly-hack-to-get-net_workarea-hint.patch new file mode 100644 index 0000000..1d444f1 --- /dev/null +++ b/recipes/matchbox-keyboard/files/10-ugly-hack-to-get-net_workarea-hint.patch @@ -0,0 +1,41 @@ +Index: matchbox-keyboard/src/matchbox-keyboard-ui.c +=================================================================== +--- matchbox-keyboard.orig/src/matchbox-keyboard-ui.c 2008-07-14 18:31:58.000000000 -0300 ++++ matchbox-keyboard/src/matchbox-keyboard-ui.c 2008-07-14 18:36:30.000000000 -0300 +@@ -116,17 +116,29 @@ + int result, format; + unsigned long nitems, bytes_after; + int *geometry = NULL; ++ int try; + + atom_area = XInternAtom (ui->xdpy, "_NET_WORKAREA", False); + +- result = XGetWindowProperty (ui->xdpy, +- RootWindow(ui->xdpy, ui->xscreen), +- atom_area, +- 0, 16L, False, XA_CARDINAL, &type, &format, +- &nitems, &bytes_after, +- (unsigned char **)&geometry); ++ /* HACK: Some WMs take long time to set some hints after set _NET_WM_NAME ++ So, let give him some time to do this */ ++ try = 3; ++ while (try--) ++ { ++ result = XGetWindowProperty (ui->xdpy, ++ RootWindow(ui->xdpy, ui->xscreen), ++ atom_area, ++ 0, 16L, False, XA_CARDINAL, &type, &format, ++ &nitems, &bytes_after, ++ (unsigned char **)&geometry); ++ ++ if (result == Success && nitems >= 4 && geometry != NULL) ++ break; ++ ++ sleep(1); ++ } + +- if (result != Success || nitems < 4 || geometry == NULL) ++ if (try == -1) + { + if (geometry) XFree(geometry); + return False; diff --git a/recipes/matchbox-keyboard/files/11-get-net_workarea-even-if-there-is-no-wm.patch b/recipes/matchbox-keyboard/files/11-get-net_workarea-even-if-there-is-no-wm.patch new file mode 100644 index 0000000..49510e0 --- /dev/null +++ b/recipes/matchbox-keyboard/files/11-get-net_workarea-even-if-there-is-no-wm.patch @@ -0,0 +1,70 @@ +Index: matchbox-keyboard/src/matchbox-keyboard-ui.c +=================================================================== +--- matchbox-keyboard.orig/src/matchbox-keyboard-ui.c 2008-07-14 18:48:10.000000000 -0300 ++++ matchbox-keyboard/src/matchbox-keyboard-ui.c 2008-07-14 18:48:11.000000000 -0300 +@@ -138,18 +138,22 @@ + sleep(1); + } + +- if (try == -1) ++ if (try > -1) /* we got it! */ + { +- if (geometry) XFree(geometry); +- return False; ++ if (x) *x = geometry[0]; ++ if (y) *y = geometry[1]; ++ if (width) *width = geometry[2]; ++ if (height) *height = geometry[3]; ++ XFree(geometry); ++ return True; + } + +- if (x) *x = geometry[0]; +- if (y) *y = geometry[1]; +- if (width) *width = geometry[2]; +- if (height) *height = geometry[3]; +- +- XFree(geometry); ++ if (geometry) XFree(geometry); ++ /* Well, lets at least get the screen dimensions from Xlib */ ++ if (x) *x = 0; ++ if (y) *y = 0; ++ if (width) *width = XDisplayWidth(ui->xdpy, ui->xscreen); ++ if (height) *height = XDisplayHeight(ui->xdpy, ui->xscreen); + + return True; + } +@@ -734,7 +738,7 @@ + + win_coord_x = 0; + win_coord_y = 0; +- if (!ui->want_embedding && have_ewmh_wm && get_desktop_area(ui, &desk_x, &desk_y, &desk_width, &desk_height) ) ++ if (!ui->want_embedding && get_desktop_area(ui, &desk_x, &desk_y, &desk_width, &desk_height) ) + { + win_coord_x = desk_x; + win_coord_y = (desk_height / 3 * 2) + desk_y; +@@ -805,7 +809,13 @@ + atom_MOTIF_WM_HINTS, 32, PropModeReplace, + (unsigned char *)hints, + PROP_MOTIF_WM_HINTS_ELEMENTS); +- ++ ++ if (desk_width && desk_height) ++ { ++ mb_kbd_ui_resize(ui, desk_width, ui->xwin_height); ++ XResizeWindow(ui->xdpy, ui->xwin, ui->xwin_width, ui->xwin_height); ++ } ++ + if (have_ewmh_wm) + { + /* XXX Fix this for display size */ +@@ -831,9 +841,6 @@ + + if (desk_width && desk_height) + { +- mb_kbd_ui_resize(ui, desk_width, ui->xwin_height); +- XResizeWindow(ui->xdpy, ui->xwin, ui->xwin_width, ui->xwin_height); +- + wm_struct_vals[3] = ui->xwin_height; + wm_struct_vals[11] = desk_width; + diff --git a/recipes/matchbox-keyboard/files/4-Add-rendering-debug-logging.patch b/recipes/matchbox-keyboard/files/4-Add-rendering-debug-logging.patch index 509cd09..b4c32d1 100644 --- a/recipes/matchbox-keyboard/files/4-Add-rendering-debug-logging.patch +++ b/recipes/matchbox-keyboard/files/4-Add-rendering-debug-logging.patch @@ -52,14 +52,3 @@ diff -r b010d54a6c50 -r 38c3459f2e1a src/matchbox-keyboard-ui.c if (xev.xconfigure.window == ui->xwin && (xev.xconfigure.width != ui->xwin_width || xev.xconfigure.height != ui->xwin_height)) -diff -r b010d54a6c50 -r 38c3459f2e1a src/matchbox-keyboard.h ---- a/src/matchbox-keyboard.h Mon Apr 09 00:06:34 2007 +0000 -+++ b/src/matchbox-keyboard.h Mon Apr 09 00:08:07 2007 +0000 -@@ -48,6 +48,7 @@ - #include "config.h" - #endif - -+#define WANT_DEBUG 1 - #if (WANT_DEBUG) - #define DBG(x, a...) \ - fprintf (stderr, __FILE__ ":%d,%s() " x "\n", __LINE__, __func__, ##a) diff --git a/recipes/matchbox-keyboard/files/7-Fix-resize-loop-bug-allowing-kbd-to-use-more-than-one-third-of-screen-size.patch b/recipes/matchbox-keyboard/files/7-Fix-resize-loop-bug-allowing-kbd-to-use-more-than-one-third-of-screen-size.patch new file mode 100644 index 0000000..cea6ae4 --- /dev/null +++ b/recipes/matchbox-keyboard/files/7-Fix-resize-loop-bug-allowing-kbd-to-use-more-than-one-third-of-screen-size.patch @@ -0,0 +1,24 @@ +Index: matchbox-keyboard/src/matchbox-keyboard-ui.c +=================================================================== +--- matchbox-keyboard.orig/src/matchbox-keyboard-ui.c 2008-06-28 21:29:56.000000000 -0300 ++++ matchbox-keyboard/src/matchbox-keyboard-ui.c 2008-06-28 21:30:57.000000000 -0300 +@@ -880,10 +880,6 @@ + + MARK(); + +- /* Don't scale beyond a sensible height on wide screens */ +- if (height > (ui->dpy_height / 3)) +- height = ui->dpy_height / 3; +- + DBG("mb_kbd_ui_resize: resize to %dx%d, base %dx%d", width, height, ui->base_alloc_width, ui->base_alloc_height); + + width_diff = width - ui->base_alloc_width; +@@ -1059,8 +1055,6 @@ + } + } + +- XResizeWindow(ui->xdpy, ui->xwin, width, height); +- + ui->xwin_width = width; + ui->xwin_height = height; + diff --git a/recipes/matchbox-keyboard/files/8-Get-mwm_hints-before-set-no-decoration.patch b/recipes/matchbox-keyboard/files/8-Get-mwm_hints-before-set-no-decoration.patch new file mode 100644 index 0000000..4fd3e9e --- /dev/null +++ b/recipes/matchbox-keyboard/files/8-Get-mwm_hints-before-set-no-decoration.patch @@ -0,0 +1,60 @@ +Index: matchbox-keyboard/src/matchbox-keyboard-ui.c +=================================================================== +--- matchbox-keyboard.orig/src/matchbox-keyboard-ui.c 2008-07-10 15:09:41.000000000 -0300 ++++ matchbox-keyboard/src/matchbox-keyboard-ui.c 2008-07-10 15:11:20.000000000 -0300 +@@ -647,7 +647,6 @@ + atom_MOTIF_WM_HINTS; + + +- PropMotifWmHints *mwm_hints; + XSizeHints size_hints; + XWMHints *wm_hints; + XSetWindowAttributes win_attr; +@@ -754,20 +753,33 @@ + + if (!ui->want_embedding) + { +- mwm_hints = util_malloc0(sizeof(PropMotifWmHints)); +- +- if (mwm_hints) +- { +- mwm_hints->flags = MWM_HINTS_DECORATIONS; +- mwm_hints->decorations = 0; +- +- XChangeProperty(ui->xdpy, ui->xwin, atom_MOTIF_WM_HINTS, +- XA_ATOM, 32, PropModeReplace, +- (unsigned char *)mwm_hints, +- PROP_MOTIF_WM_HINTS_ELEMENTS); +- +- free(mwm_hints); +- } ++ unsigned char *data; ++ PropMotifWmHints mwm_hints, *hints; ++ Atom type; ++ int format; ++ unsigned long nitems, bytes_after; ++ ++ XGetWindowProperty (ui->xdpy, ui->xwin, atom_MOTIF_WM_HINTS, 0, ++ PROP_MOTIF_WM_HINTS_ELEMENTS, False, AnyPropertyType, ++ &type, &format, &nitems, &bytes_after, &data); ++ ++ if (type == None) ++ { ++ memset(&mwm_hints, 0, sizeof(PropMotifWmHints)); ++ hints = &mwm_hints; ++ hints->flags = MWM_HINTS_DECORATIONS; ++ } ++ else ++ { ++ hints = (PropMotifWmHints *)data; ++ hints->flags |= MWM_HINTS_DECORATIONS; ++ hints->decorations = 0; ++ } ++ ++ XChangeProperty(ui->xdpy, ui->xwin, atom_MOTIF_WM_HINTS, ++ atom_MOTIF_WM_HINTS, 32, PropModeReplace, ++ (unsigned char *)hints, ++ PROP_MOTIF_WM_HINTS_ELEMENTS); + + if (have_ewmh_wm) + { diff --git a/recipes/matchbox-keyboard/files/9-Ajust-initial-values-for-window-size-and-position.patch b/recipes/matchbox-keyboard/files/9-Ajust-initial-values-for-window-size-and-position.patch new file mode 100644 index 0000000..4830fd2 --- /dev/null +++ b/recipes/matchbox-keyboard/files/9-Ajust-initial-values-for-window-size-and-position.patch @@ -0,0 +1,93 @@ +Index: matchbox-keyboard/src/matchbox-keyboard-ui.c +=================================================================== +--- matchbox-keyboard.orig/src/matchbox-keyboard-ui.c 2008-07-14 17:33:13.000000000 -0300 ++++ matchbox-keyboard/src/matchbox-keyboard-ui.c 2008-07-14 17:54:03.000000000 -0300 +@@ -656,6 +656,9 @@ + boolean have_matchbox_wm = False; + boolean have_ewmh_wm = False; + ++ int win_coord_x, win_coord_y; ++ int desk_width = 0, desk_height = 0, desk_x = 0, desk_y = 0; ++ + DBG("mb_kbd_ui_resources_create: %dx%d", ui->xwin_width, ui->xwin_height); + + /* +@@ -717,9 +720,19 @@ + win_attr.event_mask + = ButtonPressMask|ButtonReleaseMask|Button1MotionMask|StructureNotifyMask; + ++ win_coord_x = 0; ++ win_coord_y = 0; ++ if (!ui->want_embedding && have_ewmh_wm && get_desktop_area(ui, &desk_x, &desk_y, &desk_width, &desk_height) ) ++ { ++ win_coord_x = desk_x; ++ win_coord_y = (desk_height / 3 * 2) + desk_y; ++ ui->xwin_width = desk_width; ++ ui->xwin_height = desk_height / 3; ++ } ++ + ui->xwin = XCreateWindow(ui->xdpy, + ui->xwin_root, +- 0, 0, ++ win_coord_x, win_coord_y, + ui->xwin_width, ui->xwin_height, + 0, + CopyFromParent, CopyFromParent, CopyFromParent, +@@ -798,35 +811,18 @@ + 1399 }; /* bottom_end_x */ + + Atom states[] = { atom_NET_WM_STATE_SKIP_TASKBAR, atom_NET_WM_STATE_SKIP_PAGER }; +- int desk_width = 0, desk_height = 0, desk_y = 0; + + XChangeProperty(ui->xdpy, ui->xwin, + atom_NET_WM_STATE, XA_ATOM, 32, + PropModeReplace, + (unsigned char *)states, 2); + +- if (get_desktop_area(ui, NULL, &desk_y, &desk_width, &desk_height)) ++ if (desk_width && desk_height) + { +- /* Assuming we take up all available display width +- * ( at least true with matchbox wm ). we resize +- * the base ui width to this ( and height as a factor ) +- * to avoid the case of mapping and then the wm resizing +- * us, causing an ugly repaint. +- */ +- if (desk_width > ui->xwin_width) +- { +- int win_height; +- if (ui->kbd->hfactor != 0) +- win_height = desk_height * ui->kbd->hfactor / 100; +- else +- win_height = ( desk_width * ui->xwin_height ) / ui->xwin_width; +- +- mb_kbd_ui_resize(ui, +- desk_width, +- win_height); +- } ++ mb_kbd_ui_resize(ui, desk_width, ui->xwin_height); ++ XResizeWindow(ui->xdpy, ui->xwin, ui->xwin_width, ui->xwin_height); + +- wm_struct_vals[2] = desk_y + desk_height - ui->xwin_height; ++ wm_struct_vals[3] = ui->xwin_height; + wm_struct_vals[11] = desk_width; + + XChangeProperty(ui->xdpy, ui->xwin, +@@ -848,13 +844,10 @@ + } + else + { +- /* +- XChangeProperty(ui->xdpy, ui->xwin, +- atom_NET_WM_WINDOW_TYPE, XA_ATOM, 32, +- PropModeReplace, +- (unsigned char *) &atom_NET_WM_WINDOW_TYPE_DOCK, 1); +- */ +- ++ XChangeProperty(ui->xdpy, ui->xwin, ++ atom_NET_WM_WINDOW_TYPE, XA_ATOM, 32, ++ PropModeReplace, ++ (unsigned char *) &atom_NET_WM_WINDOW_TYPE_DOCK, 1); + } + } + } diff --git a/recipes/matchbox-keyboard/files/mamona/keyboard-mamona.xml b/recipes/matchbox-keyboard/files/mamona/keyboard-mamona.xml new file mode 100644 index 0000000..9bc144b --- /dev/null +++ b/recipes/matchbox-keyboard/files/mamona/keyboard-mamona.xml @@ -0,0 +1,348 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/recipes/matchbox-keyboard/files/support_mamona_im.patch b/recipes/matchbox-keyboard/files/support_mamona_im.patch new file mode 100644 index 0000000..2db32a9 --- /dev/null +++ b/recipes/matchbox-keyboard/files/support_mamona_im.patch @@ -0,0 +1,89 @@ +diff --git a/configure.ac b/configure.ac +index 9678cf7..0757fe1 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -65,6 +65,9 @@ AC_ARG_WITH(expat-lib, + PKG_CHECK_MODULES(FAKEKEY, libfakekey,, + AC_MSG_ERROR([*** You need to install libfakekey from MB SVN ***])) + ++PKG_CHECK_MODULES(MAMONA_IM, libmamona_im,, ++ AC_MSG_ERROR([*** You need to install libmamona_im ***])) ++ + if test x$enable_cairo = xyes; then + PKG_CHECK_MODULES(CAIRO, cairo,, [enable_cairo="no"]) + fi +diff --git a/src/Makefile.am b/src/Makefile.am +index 6dc986e..f1314a4 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -16,7 +16,7 @@ INCLUDES = -DDATADIR=\"$(DATADIR)\" -DPKGDATADIR=\"$(PKGDATADIR)\" -DPREFIX=\"$( + + bin_PROGRAMS = matchbox-keyboard + +-matchbox_keyboard_LDADD = $(FAKEKEY_LIBS) $(XFT_LIBS) $(EXPAT_LIBS) $(CAIRO_LIBS) $(PNG_LIBS) ++matchbox_keyboard_LDADD = $(FAKEKEY_LIBS) $(XFT_LIBS) $(EXPAT_LIBS) $(CAIRO_LIBS) $(PNG_LIBS) $(MAMONA_IM_LIBS) + + matchbox_keyboard_SOURCES = \ + matchbox-keyboard.c matchbox-keyboard.h \ +diff --git a/src/matchbox-keyboard-ui.c b/src/matchbox-keyboard-ui.c +index 0c4a98e..e793318 100644 +--- a/src/matchbox-keyboard-ui.c ++++ b/src/matchbox-keyboard-ui.c +@@ -17,6 +17,8 @@ + * + */ + ++#include ++ + #include "matchbox-keyboard.h" + + #define PROP_MOTIF_WM_HINTS_ELEMENTS 5 +@@ -1186,25 +1188,25 @@ mb_kbd_ui_event_loop(MBKeyboardUI *ui) + break; + } + if (ui->want_embedding) +- mb_kbd_xembed_process_xevents (ui, &xev); ++ mamona_im_identify_xevent(&xev); + + if (ui->is_daemon) + { +- switch (mb_kbd_remote_process_xevents (ui, &xev)) ++ switch (mamona_im_identify_xevent(&xev)) + { +- case MBKeyboardRemoteHide: ++ case MamonaInputHide: + if (to_hide == 1) { + mb_kbd_ui_hide(ui); + } + tvt.tv_usec = hide_delay; + to_hide = 1; + break; +- case MBKeyboardRemoteShow: ++ case MamonaInputShow: + mb_kbd_ui_show(ui); + tvt.tv_usec = repeat_delay; + to_hide = 0; + break; +- case MBKeyboardRemoteToggle: ++ case MamonaInputToggle: + to_hide = 0; + tvt.tv_usec = repeat_delay; + if (ui->visible) +@@ -1212,7 +1214,7 @@ mb_kbd_ui_event_loop(MBKeyboardUI *ui) + else + mb_kbd_ui_show(ui); + break; +- case MBKeyboardRemoteNone: ++ case MamonaInputNone: + if (to_hide == 1) { + mb_kbd_ui_hide(ui); + tvt.tv_usec = repeat_delay; +@@ -1346,7 +1348,7 @@ mb_kbd_ui_realize(MBKeyboardUI *ui) + if (ui->is_daemon) + { + /* Dont map daemon to begin with */ +- mb_kbd_remote_init (ui); ++ mamona_im_init(ui->xdpy, ui->xwin); + } + else + { diff --git a/recipes/matchbox-keyboard/matchbox-keyboard_svn.bb b/recipes/matchbox-keyboard/matchbox-keyboard_svn.bb index 27d87b7..57e579a 100644 --- a/recipes/matchbox-keyboard/matchbox-keyboard_svn.bb +++ b/recipes/matchbox-keyboard/matchbox-keyboard_svn.bb @@ -1,11 +1,12 @@ DESCRIPTION = "Matchbox virtual keyboard for X11" LICENSE = "GPL" -DEPENDS = "libfakekey expat libxft" +DEPENDS = "libfakekey expat libxft libpng" +DEPENDS_append_mamona = " mamona-input-methods" RCONFLICTS = matchbox-keyboard-inputmethod RPROVIDES_${PN} = matchbox-keyboard-inputmethod SECTION = "x11" PV = "0.0+svnr${SRCPV}" -PR ="r7" +PR ="r8" SRC_URI = "svn://svn.o-hand.com/repos/matchbox/trunk;module=${PN};proto=http \ file://smallscreen-fontsize.patch;patch=1 \ @@ -14,8 +15,18 @@ SRC_URI = "svn://svn.o-hand.com/repos/matchbox/trunk;module=${PN};proto=http \ file://4-Add-rendering-debug-logging.patch;patch=1 \ file://5-Add-support-for-loading-multiple-independent-layouts.patch;patch=1 \ file://6-Add-layout-switch-key-to-all-layouts.patch;patch=1 \ + file://7-Fix-resize-loop-bug-allowing-kbd-to-use-more-than-one-third-of-screen-size.patch;patch=1 \ + file://8-Get-mwm_hints-before-set-no-decoration.patch;patch=1 \ + file://9-Ajust-initial-values-for-window-size-and-position.patch;patch=1 \ + file://10-ugly-hack-to-get-net_workarea-hint.patch;patch=1 \ + file://11-get-net_workarea-even-if-there-is-no-wm.patch;patch=1 \ " +SRC_URI_append_mamona = "\ + file://keyboard-mamona.xml \ + file://support_mamona_im.patch;patch=1 \ + file://80matchboxkeyboard \ + " S = "${WORKDIR}/${PN}" @@ -28,3 +39,14 @@ FILES_${PN} = "${bindir}/* \ ${datadir}/pixmaps \ ${datadir}/matchbox-keyboard" +FILES_${PN}_append_mamona = "\ + ${sysconfdir}/X11/Xsession.d/80matchboxkeyboard \ + " + +do_install_append_mamona () { + mv ${D}${datadir}/${PN}/keyboard.xml ${D}${datadir}/${PN}/keyboard-default.xml + install -m 0644 ${WORKDIR}/keyboard-mamona.xml ${D}${datadir}/${PN} + ln -sf keyboard-mamona.xml ${D}${datadir}/${PN}/keyboard.xml + install -d ${D}${sysconfdir}/X11/Xsession.d/ + install -m 0755 ${WORKDIR}/80matchboxkeyboard ${D}${sysconfdir}/X11/Xsession.d/ +} -- 1.6.3.3