diff options
Diffstat (limited to 'recipes/matchbox-keyboard')
16 files changed, 952 insertions, 0 deletions
diff --git a/recipes/matchbox-keyboard/files/2-Add-new-modifier--layout--Used-to-cycle-thru-all-available-layouts.patch b/recipes/matchbox-keyboard/files/2-Add-new-modifier--layout--Used-to-cycle-thru-all-available-layouts.patch new file mode 100644 index 0000000000..8aae3a0203 --- /dev/null +++ b/recipes/matchbox-keyboard/files/2-Add-new-modifier--layout--Used-to-cycle-thru-all-available-layouts.patch @@ -0,0 +1,91 @@ +# HG changeset patch +# User pfalcon@localhost +# Date 1176076569 0 +# Node ID ff9cf1fd8177dded04b9fc81ba630203848fc3ca +# Parent 96305d94eb31f06f5618c99310192c47c68a1f21 +Add new modifier: layout. Used to cycle thru all available layouts. + +diff -r 96305d94eb31 -r ff9cf1fd8177 src/config-parser.c +--- a/src/config-parser.c Sun Apr 08 23:28:43 2007 +0000 ++++ b/src/config-parser.c Sun Apr 08 23:56:09 2007 +0000 +@@ -113,7 +113,8 @@ ModLookup[] = + { "mod1", MBKeyboardKeyModMod1 }, + { "mod2", MBKeyboardKeyModMod2 }, + { "mod3", MBKeyboardKeyModMod3 }, +- { "caps", MBKeyboardKeyModCaps } ++ { "caps", MBKeyboardKeyModCaps }, ++ { "layout", MBKeyboardKeyModLayout }, + }; + + typedef struct MBKeyboardConfigState +diff -r 96305d94eb31 -r ff9cf1fd8177 src/matchbox-keyboard-key.c +--- a/src/matchbox-keyboard-key.c Sun Apr 08 23:28:43 2007 +0000 ++++ b/src/matchbox-keyboard-key.c Sun Apr 08 23:56:09 2007 +0000 +@@ -493,6 +493,16 @@ mb_kbd_key_press(MBKeyboardKey *key) + case MBKeyboardKeyModAlt: + mb_kbd_toggle_state(key->kbd, MBKeyboardStateAlt); + break; ++ case MBKeyboardKeyModLayout: ++ key->kbd->selected_layout_no++; ++ if (key->kbd->selected_layout_no >= util_list_length(key->kbd->layouts)) ++ key->kbd->selected_layout_no = 0; ++ key->kbd->selected_layout = ++ (MBKeyboardLayout *)util_list_get_nth_data(key->kbd->layouts, ++ key->kbd->selected_layout_no); ++ mb_kbd_ui_recalc_ui_layout(key->kbd->ui); ++ queue_full_kbd_redraw = True; ++ break; + default: + DBG("unknown modifier action"); + break; +diff -r 96305d94eb31 -r ff9cf1fd8177 src/matchbox-keyboard-ui.c +--- a/src/matchbox-keyboard-ui.c Sun Apr 08 23:28:43 2007 +0000 ++++ b/src/matchbox-keyboard-ui.c Sun Apr 08 23:56:09 2007 +0000 +@@ -505,6 +505,15 @@ mb_kbd_ui_allocate_ui_layout(MBKeyboardU + } + + *width = max_row_width; ++} ++ ++void ++mb_kbd_ui_recalc_ui_layout(MBKeyboardUI *ui) ++{ ++ mb_kbd_ui_allocate_ui_layout(ui, ++ &ui->base_alloc_width, &ui->base_alloc_height); ++ ++ mb_kbd_ui_resize(ui, ui->xwin_width, ui->xwin_height); + } + + void +diff -r 96305d94eb31 -r ff9cf1fd8177 src/matchbox-keyboard.c +--- a/src/matchbox-keyboard.c Sun Apr 08 23:28:43 2007 +0000 ++++ b/src/matchbox-keyboard.c Sun Apr 08 23:56:09 2007 +0000 +@@ -85,6 +85,7 @@ mb_kbd_new (int argc, char **argv) + + kb->selected_layout + = (MBKeyboardLayout *)util_list_get_nth_data(kb->layouts, 0); ++ kb->selected_layout_no = 0; + + if (want_embedding) + mb_kbd_ui_set_embeded( kb->ui, True ); +diff -r 96305d94eb31 -r ff9cf1fd8177 src/matchbox-keyboard.h +--- a/src/matchbox-keyboard.h Sun Apr 08 23:28:43 2007 +0000 ++++ b/src/matchbox-keyboard.h Sun Apr 08 23:56:09 2007 +0000 +@@ -153,6 +153,7 @@ + char *config_file; + List *layouts; + MBKeyboardLayout *selected_layout; ++ int selected_layout_no; + int key_border, key_pad, key_margin; + int row_spacing, col_spacing; + boolean extended; /* are we showing extended keys ? */ +@@ -179,6 +180,9 @@ + int + mb_kbd_ui_init(MBKeyboard *kbd); + ++void ++mb_kbd_ui_recalc_ui_layout(MBKeyboardUI *ui); ++ + int + mb_kbd_ui_realize(MBKeyboardUI *ui); + diff --git a/recipes/matchbox-keyboard/files/3-Changes-to-improve-layout-rendering--especially-after-adding-support-for.patch b/recipes/matchbox-keyboard/files/3-Changes-to-improve-layout-rendering--especially-after-adding-support-for.patch new file mode 100644 index 0000000000..0a319e759e --- /dev/null +++ b/recipes/matchbox-keyboard/files/3-Changes-to-improve-layout-rendering--especially-after-adding-support-for.patch @@ -0,0 +1,93 @@ +# HG changeset patch +# User pfalcon@localhost +# Date 1176077194 0 +# Node ID b010d54a6c5020a68855e60e5a423ee3c18ed700 +# Parent ff9cf1fd8177dded04b9fc81ba630203848fc3ca +Changes to improve layout rendering, especially after adding support for +multiple layouts: +1. Add --hfactor option which presets keyboard to the specified percentage +of screen height. This is required for multiple layouts, as otherwise +height is calculated on specific layout, but in such a way that it is +affected by previous layout, which leads to rendering artifacts. +2. Also st default font height to 6, after all. + +diff -r ff9cf1fd8177 -r b010d54a6c50 src/matchbox-keyboard-ui.c +--- a/src/matchbox-keyboard-ui.c Sun Apr 08 23:56:09 2007 +0000 ++++ b/src/matchbox-keyboard-ui.c Mon Apr 09 00:06:34 2007 +0000 +@@ -744,9 +744,15 @@ mb_kbd_ui_resources_create(MBKeyboardUI + */ + 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, +- ( desk_width * ui->xwin_height ) / ui->xwin_width); ++ win_height); + } + + wm_struct_vals[2] = desk_y + desk_height - ui->xwin_height; +@@ -818,8 +824,11 @@ mb_kbd_ui_resize(MBKeyboardUI *ui, int w + width_diff = width - ui->base_alloc_width; + height_diff = height - ui->base_alloc_height; + ++/* It's better to have some "clipped" keys, than busted layout. */ ++#if 0 + if (width_diff < 0 || height_diff < 0) + return; /* dont go smaller than our int request - get clipped */ ++#endif + + layout = mb_kbd_get_selected_layout(ui->kbd); + row_item = mb_kbd_layout_rows(layout); +--- a/src/matchbox-keyboard.c 2007-08-17 17:09:05.240878162 +0300 ++++ b/src/matchbox-keyboard.c 2007-08-17 17:11:36.749512174 +0300 +@@ -27,7 +27,9 @@ + " -xid,--xid Print window ID to stdout ( for embedding )\n" + " -d,--daemon Run in 'daemon' mode (for remote control)\n" + " -o,--orientation <portrait|landscape>\n" +- " Use to limit visibility with screen orientation \n"); ++ " Use to limit visibility with screen orientation \n" ++ " -h,--hfactor <percent>\n" ++ " Fix keyboard window size in percentage of desktop height\n"); + fprintf(stderr, "\nmatchbox-keyboard %s \nCopyright (C) 2007 OpenedHand Ltd.\n", VERSION); + + exit(-1); +@@ -52,7 +53,7 @@ + kb->row_spacing = 5; + + kb->font_family = strdup("sans"); +- kb->font_pt_size = 5; ++ kb->font_pt_size = 6; + kb->font_variant = strdup("bold"); + + for (i = 1; i < argc; i++) +@@ -63,6 +64,14 @@ + continue; + } + ++ if (streq ("-h", argv[i]) || streq ("--hfactor", argv[i])) ++ { ++ if (i + 1 < argc) { ++ kb->hfactor = atoi(argv[i + 1]); ++ } ++ continue; ++ } ++ + if (streq ("-d", argv[i]) || streq ("--daemon", argv[i])) + { + want_daemon = True; +diff -r ff9cf1fd8177 -r b010d54a6c50 src/matchbox-keyboard.h +--- a/src/matchbox-keyboard.h Sun Apr 08 23:56:09 2007 +0000 ++++ b/src/matchbox-keyboard.h Mon Apr 09 00:06:34 2007 +0000 +@@ -150,6 +150,7 @@ + char *font_family; + int font_pt_size; + char *font_variant; ++ int hfactor; + char *config_file; + List *layouts; + MBKeyboardLayout *selected_layout; diff --git a/recipes/matchbox-keyboard/files/4-Add-rendering-debug-logging.patch b/recipes/matchbox-keyboard/files/4-Add-rendering-debug-logging.patch new file mode 100644 index 0000000000..509cd09404 --- /dev/null +++ b/recipes/matchbox-keyboard/files/4-Add-rendering-debug-logging.patch @@ -0,0 +1,65 @@ +# HG changeset patch +# User pfalcon@localhost +# Date 1176077287 0 +# Node ID 38c3459f2e1a1c8dc7aacb486f201bdda638c7f2 +# Parent b010d54a6c5020a68855e60e5a423ee3c18ed700 +Add rendering debug logging. + +diff -r b010d54a6c50 -r 38c3459f2e1a src/matchbox-keyboard-ui.c +--- a/src/matchbox-keyboard-ui.c Mon Apr 09 00:06:34 2007 +0000 ++++ b/src/matchbox-keyboard-ui.c Mon Apr 09 00:08:07 2007 +0000 +@@ -357,6 +357,8 @@ mb_kbd_ui_allocate_ui_layout(MBKeyboardU + /* Do an initial run to figure out a 'base' size for single glyph keys */ + mb_kdb_ui_unit_key_size(ui, &ui->key_uwidth, &ui->key_uheight); + ++ DBG("unit_key_size: %dx%d", ui->key_uwidth, ui->key_uheight); ++ + row_item = mb_kbd_layout_rows(layout); + + row_y = mb_kbd_row_spacing(ui->kbd); +@@ -415,6 +417,8 @@ mb_kbd_ui_allocate_ui_layout(MBKeyboardU + + if (key_x > max_row_width) /* key_x now represents row width */ + max_row_width = key_x; ++ ++ DBG("Row width: %d", key_x); + + mb_kbd_row_set_y(row, row_y); + +@@ -617,6 +621,8 @@ mb_kbd_ui_resources_create(MBKeyboardUI + boolean have_matchbox_wm = False; + boolean have_ewmh_wm = False; + ++ DBG("mb_kbd_ui_resources_create: %dx%d", ui->xwin_width, ui->xwin_height); ++ + /* + atom_wm_protocols = { + XInternAtom(ui->xdpy, "WM_DELETE_WINDOW",False), +@@ -821,6 +827,8 @@ mb_kbd_ui_resize(MBKeyboardUI *ui, int w + + MARK(); + ++ 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; + height_diff = height - ui->base_alloc_height; + +@@ -1178,6 +1178,7 @@ + } + break; + case ConfigureNotify: ++ DBG("ConfigureNotify %i,%i", xev.xconfigure.width, xev.xconfigure.height); + 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/5-Add-support-for-loading-multiple-independent-layouts.patch b/recipes/matchbox-keyboard/files/5-Add-support-for-loading-multiple-independent-layouts.patch new file mode 100644 index 0000000000..1480591930 --- /dev/null +++ b/recipes/matchbox-keyboard/files/5-Add-support-for-loading-multiple-independent-layouts.patch @@ -0,0 +1,197 @@ +# HG changeset patch +# User pfalcon@localhost +# Date 1181567228 0 +# Node ID 869314ae90f46a8c2d34080005d4079cb0d0fcf4 +# Parent 38c3459f2e1a1c8dc7aacb486f201bdda638c7f2 +Add support for loading multiple independent layouts. +All layouts found in ~/.matchbox/keyboard.d/ are loaded, realistically +these will be symlinks to system-wide store. This directory has the highest +priority of all other layout selection mechanism (except for +$MB_KBD_CONFIG). + +diff -r 38c3459f2e1a -r 869314ae90f4 src/config-parser.c +--- a/src/config-parser.c Mon Apr 09 00:08:07 2007 +0000 ++++ b/src/config-parser.c Mon Jun 11 13:07:08 2007 +0000 +@@ -17,6 +17,7 @@ + * + */ + ++#include <dirent.h> + #include "matchbox-keyboard.h" + + /* +@@ -57,6 +58,9 @@ + + </keyboard> + */ ++ ++int mb_kbd_config_parse_file(MBKeyboard *kbd, char *path); ++static int mb_kbd_config_parse_data(MBKeyboard *kbd, char *data); + + struct _keysymlookup + { +@@ -170,12 +174,9 @@ config_str_to_modtype(const char* str) + } + + +-static char* +-config_load_file(MBKeyboard *kbd, char *variant_in) +-{ +- struct stat stat_info; +- FILE* fp; +- char *result; ++int ++mb_kbd_config_load(MBKeyboard *kbd, char *variant_in) ++{ + char *country = NULL; + char *variant = NULL; + char *lang = NULL; +@@ -195,7 +196,44 @@ config_load_file(MBKeyboard *kbd, char * + if (util_file_readable(path)) + goto load; + +- return NULL; ++ return 0; ++ } ++ ++ if (getenv("HOME")) ++ { ++ snprintf(path, 1024, "%s/.matchbox/keyboard.d", getenv("HOME")); ++ ++ DBG("checking %s\n", path); ++ ++ if (util_file_readable(path)) ++ { ++ DIR *dir = opendir(path); ++ struct dirent *dirent; ++ if (!dir) ++ { ++ perror("matchbox-keyboard"); ++ util_fatal_error("Cannot read keyboard.d.\n"); ++ } ++ errno = 0; ++ while ((dirent = readdir(dir))) ++ { ++ if (dirent->d_name[0] == '.') ++ continue; ++ snprintf(path, 1024, "%s/.matchbox/keyboard.d/%s", getenv("HOME"), dirent->d_name); ++ if (!mb_kbd_config_parse_file(kbd, path)) ++ { ++ util_fatal_error("Cannot read file in keyboard.d.\n"); ++ } ++ ++ } ++ if (errno) ++ { ++ perror("matchbox-keyboard"); ++ util_fatal_error("Error reading keyboard.d.\n"); ++ } ++ closedir(dir); ++ return 1; ++ } + } + + lang = getenv("MB_KBD_LANG"); +@@ -268,29 +306,11 @@ config_load_file(MBKeyboard *kbd, char * + DBG("checking %s\n", path); + + if (!util_file_readable(path)) +- return NULL; ++ return 0; + + load: + +- if (stat(path, &stat_info)) +- return NULL; +- +- if ((fp = fopen(path, "rb")) == NULL) +- return NULL; +- +- DBG("loading %s\n", path); +- +- kbd->config_file = strdup(path); +- +- result = malloc(stat_info.st_size + 1); +- +- n = fread(result, 1, stat_info.st_size, fp); +- +- if (n >= 0) result[n] = '\0'; +- +- fclose(fp); +- +- return result; ++ return mb_kbd_config_parse_file(kbd, path); + } + + static const char * +@@ -567,25 +587,48 @@ config_xml_start_cb(void *data, const ch + + + int +-mb_kbd_config_load(MBKeyboard *kbd, char *variant) +-{ +- char *data; ++mb_kbd_config_parse_file(MBKeyboard *kbd, char *path) ++{ ++ char *buffer; ++ struct stat stat_info; ++ FILE* fp; ++ int n; ++ ++ if (stat(path, &stat_info)) ++ return 0; ++ ++ if ((fp = fopen(path, "rb")) == NULL) ++ return 0; ++ ++ DBG("loading %s\n", path); ++ ++ kbd->config_file = strdup(path); ++ ++ buffer = malloc(stat_info.st_size + 1); ++ ++ n = fread(buffer, 1, stat_info.st_size, fp); ++ ++ if (n >= 0) buffer[n] = '\0'; ++ ++ fclose(fp); ++ ++ mb_kbd_config_parse_data(kbd, buffer); ++ ++ free(buffer); ++ ++ return 1; ++} ++ ++static int ++mb_kbd_config_parse_data(MBKeyboard *kbd, char *data) ++{ + XML_Parser p; + MBKeyboardConfigState *state; + +- if ((data = config_load_file(kbd, variant)) == NULL) +- util_fatal_error("Couldn't find a keyboard config file\n"); +- + p = XML_ParserCreate(NULL); + + if (!p) + util_fatal_error("Couldn't allocate memory for XML parser\n"); +- +- if (variant && !strstr(kbd->config_file, variant)) +- fprintf(stderr, +- "matchbox-keyboard: *Warning* Unable to locate variant: %s\n" +- " falling back to %s\n", +- variant, kbd->config_file); + + state = util_malloc0(sizeof(MBKeyboardConfigState)); + +@@ -607,6 +650,9 @@ mb_kbd_config_load(MBKeyboard *kbd, char + util_fatal_error("XML Parse failed.\n"); + } + ++ free(state); ++ XML_ParserFree(p); ++ + return 1; + } + diff --git a/recipes/matchbox-keyboard/files/6-Add-layout-switch-key-to-all-layouts.patch b/recipes/matchbox-keyboard/files/6-Add-layout-switch-key-to-all-layouts.patch new file mode 100644 index 0000000000..c2cf4d62dd --- /dev/null +++ b/recipes/matchbox-keyboard/files/6-Add-layout-switch-key-to-all-layouts.patch @@ -0,0 +1,111 @@ +# HG changeset patch +# User pfalcon@localhost +# Date 1181568553 0 +# Node ID edc3fd8303a394bccadde2f427ab25ebda4fcbc8 +# Parent 869314ae90f46a8c2d34080005d4079cb0d0fcf4 +Add layout switch key to all layouts. + +diff -r 869314ae90f4 -r edc3fd8303a3 layouts/keyboard-dvorak.xml +--- a/layouts/keyboard-dvorak.xml Mon Jun 11 13:07:08 2007 +0000 ++++ b/layouts/keyboard-dvorak.xml Mon Jun 11 13:29:13 2007 +0000 +@@ -271,6 +271,10 @@ Contributed by Leon Matthews http://www. + <!-- Bottom Row --> + <row> + <space width="500" extended="true"/> ++ <key> ++ <default display="[->]" action="modifier:layout"/> ++ </key> ++ + <key> + <default display="äëö" action="modifier:mod1"/> + </key> +diff -r 869314ae90f4 -r edc3fd8303a3 layouts/keyboard-extended.xml +--- a/layouts/keyboard-extended.xml Mon Jun 11 13:07:08 2007 +0000 ++++ b/layouts/keyboard-extended.xml Mon Jun 11 13:29:13 2007 +0000 +@@ -304,6 +304,10 @@ + </row> + <row> + <key> ++ <default display="[->]" action="modifier:layout"/> ++ </key> ++ ++ <key> + <default display="aeo" action="modifier:mod1"/> + </key> + +diff -r 869314ae90f4 -r edc3fd8303a3 layouts/keyboard-fi.xml +--- a/layouts/keyboard-fi.xml Mon Jun 11 13:07:08 2007 +0000 ++++ b/layouts/keyboard-fi.xml Mon Jun 11 13:29:13 2007 +0000 +@@ -329,6 +329,10 @@ + <space width="500" extended="true"/> + + ++ <key> ++ <default display="[->]" action="modifier:layout"/> ++ </key> ++ + <key fill="true"> + <default display="Ctrl" action="modifier:ctrl"/> + </key> +diff -r 869314ae90f4 -r edc3fd8303a3 layouts/keyboard-numpad.xml +--- a/layouts/keyboard-numpad.xml Mon Jun 11 13:07:08 2007 +0000 ++++ b/layouts/keyboard-numpad.xml Mon Jun 11 13:29:13 2007 +0000 +@@ -54,6 +54,13 @@ + </key> + </row> + ++ <row> ++ <key> ++ <default display="[->]" action="modifier:layout"/> ++ </key> ++ </row> ++ ++ + </layout> + + +diff -r 869314ae90f4 -r edc3fd8303a3 layouts/keyboard-ru.xml +--- a/layouts/keyboard-ru.xml Mon Jun 11 13:07:08 2007 +0000 ++++ b/layouts/keyboard-ru.xml Mon Jun 11 13:29:13 2007 +0000 +@@ -302,10 +302,10 @@ + <space width="500" extended="true"/> + + <key> ++ <default display="[->]" action="modifier:layout"/> ++ </key> ++ <key> + <default display="äëö" action="modifier:mod1"/> +- </key> +- <key> +- <default display="EN" action="modifier:mod2"/> + </key> + + <key fill="true"> +diff -r 869314ae90f4 -r edc3fd8303a3 layouts/keyboard-us.xml +--- a/layouts/keyboard-us.xml Mon Jun 11 13:07:08 2007 +0000 ++++ b/layouts/keyboard-us.xml Mon Jun 11 13:29:13 2007 +0000 +@@ -326,6 +326,10 @@ + <space width="500" extended="true"/> + + <key> ++ <default display="[->]" action="modifier:layout"/> ++ </key> ++ ++ <key> + <default display="äëö" action="modifier:mod1"/> + </key> + +diff -r 869314ae90f4 -r edc3fd8303a3 layouts/keyboard.xml +--- a/layouts/keyboard.xml Mon Jun 11 13:07:08 2007 +0000 ++++ b/layouts/keyboard.xml Mon Jun 11 13:29:13 2007 +0000 +@@ -324,6 +324,10 @@ + <space width="500" extended="true"/> + + <key> ++ <default display="[->]" action="modifier:layout"/> ++ </key> ++ ++ <key> + <default display="äëö" action="modifier:mod1"/> + </key> + diff --git a/recipes/matchbox-keyboard/files/80matchboxkeyboard b/recipes/matchbox-keyboard/files/80matchboxkeyboard new file mode 100644 index 0000000000..a30ddb01ad --- /dev/null +++ b/recipes/matchbox-keyboard/files/80matchboxkeyboard @@ -0,0 +1,20 @@ +#!/bin/sh + +CMD="" + +if [ "$DISPLAY_CAN_ROTATE" = "1" ]; then + if [ "$HAVE_KEYBOARD_PORTRAIT" = "1" -a "$HAVE_KEYBOARD_LANDSCAPE" = "0" ]; then + CMD="matchbox-keyboard -d -o landscape" + elif [ "$HAVE_KEYBOARD_LANDSCAPE" = "1" -a "$HAVE_KEYBOARD_PORTRAIT" = "0" ]; then + CMD="matchbox-keyboard -d -o portrait" + fi +else + CMD="matchbox-keyboard -d" +fi + + +# Delay to make sure the window manager is active + +if [ "$CMD" ]; then + (sleep 2 && $CMD) & +fi diff --git a/recipes/matchbox-keyboard/files/fic-gta01-font-size.patch b/recipes/matchbox-keyboard/files/fic-gta01-font-size.patch new file mode 100644 index 0000000000..c25aa74ca4 --- /dev/null +++ b/recipes/matchbox-keyboard/files/fic-gta01-font-size.patch @@ -0,0 +1,13 @@ +Index: matchbox-keyboard/src/matchbox-keyboard.c +=================================================================== +--- matchbox-keyboard.orig/src/matchbox-keyboard.c ++++ matchbox-keyboard/src/matchbox-keyboard.c +@@ -54,7 +54,7 @@ + kb->row_spacing = 5; + + kb->font_family = strdup("sans"); +- kb->font_pt_size = 6; ++ kb->font_pt_size = 3; + kb->font_variant = strdup("bold"); + + for (i = 1; i < argc; i++) diff --git a/recipes/matchbox-keyboard/files/matchbox-keyboard-applet.patch b/recipes/matchbox-keyboard/files/matchbox-keyboard-applet.patch new file mode 100644 index 0000000000..29dc9c0ab6 --- /dev/null +++ b/recipes/matchbox-keyboard/files/matchbox-keyboard-applet.patch @@ -0,0 +1,92 @@ +Index: applet/applet.c +=================================================================== +--- applet/applet.c (revision 1633) ++++ applet/applet.c (working copy) +@@ -1,30 +1,76 @@ ++/* ++ * keyboard - Tray applet to toggle matchbox-keyboard's gtk-im ++ * ++ * Copyright 2007, Openedhand Ltd. ++ * Author Stefan Schmidt <stefan@openmoko.org> ++ * ++ * 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 ++ * the Free Software Foundation; version 2 of the license. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ */ ++ + #include <gtk/gtk.h> ++#include <gtk/gtkeventbox.h> + #include <matchbox-panel/mb-panel.h> + #include <matchbox-panel/mb-panel-scaling-image.h> + #include <gtk-im/im-protocol.h> + ++typedef struct { ++ GtkWidget *event_box; ++ gboolean show; ++} KeyboardApplet; ++ + static void +-on_toggled (GtkToggleButton *button) ++on_toggled (GtkWidget *event_box, GdkEventButton *event, KeyboardApplet *applet) + { +- protocol_send_event (gtk_toggle_button_get_active (button) ? +- INVOKE_KBD_SHOW : INVOKE_KBD_HIDE); ++ ++ protocol_send_event (applet->show ? INVOKE_KBD_SHOW : INVOKE_KBD_HIDE); ++ ++ if (applet->show) ++ applet->show = FALSE; ++ else ++ applet->show = TRUE; + } + ++static void ++keyboard_applet_free (KeyboardApplet *applet) ++{ ++ g_slice_free (KeyboardApplet, applet); ++} ++ + G_MODULE_EXPORT GtkWidget * + mb_panel_applet_create (const char *id, GtkOrientation orientation) + { +- GtkWidget *button, *image; ++ KeyboardApplet *applet; ++ MBPanelScalingImage *image; ++ //GtkImage *image; + +- button = gtk_toggle_button_new (); +- gtk_widget_set_name (button, "MatchboxPanelKeyboard"); +- gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE); ++ /* Create applet data structure */ ++ applet = g_slice_new (KeyboardApplet); + ++ applet->event_box = gtk_event_box_new (); ++ gtk_event_box_set_visible_window (applet->event_box, FALSE); ++ ++ gtk_widget_set_name (applet->event_box, "MatchboxPanelKeyboard"); ++ + image = mb_panel_scaling_image_new (orientation, "matchbox-keyboard"); +- gtk_container_add (GTK_CONTAINER (button), image); + +- g_signal_connect (button, "toggled", G_CALLBACK (on_toggled), NULL); ++ gtk_container_add (GTK_CONTAINER (applet->event_box), image); + +- gtk_widget_show_all (button); ++ g_object_weak_ref (G_OBJECT (applet->event_box), ++ (GWeakNotify) keyboard_applet_free, applet); + +- return button; ++ /* Toggle the on release event */ ++ g_signal_connect (applet->event_box, "button-release-event", ++ G_CALLBACK (on_toggled), applet); ++ ++ gtk_widget_show_all (applet->event_box); ++ ++ return applet->event_box; + } diff --git a/recipes/matchbox-keyboard/files/matchbox-keyboard-hide-delay.patch b/recipes/matchbox-keyboard/files/matchbox-keyboard-hide-delay.patch new file mode 100644 index 0000000000..c8cb76d99e --- /dev/null +++ b/recipes/matchbox-keyboard/files/matchbox-keyboard-hide-delay.patch @@ -0,0 +1,99 @@ +Index: matchbox-keyboard/src/matchbox-keyboard.h +=================================================================== +--- matchbox-keyboard/src/matchbox-keyboard.h (revision 1669) ++++ matchbox-keyboard/src/matchbox-keyboard.h (working copy) +@@ -285,7 +285,7 @@ + void + mb_kbd_remote_init (MBKeyboardUI *ui); + +-void ++int + mb_kbd_remote_process_xevents (MBKeyboardUI *ui, XEvent *xevent); + + /**** Keyboard ****/ +Index: matchbox-keyboard/src/matchbox-keyboard-ui.c +=================================================================== +--- matchbox-keyboard/src/matchbox-keyboard-ui.c (revision 1669) ++++ matchbox-keyboard/src/matchbox-keyboard-ui.c (working copy) +@@ -1096,6 +1096,8 @@ + /* Key repeat - values for standard xorg install ( xset q) */ + int repeat_delay = 100 * 10000; + int repeat_rate = 30 * 1000; ++ int hide_delay = 100 * 1000; ++ int to_hide = 0; + + int press_x = 0, press_y = 0; + +@@ -1182,11 +1184,42 @@ + mb_kbd_xembed_process_xevents (ui, &xev); + + if (ui->is_daemon) +- mb_kbd_remote_process_xevents (ui, &xev); +- ++ { ++ switch (mb_kbd_remote_process_xevents (ui, &xev)) ++ { ++ case 0: ++ if (to_hide == 1) { ++ mb_kbd_ui_hide(ui); ++ } ++ tvt.tv_usec = hide_delay; ++ to_hide = 1; ++ break; ++ case 1: ++ mb_kbd_ui_show(ui); ++ tvt.tv_usec = repeat_delay; ++ to_hide = 0; ++ break; ++ default: ++ if (to_hide == 1) { ++ mb_kbd_ui_hide(ui); ++ tvt.tv_usec = repeat_delay; ++ to_hide = 0; ++ } ++ break; ++ } ++ } + } + else + { ++ /* Hide timed out */ ++ if (to_hide == 1) ++ { ++ DBG("Hide timed out, calling mb_kbd_ui_hide"); ++ mb_kbd_ui_hide(ui); ++ tvt.tv_usec = repeat_delay; ++ to_hide = 0; ++ } ++ + /* Keyrepeat */ + if (mb_kbd_get_held_key(ui->kbd) != NULL) + { +Index: matchbox-keyboard/src/matchbox-keyboard-remote.c +=================================================================== +--- matchbox-keyboard/src/matchbox-keyboard-remote.c (revision 1669) ++++ matchbox-keyboard/src/matchbox-keyboard-remote.c (working copy) +@@ -28,7 +28,7 @@ + "_MB_IM_INVOKER_COMMAND", False); + } + +-void ++int + mb_kbd_remote_process_xevents (MBKeyboardUI *ui, XEvent *xevent) + { + DBG("got a message\n"); +@@ -42,9 +42,12 @@ + DBG("got a message of type _MB_IM_INVOKER_COMMAND, val %i\n", + xevent->xclient.data.l[0]); + if (xevent->xclient.data.l[0] == 1) +- mb_kbd_ui_show (ui); ++ { ++ return 1; ++ } + else +- mb_kbd_ui_hide (ui); ++ return 0; + } + } ++ return -1; + } diff --git a/recipes/matchbox-keyboard/files/smallscreen-fontsize.patch b/recipes/matchbox-keyboard/files/smallscreen-fontsize.patch new file mode 100644 index 0000000000..9a5f7a32a1 --- /dev/null +++ b/recipes/matchbox-keyboard/files/smallscreen-fontsize.patch @@ -0,0 +1,22 @@ +--- matchbox-keyboard-0.1/src/matchbox-keyboard.c.orig 2006-11-04 00:41:52.000000000 +0100 ++++ matchbox-keyboard-0.1/src/matchbox-keyboard.c 2006-11-04 00:29:25.000000000 +0100 +@@ -77,7 +77,7 @@ + kb->key_pad = 0; + kb->col_spacing = 0; + kb->row_spacing = 0; +- kb->font_pt_size = 8; ++ kb->font_pt_size = 5; + } + + if (!mb_kbd_config_load(kb, variant)) +--- matchbox-keyboard-0.1/src/matchbox-keyboard-ui.c.org 2006-07-14 00:50:25.000000000 +0000 ++++ matchbox-keyboard-0.1/src/matchbox-keyboard-ui.c 2007-02-09 17:38:19.000000000 +0000 +@@ -291,7 +291,7 @@ + /* FIXME: hack for small displays */ + if (mb_kbd_ui_display_height(ui) <= 320) + { +- *height += 4; ++ *height += 1; + } + + } diff --git a/recipes/matchbox-keyboard/matchbox-keyboard-inputmethod_svn.bb b/recipes/matchbox-keyboard/matchbox-keyboard-inputmethod_svn.bb new file mode 100644 index 0000000000..03123d9b8b --- /dev/null +++ b/recipes/matchbox-keyboard/matchbox-keyboard-inputmethod_svn.bb @@ -0,0 +1,62 @@ +DESCRIPTION = "Matchbox virtual keyboard for X11" +LICENSE = "GPL" +DEPENDS = "libfakekey expat libxft gtk+ matchbox-panel-2" +RCONFLICTS_${PN} = "matchbox-keyboard" +RPROVIDES_${PN} = "matchbox-keyboard" +SECTION = "x11" +PV = "0.0+svnr${SRCREV}" +PR = "r10" + +SRC_URI = "svn://svn.o-hand.com/repos/matchbox/trunk;module=matchbox-keyboard;proto=http \ + file://smallscreen-fontsize.patch;patch=1 \ + file://2-Add-new-modifier--layout--Used-to-cycle-thru-all-available-layouts.patch;patch=1 \ + file://3-Changes-to-improve-layout-rendering--especially-after-adding-support-for.patch;patch=1 \ + 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://80matchboxkeyboard" + +SRC_URI_append_om-gta01 = " file://fic-gta01-font-size.patch;patch=1" +SRC_URI_append_om-gta02 = " file://fic-gta01-font-size.patch;patch=1" + +S = "${WORKDIR}/matchbox-keyboard" + +inherit autotools pkgconfig gettext + +EXTRA_OECONF = "--disable-cairo --enable-gtk-im --enable-applet" + +PACKAGES += "matchbox-keyboard-im matchbox-keyboard-im-dbg \ + matchbox-keyboard-applet matchbox-keyboard-applet-dbg" + +FILES_${PN} = "${bindir}/* \ + ${sysconfdir} \ + ${datadir}/applications \ + ${datadir}/pixmaps \ + ${datadir}/matchbox-keyboard" + +FILES_matchbox-keyboard-im = "${libdir}/gtk-2.0/*/immodules/*.so" +FILES_matchbox-keyboard-im-dbg += "${libdir}/gtk-2.0/*/immodules/.debug" + +FILES_matchbox-keyboard-applet = "${libdir}/matchbox-panel/*.so" +FILES_matchbox-keyboard-applet-dbg += "${libdir}/matchbox-panel/.debug" + +do_install_append () { + install -d ${D}/${sysconfdir}/X11/Xsession.d/ + install -m 755 ${WORKDIR}/80matchboxkeyboard ${D}/${sysconfdir}/X11/Xsession.d/ +} + +pkg_postinst_matchbox-keyboard-im () { +if [ "x$D" != "x" ]; then + exit 1 +fi + +gtk-query-immodules-2.0 > /etc/gtk-2.0/gtk.immodules +} + +pkg_postrm_matchbox-keyboard-im () { +if [ "x$D" != "x" ]; then + exit 1 +fi + +gtk-query-immodules-2.0 > /etc/gtk-2.0/gtk.immodules +} diff --git a/recipes/matchbox-keyboard/matchbox-keyboard_svn.bb b/recipes/matchbox-keyboard/matchbox-keyboard_svn.bb new file mode 100644 index 0000000000..96a621fe75 --- /dev/null +++ b/recipes/matchbox-keyboard/matchbox-keyboard_svn.bb @@ -0,0 +1,30 @@ +DESCRIPTION = "Matchbox virtual keyboard for X11" +LICENSE = "GPL" +DEPENDS = "libfakekey expat libxft" +RCONFLICTS = matchbox-keyboard-inputmethod +RPROVIDES_${PN} = matchbox-keyboard-inputmethod +SECTION = "x11" +PV = "0.0+svnr${SRCREV}" +PR ="r7" + +SRC_URI = "svn://svn.o-hand.com/repos/matchbox/trunk;module=${PN};proto=http \ + file://smallscreen-fontsize.patch;patch=1 \ + file://2-Add-new-modifier--layout--Used-to-cycle-thru-all-available-layouts.patch;patch=1 \ + file://3-Changes-to-improve-layout-rendering--especially-after-adding-support-for.patch;patch=1 \ + 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 \ + " + + +S = "${WORKDIR}/${PN}" + +inherit autotools pkgconfig gettext + +EXTRA_OECONF = "--disable-cairo" + +FILES_${PN} = "${bindir}/* \ + ${datadir}/applications \ + ${datadir}/pixmaps \ + ${datadir}/matchbox-keyboard" + diff --git a/recipes/matchbox-keyboard/mboxkbd-layouts-gui/auto-mkdir.patch b/recipes/matchbox-keyboard/mboxkbd-layouts-gui/auto-mkdir.patch new file mode 100644 index 0000000000..82f6cb50b9 --- /dev/null +++ b/recipes/matchbox-keyboard/mboxkbd-layouts-gui/auto-mkdir.patch @@ -0,0 +1,16 @@ +diff -r cccb513c808c src/interface.c +--- a/src/interface.c Wed Nov 28 01:22:54 2007 +0200 ++++ b/src/interface.c Wed Nov 28 01:43:12 2007 +0200 +@@ -93,8 +93,12 @@ static void fill_user_list(GtkListStore + strcpy(linkpath, home_dir); + strcat(linkpath, "/"); + strcat(linkpath, USR_LAYOUT_SUFFIX); ++ if (access(linkpath, X_OK)) { ++ mkdir(linkpath, 0711); ++ } + dir = opendir(linkpath); + if(!dir) { ++ fprintf(stderr, "Cannot read %s directory: ", linkpath); + perror("opendir"); + exit(1); + } diff --git a/recipes/matchbox-keyboard/mboxkbd-layouts-gui/mboxkbd-layouts-gui.png b/recipes/matchbox-keyboard/mboxkbd-layouts-gui/mboxkbd-layouts-gui.png Binary files differnew file mode 100644 index 0000000000..d08be372ac --- /dev/null +++ b/recipes/matchbox-keyboard/mboxkbd-layouts-gui/mboxkbd-layouts-gui.png diff --git a/recipes/matchbox-keyboard/mboxkbd-layouts-gui/sanitize-desktop-file.patch b/recipes/matchbox-keyboard/mboxkbd-layouts-gui/sanitize-desktop-file.patch new file mode 100644 index 0000000000..095a8d337a --- /dev/null +++ b/recipes/matchbox-keyboard/mboxkbd-layouts-gui/sanitize-desktop-file.patch @@ -0,0 +1,18 @@ +diff -r a6959d06b0fb mk-layouts-gui.desktop +--- a/mk-layouts-gui.desktop Wed Nov 28 02:07:06 2007 +0200 ++++ b/mk-layouts-gui.desktop Wed Nov 28 02:08:49 2007 +0200 +@@ -1,9 +1,9 @@ + [Desktop Entry] + Name=MK Layout Manager + Comment=Manage matchbox-keyboard layouts +-Exec=mk-layouts-gui ++Exec=mboxkbd-layouts-gui + Type=Application +-Icon=mk-layouts-gui.png +-Categories=Application;SystemSettings;MB +-StartupNotify=True +-SingleInstance=True ++Icon=mboxkbd-layouts-gui ++Categories=Application;SystemSettings;MB; ++StartupNotify=true ++SingleInstance=true diff --git a/recipes/matchbox-keyboard/mboxkbd-layouts-gui_git.bb b/recipes/matchbox-keyboard/mboxkbd-layouts-gui_git.bb new file mode 100644 index 0000000000..6a466a1e9a --- /dev/null +++ b/recipes/matchbox-keyboard/mboxkbd-layouts-gui_git.bb @@ -0,0 +1,23 @@ +DESCRIPTION = "matchbox-keyboard layouts control application" +AUTHOR = "Sergey Lapin" +SECTION = "x11" +LICENSE = "GPL" +DEPENDS = "gtk+" +PR = "r5" + +PV = "0.0+git5b42aeff36d930dc3a9b75eedc74dacfec45f43f" + +SRC_URI = "http://linux-h4000.sourceforge.net/mirror/mk-layouts-gui.git_5b42aeff36d930dc3a9b75eedc74dacfec45f43f.tar.gz \ +#git://ossfans.org/home/slapin/git/mk-layouts-gui.git;protocol=git;tag=5b42aeff36d930dc3a9b75eedc74dacfec45f43f \ + file://auto-mkdir.patch;patch=1 \ + file://sanitize-desktop-file.patch;patch=1 \ + file://mboxkbd-layouts-gui.png" + +S = "${WORKDIR}/git" + +inherit autotools + +do_install_append() { + install -d ${D}${datadir}/pixmaps + install -m 0644 ${WORKDIR}/mboxkbd-layouts-gui.png ${D}${datadir}/pixmaps/ +} |