keytouch-editor-3.2.0-beta/0000755000175000017500000000000010767267613015135 5ustar marvinmarvinkeytouch-editor-3.2.0-beta/src/0000755000175000017500000000000010767267544015727 5ustar marvinmarvinkeytouch-editor-3.2.0-beta/src/Makefile.am0000640000175000017500000000146310662077216017750 0ustar marvinmarvin## Process this file with automake to produce Makefile.in INCLUDES = \ -I. -I../mxml/\ -DPACKAGE_DATA_DIR=\""$(datadir)"\" \ -DPACKAGE_LOCALE_DIR=\""$(prefix)/$(DATADIRNAME)/locale"\" \ -I../string_to_keycode \ @PACKAGE_CFLAGS@ bin_PROGRAMS = keytouch-editor-bin AM_CFLAGS=@CFLAGS@ -Wall keytouch_editor_bin_SOURCES = \ main.c keytouch-editor.h \ support.c support.h \ interface.c interface.h \ callbacks.c callbacks.h \ memory.c \ set_data.c set_data.h \ error.c \ evdev.c evdev.h \ get_scancode.c \ key_list.c \ keycodes.c \ plugins.c \ config.c \ email.c email.h \ default_key_settings.c \ check_syntax.c check_syntax.h \ acpi.c acpi.h \ ud_socket.c ud_socket.h \ gui.h keytouch_editor_bin_LDADD = ../mxml/libmxml.a ../string_to_keycode/string_to_keycode.o @PACKAGE_LIBS@ $(INTLLIBS) keytouch-editor-3.2.0-beta/src/support.h0000640000175000017500000000372210662075001017567 0ustar marvinmarvin/* * DO NOT EDIT THIS FILE - it is generated by Glade. */ #ifdef HAVE_CONFIG_H # include #endif #include /* * Standard gettext macros. */ #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (PACKAGE, String) # define Q_(String) g_strip_context ((String), gettext (String)) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define Q_(String) g_strip_context ((String), (String)) # define N_(String) (String) #endif /* * Public Functions. */ /* * This function returns a widget in a component created by Glade. * Call it with the toplevel widget in the component (i.e. a window/dialog), * or alternatively any widget in the component, and the name of the widget * you want returned. */ GtkWidget* lookup_widget (GtkWidget *widget, const gchar *widget_name); /* Use this function to set the directory containing installed pixmaps. */ void add_pixmap_directory (const gchar *directory); /* * Private Functions. */ /* This is used to create the pixmaps used in the interface. */ GtkWidget* create_pixmap (GtkWidget *widget, const gchar *filename); /* This is used to create the pixbufs used in the interface. */ GdkPixbuf* create_pixbuf (const gchar *filename); /* This is used to set ATK action descriptions. */ void glade_set_atk_action_description (AtkAction *action, const gchar *action_name, const gchar *description); keytouch-editor-3.2.0-beta/src/support.c0000640000175000017500000000712710662075001017565 0ustar marvinmarvin/* * DO NOT EDIT THIS FILE - it is generated by Glade. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include #include #include #include "support.h" GtkWidget* lookup_widget (GtkWidget *widget, const gchar *widget_name) { GtkWidget *parent, *found_widget; for (;;) { if (GTK_IS_MENU (widget)) parent = gtk_menu_get_attach_widget (GTK_MENU (widget)); else parent = widget->parent; if (!parent) parent = (GtkWidget*) g_object_get_data (G_OBJECT (widget), "GladeParentKey"); if (parent == NULL) break; widget = parent; } found_widget = (GtkWidget*) g_object_get_data (G_OBJECT (widget), widget_name); if (!found_widget) g_warning ("Widget not found: %s", widget_name); return found_widget; } static GList *pixmaps_directories = NULL; /* Use this function to set the directory containing installed pixmaps. */ void add_pixmap_directory (const gchar *directory) { pixmaps_directories = g_list_prepend (pixmaps_directories, g_strdup (directory)); } /* This is an internally used function to find pixmap files. */ static gchar* find_pixmap_file (const gchar *filename) { GList *elem; /* We step through each of the pixmaps directory to find it. */ elem = pixmaps_directories; while (elem) { gchar *pathname = g_strdup_printf ("%s%s%s", (gchar*)elem->data, G_DIR_SEPARATOR_S, filename); if (g_file_test (pathname, G_FILE_TEST_EXISTS)) return pathname; g_free (pathname); elem = elem->next; } return NULL; } /* This is an internally used function to create pixmaps. */ GtkWidget* create_pixmap (GtkWidget *widget, const gchar *filename) { gchar *pathname = NULL; GtkWidget *pixmap; if (!filename || !filename[0]) return gtk_image_new (); pathname = find_pixmap_file (filename); if (!pathname) { g_warning (_("Couldn't find pixmap file: %s"), filename); return gtk_image_new (); } pixmap = gtk_image_new_from_file (pathname); g_free (pathname); return pixmap; } /* This is an internally used function to create pixmaps. */ GdkPixbuf* create_pixbuf (const gchar *filename) { gchar *pathname = NULL; GdkPixbuf *pixbuf; GError *error = NULL; if (!filename || !filename[0]) return NULL; pathname = find_pixmap_file (filename); if (!pathname) { g_warning (_("Couldn't find pixmap file: %s"), filename); return NULL; } pixbuf = gdk_pixbuf_new_from_file (pathname, &error); if (!pixbuf) { fprintf (stderr, "Failed to load pixbuf file: %s: %s\n", pathname, error->message); g_error_free (error); } g_free (pathname); return pixbuf; } /* This is used to set ATK action descriptions. */ void glade_set_atk_action_description (AtkAction *action, const gchar *action_name, const gchar *description) { gint n_actions, i; n_actions = atk_action_get_n_actions (action); for (i = 0; i < n_actions; i++) { if (!strcmp (atk_action_get_name (action, i), action_name)) atk_action_set_description (action, i, description); } } keytouch-editor-3.2.0-beta/src/main.c0000640000175000017500000000712310767265600017005 0ustar marvinmarvin/*--------------------------------------------------------------------------------- Name : main.c Author : Marvin Raaijmakers Description : Initializes the program and creates the GUI Date of last change: 22-Aug-2007 History : 24-Jun-2007 Compiler warnings fixes Copyright (C) 2006-2007 Marvin Raaijmakers 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; either version 2 of the License, or any later version. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. You can contact me at: marvinr(at)users(dot)sf(dot)net (replace (at) by @ and (dot) by .) -----------------------------------------------------------------------------------*/ #ifdef HAVE_CONFIG_H # include #endif #include #include #include "interface.h" #include "support.h" #include #include #include #include #include MainWindowGUI_type main_window_gui = { main_window: NULL, scancode_event_descr_label: NULL, manufacturer_entry: NULL, model_entry: NULL, key_name_entry: NULL, scancode_entry: NULL, usbcode_entry: NULL, program_entry: NULL, plugin_function_comboentry: NULL, plugin_comboentry: NULL, program_radiobutton: NULL, special_action_radiobutton: NULL, key_treeview: NULL, keycode_combobox: NULL, usbcode_change_button: NULL }; EVDEV_LIST evdev_list; EVENT_DEVICE *current_evdev = NULL; Boolean use_acpi_dev, acpi_usable; KTKeyList key_list; KTKey *selected_key = NULL; /* The currently selected key */ Boolean file_modified; /* Indicates of the currently opened file was modified */ char *current_filename; /* The name of the currently opened file * (= NULL if no name is defined yet) */ int usb_vendor_id = 0, usb_product_id = 0; /* The hostnames of the SMTP servers that can be used for * sending the keyboard file: */ const char *smtp_hostnames[] = { "gmail-smtp-in.l.google.com", "alt2.gmail-smtp-in.l.google.com", "alt1.gmail-smtp-in.l.google.com", "gsmtp163.google.com", "gsmtp183.google.com", NULL}; int main (int argc, char *argv[]) { char *modprobe_error; #ifdef ENABLE_NLS bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); #endif gtk_set_locale (); gtk_init (&argc, &argv); add_pixmap_directory (PACKAGE_DATA_DIR "/" PACKAGE "/pixmaps"); KTSetErrorHandler (gui_error_handler); use_acpi_dev = FALSE; acpi_usable = check_acpi(); if (!read_evdev_list(&evdev_list, EVDEV_DIR)) { modprobe_error = load_evdev_module(); if (modprobe_error) { KTError (_("Error while loading the evdev module: \n%s"), modprobe_error); free (modprobe_error); return (EXIT_FAILURE); } if (!read_evdev_list(&evdev_list, EVDEV_DIR)) { KTError (_("No event devices are available in %s."), EVDEV_DIR); return (EXIT_FAILURE); } } KTKeyList_init (&key_list); file_modified = FALSE; show_selectkb_window (&evdev_list, acpi_usable); gtk_main (); return 0; } keytouch-editor-3.2.0-beta/src/interface.h0000644000175000017500000000047110662075001020015 0ustar marvinmarvin/* * DO NOT EDIT THIS FILE - it is generated by Glade. */ GtkWidget* create_selectkb_window (void); GtkWidget* create_main_window (void); GtkWidget* create_get_scancode_dialog (void); GtkWidget* create_new_key_name_dialog (void); GtkWidget* create_contact_dialog (void); GtkWidget* create_about_dialog (void); keytouch-editor-3.2.0-beta/src/interface.c0000644000175000017500000014730110767267375020043 0ustar marvinmarvin/* * DO NOT EDIT THIS FILE - it is generated by Glade. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include #include #include #include #include "callbacks.h" #include "interface.h" #include "support.h" #define GLADE_HOOKUP_OBJECT(component,widget,name) \ g_object_set_data_full (G_OBJECT (component), name, \ gtk_widget_ref (widget), (GDestroyNotify) gtk_widget_unref) #define GLADE_HOOKUP_OBJECT_NO_REF(component,widget,name) \ g_object_set_data (G_OBJECT (component), name, widget) GtkWidget* create_selectkb_window (void) { GtkWidget *selectkb_window; GdkPixbuf *selectkb_window_icon_pixbuf; GtkWidget *vbox1; GtkWidget *label6; GtkWidget *scrolledwindow1; GtkWidget *keyboard_treeview; GtkWidget *frame1; GtkWidget *alignment3; GtkWidget *selectkb_help_textview; GtkWidget *hbox3; GtkWidget *image3; GtkWidget *help_label; GtkWidget *hbuttonbox1; GtkWidget *selectkb_cancel_button; GtkWidget *selectkb_ok_button; selectkb_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_container_set_border_width (GTK_CONTAINER (selectkb_window), 10); gtk_window_set_title (GTK_WINDOW (selectkb_window), _("Select keyboard")); gtk_window_set_position (GTK_WINDOW (selectkb_window), GTK_WIN_POS_CENTER); gtk_window_set_modal (GTK_WINDOW (selectkb_window), TRUE); gtk_window_set_default_size (GTK_WINDOW (selectkb_window), 490, 430); selectkb_window_icon_pixbuf = create_pixbuf ("icon.png"); if (selectkb_window_icon_pixbuf) { gtk_window_set_icon (GTK_WINDOW (selectkb_window), selectkb_window_icon_pixbuf); gdk_pixbuf_unref (selectkb_window_icon_pixbuf); } vbox1 = gtk_vbox_new (FALSE, 7); gtk_widget_show (vbox1); gtk_container_add (GTK_CONTAINER (selectkb_window), vbox1); label6 = gtk_label_new (_("Please select your keyboard:")); gtk_widget_show (label6); gtk_box_pack_start (GTK_BOX (vbox1), label6, FALSE, FALSE, 0); scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (scrolledwindow1); gtk_box_pack_start (GTK_BOX (vbox1), scrolledwindow1, TRUE, TRUE, 0); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow1), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow1), GTK_SHADOW_IN); keyboard_treeview = gtk_tree_view_new (); gtk_widget_show (keyboard_treeview); gtk_container_add (GTK_CONTAINER (scrolledwindow1), keyboard_treeview); frame1 = gtk_frame_new (NULL); gtk_widget_show (frame1); gtk_box_pack_start (GTK_BOX (vbox1), frame1, FALSE, TRUE, 0); gtk_frame_set_shadow_type (GTK_FRAME (frame1), GTK_SHADOW_NONE); alignment3 = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment3); gtk_container_add (GTK_CONTAINER (frame1), alignment3); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment3), 0, 0, 12, 0); selectkb_help_textview = gtk_text_view_new (); gtk_widget_show (selectkb_help_textview); gtk_container_add (GTK_CONTAINER (alignment3), selectkb_help_textview); gtk_text_view_set_editable (GTK_TEXT_VIEW (selectkb_help_textview), FALSE); gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (selectkb_help_textview), GTK_WRAP_WORD); gtk_text_view_set_pixels_above_lines (GTK_TEXT_VIEW (selectkb_help_textview), 3); gtk_text_view_set_pixels_below_lines (GTK_TEXT_VIEW (selectkb_help_textview), 3); gtk_text_view_set_left_margin (GTK_TEXT_VIEW (selectkb_help_textview), 5); gtk_text_view_set_right_margin (GTK_TEXT_VIEW (selectkb_help_textview), 5); gtk_text_buffer_set_text (gtk_text_view_get_buffer (GTK_TEXT_VIEW (selectkb_help_textview)), _("Every input device has its own \"event device\". All event devices are listed above. You should select the event device of your keyboard.\nClick \"OK\" after selecting the keyboard and this program will test if you selected the right device.\nNote USB keyboards have two event devices. The first is for all \"normal\" keys and the second for the extra function keys. Choose the second device."), -1); hbox3 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox3); gtk_frame_set_label_widget (GTK_FRAME (frame1), hbox3); image3 = gtk_image_new_from_stock ("gtk-dialog-info", GTK_ICON_SIZE_BUTTON); gtk_widget_show (image3); gtk_box_pack_start (GTK_BOX (hbox3), image3, TRUE, TRUE, 0); help_label = gtk_label_new (_("Help information:")); gtk_widget_show (help_label); gtk_box_pack_start (GTK_BOX (hbox3), help_label, FALSE, FALSE, 0); gtk_label_set_use_markup (GTK_LABEL (help_label), TRUE); hbuttonbox1 = gtk_hbutton_box_new (); gtk_widget_show (hbuttonbox1); gtk_box_pack_start (GTK_BOX (vbox1), hbuttonbox1, FALSE, TRUE, 0); gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox1), GTK_BUTTONBOX_END); selectkb_cancel_button = gtk_button_new_from_stock ("gtk-cancel"); gtk_widget_show (selectkb_cancel_button); gtk_container_add (GTK_CONTAINER (hbuttonbox1), selectkb_cancel_button); GTK_WIDGET_SET_FLAGS (selectkb_cancel_button, GTK_CAN_DEFAULT); selectkb_ok_button = gtk_button_new_from_stock ("gtk-ok"); gtk_widget_show (selectkb_ok_button); gtk_container_add (GTK_CONTAINER (hbuttonbox1), selectkb_ok_button); GTK_WIDGET_SET_FLAGS (selectkb_ok_button, GTK_CAN_DEFAULT); g_signal_connect ((gpointer) selectkb_window, "delete_event", G_CALLBACK (on_selectkb_window_delete_event), NULL); g_signal_connect ((gpointer) selectkb_window, "show", G_CALLBACK (on_selectkb_window_show), NULL); g_signal_connect ((gpointer) selectkb_cancel_button, "clicked", G_CALLBACK (on_selectkb_cancel_button_clicked), NULL); g_signal_connect ((gpointer) selectkb_ok_button, "clicked", G_CALLBACK (on_selectkb_ok_button_clicked), NULL); /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (selectkb_window, selectkb_window, "selectkb_window"); GLADE_HOOKUP_OBJECT (selectkb_window, vbox1, "vbox1"); GLADE_HOOKUP_OBJECT (selectkb_window, label6, "label6"); GLADE_HOOKUP_OBJECT (selectkb_window, scrolledwindow1, "scrolledwindow1"); GLADE_HOOKUP_OBJECT (selectkb_window, keyboard_treeview, "keyboard_treeview"); GLADE_HOOKUP_OBJECT (selectkb_window, frame1, "frame1"); GLADE_HOOKUP_OBJECT (selectkb_window, alignment3, "alignment3"); GLADE_HOOKUP_OBJECT (selectkb_window, selectkb_help_textview, "selectkb_help_textview"); GLADE_HOOKUP_OBJECT (selectkb_window, hbox3, "hbox3"); GLADE_HOOKUP_OBJECT (selectkb_window, image3, "image3"); GLADE_HOOKUP_OBJECT (selectkb_window, help_label, "help_label"); GLADE_HOOKUP_OBJECT (selectkb_window, hbuttonbox1, "hbuttonbox1"); GLADE_HOOKUP_OBJECT (selectkb_window, selectkb_cancel_button, "selectkb_cancel_button"); GLADE_HOOKUP_OBJECT (selectkb_window, selectkb_ok_button, "selectkb_ok_button"); return selectkb_window; } GtkWidget* create_main_window (void) { GtkWidget *main_window; GdkPixbuf *main_window_icon_pixbuf; GtkWidget *vbox4; GtkWidget *menubar1; GtkWidget *menuitem4; GtkWidget *menuitem4_menu; GtkWidget *new1; GtkWidget *open1; GtkWidget *save1; GtkWidget *save_as1; GtkWidget *separator1; GtkWidget *quit1; GtkWidget *edit2; GtkWidget *edit2_menu; GtkWidget *change_keyboard_menuitem; GtkWidget *menuitem7; GtkWidget *menuitem7_menu; GtkWidget *about1; GtkWidget *vbox6; GtkWidget *frame2; GtkWidget *table6; GtkWidget *label27; GtkWidget *label28; GtkWidget *model_entry; GtkWidget *manufacturer_entry; GtkWidget *label16; GtkWidget *frame3; GtkWidget *hpaned1; GtkWidget *vbox5; GtkWidget *scrolledwindow2; GtkWidget *key_treeview; GtkWidget *hbuttonbox3; GtkWidget *remove_key_button; GtkWidget *new_key_button; GtkWidget *frame4; GtkWidget *table2; GtkWidget *label19; GtkWidget *scancode_event_descr_label; GtkWidget *key_name_entry; GtkWidget *hbox8; GtkWidget *scancode_entry; GtkWidget *scancode_change_button; GtkWidget *alignment8; GtkWidget *hbox9; GtkWidget *image8; GtkWidget *label23; GtkWidget *table4; GtkWidget *program_radiobutton; GSList *program_radiobutton_group = NULL; GtkWidget *program_entry; GtkWidget *frame5; GtkWidget *table5; GtkWidget *label25; GtkWidget *label26; GtkWidget *plugin_combo; GtkWidget *plugin_comboentry; GtkWidget *plugin_function_combo; GtkWidget *plugin_function_comboentry; GtkWidget *label24; GtkWidget *special_action_radiobutton; GtkWidget *label22; GtkWidget *label21; GtkWidget *keycode_combobox; GtkWidget *hbox11; GtkWidget *usbcode_entry; GtkWidget *usbcode_change_button; GtkWidget *alignment12; GtkWidget *hbox12; GtkWidget *image12; GtkWidget *label44; GtkWidget *usbcode_label; GtkWidget *label18; GtkWidget *label17; GtkAccelGroup *accel_group; GtkTooltips *tooltips; tooltips = gtk_tooltips_new (); accel_group = gtk_accel_group_new (); main_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (main_window), _("keyTouch-editor")); main_window_icon_pixbuf = create_pixbuf ("icon.png"); if (main_window_icon_pixbuf) { gtk_window_set_icon (GTK_WINDOW (main_window), main_window_icon_pixbuf); gdk_pixbuf_unref (main_window_icon_pixbuf); } vbox4 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox4); gtk_container_add (GTK_CONTAINER (main_window), vbox4); menubar1 = gtk_menu_bar_new (); gtk_widget_show (menubar1); gtk_box_pack_start (GTK_BOX (vbox4), menubar1, FALSE, FALSE, 0); menuitem4 = gtk_menu_item_new_with_mnemonic (_("_File")); gtk_widget_show (menuitem4); gtk_container_add (GTK_CONTAINER (menubar1), menuitem4); menuitem4_menu = gtk_menu_new (); gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem4), menuitem4_menu); new1 = gtk_image_menu_item_new_from_stock ("gtk-new", accel_group); gtk_widget_show (new1); gtk_container_add (GTK_CONTAINER (menuitem4_menu), new1); open1 = gtk_image_menu_item_new_from_stock ("gtk-open", accel_group); gtk_widget_show (open1); gtk_container_add (GTK_CONTAINER (menuitem4_menu), open1); save1 = gtk_image_menu_item_new_from_stock ("gtk-save", accel_group); gtk_widget_show (save1); gtk_container_add (GTK_CONTAINER (menuitem4_menu), save1); save_as1 = gtk_image_menu_item_new_from_stock ("gtk-save-as", accel_group); gtk_widget_show (save_as1); gtk_container_add (GTK_CONTAINER (menuitem4_menu), save_as1); separator1 = gtk_separator_menu_item_new (); gtk_widget_show (separator1); gtk_container_add (GTK_CONTAINER (menuitem4_menu), separator1); gtk_widget_set_sensitive (separator1, FALSE); quit1 = gtk_image_menu_item_new_from_stock ("gtk-quit", accel_group); gtk_widget_show (quit1); gtk_container_add (GTK_CONTAINER (menuitem4_menu), quit1); edit2 = gtk_menu_item_new_with_mnemonic (_("_Edit")); gtk_widget_show (edit2); gtk_container_add (GTK_CONTAINER (menubar1), edit2); edit2_menu = gtk_menu_new (); gtk_menu_item_set_submenu (GTK_MENU_ITEM (edit2), edit2_menu); change_keyboard_menuitem = gtk_menu_item_new_with_mnemonic (_("Change _keyboard...")); gtk_widget_show (change_keyboard_menuitem); gtk_container_add (GTK_CONTAINER (edit2_menu), change_keyboard_menuitem); gtk_widget_add_accelerator (change_keyboard_menuitem, "activate", accel_group, GDK_K, (GdkModifierType) GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); menuitem7 = gtk_menu_item_new_with_mnemonic (_("_Help")); gtk_widget_show (menuitem7); gtk_container_add (GTK_CONTAINER (menubar1), menuitem7); menuitem7_menu = gtk_menu_new (); gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem7), menuitem7_menu); about1 = gtk_menu_item_new_with_mnemonic (_("_About")); gtk_widget_show (about1); gtk_container_add (GTK_CONTAINER (menuitem7_menu), about1); vbox6 = gtk_vbox_new (FALSE, 6); gtk_widget_show (vbox6); gtk_box_pack_start (GTK_BOX (vbox4), vbox6, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (vbox6), 6); frame2 = gtk_frame_new (NULL); gtk_widget_show (frame2); gtk_box_pack_start (GTK_BOX (vbox6), frame2, FALSE, TRUE, 0); table6 = gtk_table_new (2, 2, FALSE); gtk_widget_show (table6); gtk_container_add (GTK_CONTAINER (frame2), table6); gtk_container_set_border_width (GTK_CONTAINER (table6), 7); gtk_table_set_row_spacings (GTK_TABLE (table6), 5); gtk_table_set_col_spacings (GTK_TABLE (table6), 5); label27 = gtk_label_new (_("Manufacturer:")); gtk_widget_show (label27); gtk_table_attach (GTK_TABLE (table6), label27, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label27), 0, 0.5); label28 = gtk_label_new (_("Model:")); gtk_widget_show (label28); gtk_table_attach (GTK_TABLE (table6), label28, 0, 1, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label28), 0, 0.5); model_entry = gtk_entry_new (); gtk_widget_show (model_entry); gtk_table_attach (GTK_TABLE (table6), model_entry, 1, 2, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); manufacturer_entry = gtk_entry_new (); gtk_widget_show (manufacturer_entry); gtk_table_attach (GTK_TABLE (table6), manufacturer_entry, 1, 2, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); label16 = gtk_label_new (_("Keyboard")); gtk_widget_show (label16); gtk_frame_set_label_widget (GTK_FRAME (frame2), label16); gtk_label_set_use_markup (GTK_LABEL (label16), TRUE); frame3 = gtk_frame_new (NULL); gtk_widget_show (frame3); gtk_box_pack_start (GTK_BOX (vbox6), frame3, TRUE, TRUE, 0); hpaned1 = gtk_hpaned_new (); gtk_widget_show (hpaned1); gtk_container_add (GTK_CONTAINER (frame3), hpaned1); gtk_container_set_border_width (GTK_CONTAINER (hpaned1), 7); gtk_paned_set_position (GTK_PANED (hpaned1), 1); vbox5 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox5); gtk_paned_pack1 (GTK_PANED (hpaned1), vbox5, FALSE, FALSE); scrolledwindow2 = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (scrolledwindow2); gtk_box_pack_start (GTK_BOX (vbox5), scrolledwindow2, TRUE, TRUE, 0); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow2), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow2), GTK_SHADOW_IN); key_treeview = gtk_tree_view_new (); gtk_widget_show (key_treeview); gtk_container_add (GTK_CONTAINER (scrolledwindow2), key_treeview); gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (key_treeview), FALSE); hbuttonbox3 = gtk_hbutton_box_new (); gtk_widget_show (hbuttonbox3); gtk_box_pack_start (GTK_BOX (vbox5), hbuttonbox3, FALSE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (hbuttonbox3), 3); gtk_box_set_spacing (GTK_BOX (hbuttonbox3), 3); remove_key_button = gtk_button_new_from_stock ("gtk-remove"); gtk_widget_show (remove_key_button); gtk_container_add (GTK_CONTAINER (hbuttonbox3), remove_key_button); GTK_WIDGET_SET_FLAGS (remove_key_button, GTK_CAN_DEFAULT); new_key_button = gtk_button_new_from_stock ("gtk-new"); gtk_widget_show (new_key_button); gtk_container_add (GTK_CONTAINER (hbuttonbox3), new_key_button); GTK_WIDGET_SET_FLAGS (new_key_button, GTK_CAN_DEFAULT); frame4 = gtk_frame_new (NULL); gtk_widget_show (frame4); gtk_paned_pack2 (GTK_PANED (hpaned1), frame4, TRUE, TRUE); table2 = gtk_table_new (5, 2, FALSE); gtk_widget_show (table2); gtk_container_add (GTK_CONTAINER (frame4), table2); gtk_container_set_border_width (GTK_CONTAINER (table2), 7); gtk_table_set_row_spacings (GTK_TABLE (table2), 6); gtk_table_set_col_spacings (GTK_TABLE (table2), 6); label19 = gtk_label_new (_("Name:")); gtk_widget_show (label19); gtk_table_attach (GTK_TABLE (table2), label19, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label19), 0, 0.5); scancode_event_descr_label = gtk_label_new (_("Scancode:")); gtk_widget_show (scancode_event_descr_label); gtk_table_attach (GTK_TABLE (table2), scancode_event_descr_label, 0, 1, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (scancode_event_descr_label), 0, 0.5); key_name_entry = gtk_entry_new (); gtk_widget_show (key_name_entry); gtk_table_attach (GTK_TABLE (table2), key_name_entry, 1, 2, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); hbox8 = gtk_hbox_new (FALSE, 5); gtk_widget_show (hbox8); gtk_table_attach (GTK_TABLE (table2), hbox8, 1, 2, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); scancode_entry = gtk_entry_new (); gtk_widget_show (scancode_entry); gtk_box_pack_start (GTK_BOX (hbox8), scancode_entry, TRUE, TRUE, 0); gtk_editable_set_editable (GTK_EDITABLE (scancode_entry), FALSE); scancode_change_button = gtk_button_new (); gtk_widget_show (scancode_change_button); gtk_box_pack_start (GTK_BOX (hbox8), scancode_change_button, FALSE, FALSE, 0); alignment8 = gtk_alignment_new (0.5, 0.5, 0, 0); gtk_widget_show (alignment8); gtk_container_add (GTK_CONTAINER (scancode_change_button), alignment8); hbox9 = gtk_hbox_new (FALSE, 2); gtk_widget_show (hbox9); gtk_container_add (GTK_CONTAINER (alignment8), hbox9); image8 = gtk_image_new_from_stock ("gtk-edit", GTK_ICON_SIZE_BUTTON); gtk_widget_show (image8); gtk_box_pack_start (GTK_BOX (hbox9), image8, FALSE, FALSE, 0); label23 = gtk_label_new_with_mnemonic (_("_Change...")); gtk_widget_show (label23); gtk_box_pack_start (GTK_BOX (hbox9), label23, FALSE, FALSE, 0); table4 = gtk_table_new (2, 2, FALSE); gtk_widget_show (table4); gtk_table_attach (GTK_TABLE (table2), table4, 1, 2, 4, 5, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0); gtk_table_set_row_spacings (GTK_TABLE (table4), 4); gtk_table_set_col_spacings (GTK_TABLE (table4), 4); program_radiobutton = gtk_radio_button_new_with_mnemonic (NULL, _("_Program:")); gtk_widget_show (program_radiobutton); gtk_table_attach (GTK_TABLE (table4), program_radiobutton, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_radio_button_set_group (GTK_RADIO_BUTTON (program_radiobutton), program_radiobutton_group); program_radiobutton_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (program_radiobutton)); program_entry = gtk_entry_new (); gtk_widget_show (program_entry); gtk_table_attach (GTK_TABLE (table4), program_entry, 1, 2, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); frame5 = gtk_frame_new (NULL); gtk_widget_show (frame5); gtk_table_attach (GTK_TABLE (table4), frame5, 1, 2, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); gtk_frame_set_shadow_type (GTK_FRAME (frame5), GTK_SHADOW_IN); table5 = gtk_table_new (2, 2, FALSE); gtk_widget_show (table5); gtk_container_add (GTK_CONTAINER (frame5), table5); gtk_container_set_border_width (GTK_CONTAINER (table5), 3); gtk_table_set_row_spacings (GTK_TABLE (table5), 3); gtk_table_set_col_spacings (GTK_TABLE (table5), 3); label25 = gtk_label_new (_("Plugin:")); gtk_widget_show (label25); gtk_table_attach (GTK_TABLE (table5), label25, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label25), 0, 0.5); label26 = gtk_label_new (_("Function:")); gtk_widget_show (label26); gtk_table_attach (GTK_TABLE (table5), label26, 0, 1, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label26), 0, 0.5); plugin_combo = gtk_combo_new (); g_object_set_data (G_OBJECT (GTK_COMBO (plugin_combo)->popwin), "GladeParentKey", plugin_combo); gtk_widget_show (plugin_combo); gtk_table_attach (GTK_TABLE (table5), plugin_combo, 1, 2, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); plugin_comboentry = GTK_COMBO (plugin_combo)->entry; gtk_widget_show (plugin_comboentry); gtk_editable_set_editable (GTK_EDITABLE (plugin_comboentry), FALSE); plugin_function_combo = gtk_combo_new (); g_object_set_data (G_OBJECT (GTK_COMBO (plugin_function_combo)->popwin), "GladeParentKey", plugin_function_combo); gtk_widget_show (plugin_function_combo); gtk_table_attach (GTK_TABLE (table5), plugin_function_combo, 1, 2, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); plugin_function_comboentry = GTK_COMBO (plugin_function_combo)->entry; gtk_widget_show (plugin_function_comboentry); gtk_editable_set_editable (GTK_EDITABLE (plugin_function_comboentry), FALSE); label24 = gtk_label_new (_("Plugin")); gtk_widget_show (label24); gtk_frame_set_label_widget (GTK_FRAME (frame5), label24); gtk_label_set_use_markup (GTK_LABEL (label24), TRUE); special_action_radiobutton = gtk_radio_button_new_with_mnemonic (NULL, _("Special _action:")); gtk_widget_show (special_action_radiobutton); gtk_table_attach (GTK_TABLE (table4), special_action_radiobutton, 0, 1, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_EXPAND), 0, 0); gtk_radio_button_set_group (GTK_RADIO_BUTTON (special_action_radiobutton), program_radiobutton_group); program_radiobutton_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (special_action_radiobutton)); label22 = gtk_label_new (_("Default:")); gtk_widget_show (label22); gtk_table_attach (GTK_TABLE (table2), label22, 0, 1, 4, 5, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label22), 0, 0); label21 = gtk_label_new (_("Keycode:")); gtk_widget_show (label21); gtk_table_attach (GTK_TABLE (table2), label21, 0, 1, 3, 4, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label21), 0, 0.5); keycode_combobox = gtk_combo_box_new_text (); gtk_widget_show (keycode_combobox); gtk_table_attach (GTK_TABLE (table2), keycode_combobox, 1, 2, 3, 4, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); hbox11 = gtk_hbox_new (FALSE, 5); gtk_widget_show (hbox11); gtk_table_attach (GTK_TABLE (table2), hbox11, 1, 2, 2, 3, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); usbcode_entry = gtk_entry_new (); gtk_widget_show (usbcode_entry); gtk_box_pack_start (GTK_BOX (hbox11), usbcode_entry, TRUE, TRUE, 0); gtk_tooltips_set_tip (tooltips, usbcode_entry, _("The keys code sent when the keyboard is connected via USB"), NULL); gtk_editable_set_editable (GTK_EDITABLE (usbcode_entry), FALSE); usbcode_change_button = gtk_button_new (); gtk_widget_show (usbcode_change_button); gtk_box_pack_start (GTK_BOX (hbox11), usbcode_change_button, FALSE, FALSE, 0); alignment12 = gtk_alignment_new (0.5, 0.5, 0, 0); gtk_widget_show (alignment12); gtk_container_add (GTK_CONTAINER (usbcode_change_button), alignment12); hbox12 = gtk_hbox_new (FALSE, 2); gtk_widget_show (hbox12); gtk_container_add (GTK_CONTAINER (alignment12), hbox12); image12 = gtk_image_new_from_stock ("gtk-edit", GTK_ICON_SIZE_BUTTON); gtk_widget_show (image12); gtk_box_pack_start (GTK_BOX (hbox12), image12, FALSE, FALSE, 0); label44 = gtk_label_new_with_mnemonic (_("_Change...")); gtk_widget_show (label44); gtk_box_pack_start (GTK_BOX (hbox12), label44, FALSE, FALSE, 0); usbcode_label = gtk_label_new (_("USB code:")); gtk_widget_show (usbcode_label); gtk_table_attach (GTK_TABLE (table2), usbcode_label, 0, 1, 2, 3, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (usbcode_label), 0, 0.5); label18 = gtk_label_new (_("Key settings")); gtk_widget_show (label18); gtk_frame_set_label_widget (GTK_FRAME (frame4), label18); gtk_label_set_use_markup (GTK_LABEL (label18), TRUE); label17 = gtk_label_new (_("Keys")); gtk_widget_show (label17); gtk_frame_set_label_widget (GTK_FRAME (frame3), label17); gtk_label_set_use_markup (GTK_LABEL (label17), TRUE); g_signal_connect ((gpointer) main_window, "delete_event", G_CALLBACK (on_main_window_delete_event), NULL); g_signal_connect ((gpointer) new1, "activate", G_CALLBACK (on_new1_activate), NULL); g_signal_connect ((gpointer) open1, "activate", G_CALLBACK (on_open1_activate), NULL); g_signal_connect ((gpointer) save1, "activate", G_CALLBACK (on_save1_activate), NULL); g_signal_connect ((gpointer) save_as1, "activate", G_CALLBACK (on_save_as1_activate), NULL); g_signal_connect ((gpointer) quit1, "activate", G_CALLBACK (on_quit1_activate), NULL); g_signal_connect ((gpointer) change_keyboard_menuitem, "activate", G_CALLBACK (on_change_keyboard_menuitem_activate), NULL); g_signal_connect ((gpointer) about1, "activate", G_CALLBACK (on_about1_activate), NULL); g_signal_connect ((gpointer) model_entry, "changed", G_CALLBACK (on_manufacturer_model_entry_changed), NULL); g_signal_connect ((gpointer) manufacturer_entry, "changed", G_CALLBACK (on_manufacturer_model_entry_changed), NULL); g_signal_connect ((gpointer) remove_key_button, "clicked", G_CALLBACK (on_remove_key_button_clicked), NULL); g_signal_connect ((gpointer) new_key_button, "clicked", G_CALLBACK (on_new_key_button_clicked), NULL); g_signal_connect ((gpointer) key_name_entry, "changed", G_CALLBACK (on_key_name_entry_changed), NULL); g_signal_connect ((gpointer) scancode_change_button, "clicked", G_CALLBACK (on_scancode_change_button_clicked), NULL); g_signal_connect ((gpointer) program_radiobutton, "toggled", G_CALLBACK (on_program_radiobutton_toggled), NULL); g_signal_connect ((gpointer) program_entry, "changed", G_CALLBACK (on_program_entry_changed), NULL); g_signal_connect ((gpointer) plugin_comboentry, "changed", G_CALLBACK (on_plugin_comboentry_changed), NULL); g_signal_connect ((gpointer) plugin_function_comboentry, "changed", G_CALLBACK (on_plugin_function_comboentry_changed), NULL); g_signal_connect ((gpointer) special_action_radiobutton, "toggled", G_CALLBACK (on_special_action_radiobutton_toggled), NULL); g_signal_connect ((gpointer) keycode_combobox, "changed", G_CALLBACK (on_keycode_combobox_changed), NULL); g_signal_connect ((gpointer) usbcode_change_button, "clicked", G_CALLBACK (on_usbcode_change_button_clicked), NULL); /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (main_window, main_window, "main_window"); GLADE_HOOKUP_OBJECT (main_window, vbox4, "vbox4"); GLADE_HOOKUP_OBJECT (main_window, menubar1, "menubar1"); GLADE_HOOKUP_OBJECT (main_window, menuitem4, "menuitem4"); GLADE_HOOKUP_OBJECT (main_window, menuitem4_menu, "menuitem4_menu"); GLADE_HOOKUP_OBJECT (main_window, new1, "new1"); GLADE_HOOKUP_OBJECT (main_window, open1, "open1"); GLADE_HOOKUP_OBJECT (main_window, save1, "save1"); GLADE_HOOKUP_OBJECT (main_window, save_as1, "save_as1"); GLADE_HOOKUP_OBJECT (main_window, separator1, "separator1"); GLADE_HOOKUP_OBJECT (main_window, quit1, "quit1"); GLADE_HOOKUP_OBJECT (main_window, edit2, "edit2"); GLADE_HOOKUP_OBJECT (main_window, edit2_menu, "edit2_menu"); GLADE_HOOKUP_OBJECT (main_window, change_keyboard_menuitem, "change_keyboard_menuitem"); GLADE_HOOKUP_OBJECT (main_window, menuitem7, "menuitem7"); GLADE_HOOKUP_OBJECT (main_window, menuitem7_menu, "menuitem7_menu"); GLADE_HOOKUP_OBJECT (main_window, about1, "about1"); GLADE_HOOKUP_OBJECT (main_window, vbox6, "vbox6"); GLADE_HOOKUP_OBJECT (main_window, frame2, "frame2"); GLADE_HOOKUP_OBJECT (main_window, table6, "table6"); GLADE_HOOKUP_OBJECT (main_window, label27, "label27"); GLADE_HOOKUP_OBJECT (main_window, label28, "label28"); GLADE_HOOKUP_OBJECT (main_window, model_entry, "model_entry"); GLADE_HOOKUP_OBJECT (main_window, manufacturer_entry, "manufacturer_entry"); GLADE_HOOKUP_OBJECT (main_window, label16, "label16"); GLADE_HOOKUP_OBJECT (main_window, frame3, "frame3"); GLADE_HOOKUP_OBJECT (main_window, hpaned1, "hpaned1"); GLADE_HOOKUP_OBJECT (main_window, vbox5, "vbox5"); GLADE_HOOKUP_OBJECT (main_window, scrolledwindow2, "scrolledwindow2"); GLADE_HOOKUP_OBJECT (main_window, key_treeview, "key_treeview"); GLADE_HOOKUP_OBJECT (main_window, hbuttonbox3, "hbuttonbox3"); GLADE_HOOKUP_OBJECT (main_window, remove_key_button, "remove_key_button"); GLADE_HOOKUP_OBJECT (main_window, new_key_button, "new_key_button"); GLADE_HOOKUP_OBJECT (main_window, frame4, "frame4"); GLADE_HOOKUP_OBJECT (main_window, table2, "table2"); GLADE_HOOKUP_OBJECT (main_window, label19, "label19"); GLADE_HOOKUP_OBJECT (main_window, scancode_event_descr_label, "scancode_event_descr_label"); GLADE_HOOKUP_OBJECT (main_window, key_name_entry, "key_name_entry"); GLADE_HOOKUP_OBJECT (main_window, hbox8, "hbox8"); GLADE_HOOKUP_OBJECT (main_window, scancode_entry, "scancode_entry"); GLADE_HOOKUP_OBJECT (main_window, scancode_change_button, "scancode_change_button"); GLADE_HOOKUP_OBJECT (main_window, alignment8, "alignment8"); GLADE_HOOKUP_OBJECT (main_window, hbox9, "hbox9"); GLADE_HOOKUP_OBJECT (main_window, image8, "image8"); GLADE_HOOKUP_OBJECT (main_window, label23, "label23"); GLADE_HOOKUP_OBJECT (main_window, table4, "table4"); GLADE_HOOKUP_OBJECT (main_window, program_radiobutton, "program_radiobutton"); GLADE_HOOKUP_OBJECT (main_window, program_entry, "program_entry"); GLADE_HOOKUP_OBJECT (main_window, frame5, "frame5"); GLADE_HOOKUP_OBJECT (main_window, table5, "table5"); GLADE_HOOKUP_OBJECT (main_window, label25, "label25"); GLADE_HOOKUP_OBJECT (main_window, label26, "label26"); GLADE_HOOKUP_OBJECT (main_window, plugin_combo, "plugin_combo"); GLADE_HOOKUP_OBJECT (main_window, plugin_comboentry, "plugin_comboentry"); GLADE_HOOKUP_OBJECT (main_window, plugin_function_combo, "plugin_function_combo"); GLADE_HOOKUP_OBJECT (main_window, plugin_function_comboentry, "plugin_function_comboentry"); GLADE_HOOKUP_OBJECT (main_window, label24, "label24"); GLADE_HOOKUP_OBJECT (main_window, special_action_radiobutton, "special_action_radiobutton"); GLADE_HOOKUP_OBJECT (main_window, label22, "label22"); GLADE_HOOKUP_OBJECT (main_window, label21, "label21"); GLADE_HOOKUP_OBJECT (main_window, keycode_combobox, "keycode_combobox"); GLADE_HOOKUP_OBJECT (main_window, hbox11, "hbox11"); GLADE_HOOKUP_OBJECT (main_window, usbcode_entry, "usbcode_entry"); GLADE_HOOKUP_OBJECT (main_window, usbcode_change_button, "usbcode_change_button"); GLADE_HOOKUP_OBJECT (main_window, alignment12, "alignment12"); GLADE_HOOKUP_OBJECT (main_window, hbox12, "hbox12"); GLADE_HOOKUP_OBJECT (main_window, image12, "image12"); GLADE_HOOKUP_OBJECT (main_window, label44, "label44"); GLADE_HOOKUP_OBJECT (main_window, usbcode_label, "usbcode_label"); GLADE_HOOKUP_OBJECT (main_window, label18, "label18"); GLADE_HOOKUP_OBJECT (main_window, label17, "label17"); GLADE_HOOKUP_OBJECT_NO_REF (main_window, tooltips, "tooltips"); gtk_window_add_accel_group (GTK_WINDOW (main_window), accel_group); return main_window; } GtkWidget* create_get_scancode_dialog (void) { GtkWidget *get_scancode_dialog; GdkPixbuf *get_scancode_dialog_icon_pixbuf; GtkWidget *dialog_vbox1; GtkWidget *alignment9; GtkWidget *msg_label; GtkWidget *dialog_action_area1; GtkWidget *get_scancode_cancel_button; get_scancode_dialog = gtk_dialog_new (); gtk_window_set_title (GTK_WINDOW (get_scancode_dialog), _("Press key")); gtk_window_set_position (GTK_WINDOW (get_scancode_dialog), GTK_WIN_POS_CENTER); gtk_window_set_modal (GTK_WINDOW (get_scancode_dialog), TRUE); get_scancode_dialog_icon_pixbuf = create_pixbuf ("icon.png"); if (get_scancode_dialog_icon_pixbuf) { gtk_window_set_icon (GTK_WINDOW (get_scancode_dialog), get_scancode_dialog_icon_pixbuf); gdk_pixbuf_unref (get_scancode_dialog_icon_pixbuf); } gtk_window_set_type_hint (GTK_WINDOW (get_scancode_dialog), GDK_WINDOW_TYPE_HINT_DIALOG); dialog_vbox1 = GTK_DIALOG (get_scancode_dialog)->vbox; gtk_widget_show (dialog_vbox1); alignment9 = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment9); gtk_box_pack_start (GTK_BOX (dialog_vbox1), alignment9, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (alignment9), 10); msg_label = gtk_label_new ("-"); gtk_widget_show (msg_label); gtk_container_add (GTK_CONTAINER (alignment9), msg_label); gtk_label_set_line_wrap (GTK_LABEL (msg_label), TRUE); dialog_action_area1 = GTK_DIALOG (get_scancode_dialog)->action_area; gtk_widget_show (dialog_action_area1); gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area1), GTK_BUTTONBOX_SPREAD); get_scancode_cancel_button = gtk_button_new_from_stock ("gtk-cancel"); gtk_widget_show (get_scancode_cancel_button); gtk_dialog_add_action_widget (GTK_DIALOG (get_scancode_dialog), get_scancode_cancel_button, GTK_RESPONSE_CANCEL); GTK_WIDGET_SET_FLAGS (get_scancode_cancel_button, GTK_CAN_DEFAULT); g_signal_connect ((gpointer) get_scancode_dialog, "show", G_CALLBACK (on_get_scancode_dialog_show), NULL); g_signal_connect ((gpointer) get_scancode_dialog, "delete_event", G_CALLBACK (on_get_scancode_dialog_delete_event), NULL); g_signal_connect ((gpointer) get_scancode_cancel_button, "clicked", G_CALLBACK (on_get_scancode_cancel_button_clicked), NULL); /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (get_scancode_dialog, get_scancode_dialog, "get_scancode_dialog"); GLADE_HOOKUP_OBJECT_NO_REF (get_scancode_dialog, dialog_vbox1, "dialog_vbox1"); GLADE_HOOKUP_OBJECT (get_scancode_dialog, alignment9, "alignment9"); GLADE_HOOKUP_OBJECT (get_scancode_dialog, msg_label, "msg_label"); GLADE_HOOKUP_OBJECT_NO_REF (get_scancode_dialog, dialog_action_area1, "dialog_action_area1"); GLADE_HOOKUP_OBJECT (get_scancode_dialog, get_scancode_cancel_button, "get_scancode_cancel_button"); return get_scancode_dialog; } GtkWidget* create_new_key_name_dialog (void) { GtkWidget *new_key_name_dialog; GdkPixbuf *new_key_name_dialog_icon_pixbuf; GtkWidget *dialog_vbox2; GtkWidget *vbox7; GtkWidget *label29; GtkWidget *new_key_name_entry; GtkWidget *frame7; GtkWidget *alignment11; GtkWidget *textview1; GtkWidget *hbox10; GtkWidget *image10; GtkWidget *label30; GtkWidget *dialog_action_area2; GtkWidget *new_key_cancel_button; GtkWidget *new_key_okbutton; new_key_name_dialog = gtk_dialog_new (); gtk_window_set_title (GTK_WINDOW (new_key_name_dialog), _("New key")); gtk_window_set_modal (GTK_WINDOW (new_key_name_dialog), TRUE); new_key_name_dialog_icon_pixbuf = create_pixbuf ("icon.png"); if (new_key_name_dialog_icon_pixbuf) { gtk_window_set_icon (GTK_WINDOW (new_key_name_dialog), new_key_name_dialog_icon_pixbuf); gdk_pixbuf_unref (new_key_name_dialog_icon_pixbuf); } gtk_window_set_type_hint (GTK_WINDOW (new_key_name_dialog), GDK_WINDOW_TYPE_HINT_DIALOG); dialog_vbox2 = GTK_DIALOG (new_key_name_dialog)->vbox; gtk_widget_show (dialog_vbox2); vbox7 = gtk_vbox_new (FALSE, 6); gtk_widget_show (vbox7); gtk_box_pack_start (GTK_BOX (dialog_vbox2), vbox7, FALSE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (vbox7), 6); label29 = gtk_label_new (_("Please enter the name of the new key:")); gtk_widget_show (label29); gtk_box_pack_start (GTK_BOX (vbox7), label29, FALSE, FALSE, 0); new_key_name_entry = gtk_entry_new (); gtk_widget_show (new_key_name_entry); gtk_box_pack_start (GTK_BOX (vbox7), new_key_name_entry, FALSE, FALSE, 0); frame7 = gtk_frame_new (NULL); gtk_widget_show (frame7); gtk_box_pack_start (GTK_BOX (vbox7), frame7, TRUE, TRUE, 0); gtk_frame_set_shadow_type (GTK_FRAME (frame7), GTK_SHADOW_NONE); alignment11 = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment11); gtk_container_add (GTK_CONTAINER (frame7), alignment11); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment11), 0, 0, 12, 0); textview1 = gtk_text_view_new (); gtk_widget_show (textview1); gtk_container_add (GTK_CONTAINER (alignment11), textview1); gtk_text_view_set_editable (GTK_TEXT_VIEW (textview1), FALSE); gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (textview1), GTK_WRAP_WORD); gtk_text_view_set_pixels_above_lines (GTK_TEXT_VIEW (textview1), 3); gtk_text_view_set_pixels_below_lines (GTK_TEXT_VIEW (textview1), 3); gtk_text_view_set_left_margin (GTK_TEXT_VIEW (textview1), 5); gtk_text_view_set_right_margin (GTK_TEXT_VIEW (textview1), 5); gtk_text_buffer_set_text (gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview1)), _("Choose an appropriate name for the key. Is there for example a text label on the key, use the label as the key's name."), -1); hbox10 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox10); gtk_frame_set_label_widget (GTK_FRAME (frame7), hbox10); image10 = gtk_image_new_from_stock ("gtk-dialog-info", GTK_ICON_SIZE_BUTTON); gtk_widget_show (image10); gtk_box_pack_start (GTK_BOX (hbox10), image10, TRUE, TRUE, 0); label30 = gtk_label_new (_("Help information:")); gtk_widget_show (label30); gtk_box_pack_start (GTK_BOX (hbox10), label30, FALSE, FALSE, 0); gtk_label_set_use_markup (GTK_LABEL (label30), TRUE); dialog_action_area2 = GTK_DIALOG (new_key_name_dialog)->action_area; gtk_widget_show (dialog_action_area2); gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area2), GTK_BUTTONBOX_END); new_key_cancel_button = gtk_button_new_from_stock ("gtk-cancel"); gtk_widget_show (new_key_cancel_button); gtk_dialog_add_action_widget (GTK_DIALOG (new_key_name_dialog), new_key_cancel_button, GTK_RESPONSE_CANCEL); GTK_WIDGET_SET_FLAGS (new_key_cancel_button, GTK_CAN_DEFAULT); new_key_okbutton = gtk_button_new_from_stock ("gtk-ok"); gtk_widget_show (new_key_okbutton); gtk_dialog_add_action_widget (GTK_DIALOG (new_key_name_dialog), new_key_okbutton, GTK_RESPONSE_OK); GTK_WIDGET_SET_FLAGS (new_key_okbutton, GTK_CAN_DEFAULT); /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (new_key_name_dialog, new_key_name_dialog, "new_key_name_dialog"); GLADE_HOOKUP_OBJECT_NO_REF (new_key_name_dialog, dialog_vbox2, "dialog_vbox2"); GLADE_HOOKUP_OBJECT (new_key_name_dialog, vbox7, "vbox7"); GLADE_HOOKUP_OBJECT (new_key_name_dialog, label29, "label29"); GLADE_HOOKUP_OBJECT (new_key_name_dialog, new_key_name_entry, "new_key_name_entry"); GLADE_HOOKUP_OBJECT (new_key_name_dialog, frame7, "frame7"); GLADE_HOOKUP_OBJECT (new_key_name_dialog, alignment11, "alignment11"); GLADE_HOOKUP_OBJECT (new_key_name_dialog, textview1, "textview1"); GLADE_HOOKUP_OBJECT (new_key_name_dialog, hbox10, "hbox10"); GLADE_HOOKUP_OBJECT (new_key_name_dialog, image10, "image10"); GLADE_HOOKUP_OBJECT (new_key_name_dialog, label30, "label30"); GLADE_HOOKUP_OBJECT_NO_REF (new_key_name_dialog, dialog_action_area2, "dialog_action_area2"); GLADE_HOOKUP_OBJECT (new_key_name_dialog, new_key_cancel_button, "new_key_cancel_button"); GLADE_HOOKUP_OBJECT (new_key_name_dialog, new_key_okbutton, "new_key_okbutton"); return new_key_name_dialog; } GtkWidget* create_contact_dialog (void) { GtkWidget *contact_dialog; GdkPixbuf *contact_dialog_icon_pixbuf; GtkWidget *dialog_vbox3; GtkWidget *vbox8; GtkWidget *label34; GtkWidget *frame8; GtkWidget *table7; GtkWidget *label31; GtkWidget *label32; GtkWidget *email_entry; GtkWidget *author_entry; GtkWidget *label33; GtkWidget *dialog_action_area3; GtkWidget *contact_dialog_cancelbutton; GtkWidget *contact_dialog_okbutton; contact_dialog = gtk_dialog_new (); gtk_window_set_title (GTK_WINDOW (contact_dialog), _("Contact information")); gtk_window_set_position (GTK_WINDOW (contact_dialog), GTK_WIN_POS_CENTER); contact_dialog_icon_pixbuf = create_pixbuf ("icon.png"); if (contact_dialog_icon_pixbuf) { gtk_window_set_icon (GTK_WINDOW (contact_dialog), contact_dialog_icon_pixbuf); gdk_pixbuf_unref (contact_dialog_icon_pixbuf); } gtk_window_set_type_hint (GTK_WINDOW (contact_dialog), GDK_WINDOW_TYPE_HINT_DIALOG); dialog_vbox3 = GTK_DIALOG (contact_dialog)->vbox; gtk_widget_show (dialog_vbox3); vbox8 = gtk_vbox_new (FALSE, 7); gtk_widget_show (vbox8); gtk_box_pack_start (GTK_BOX (dialog_vbox3), vbox8, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (vbox8), 5); label34 = gtk_label_new (_("Please fill in your real name and e-mail address. This information will be used for the administration of the keyboard files.\nThe e-mail address must be real in order to send the keyboard file.")); gtk_widget_show (label34); gtk_box_pack_start (GTK_BOX (vbox8), label34, FALSE, FALSE, 0); gtk_label_set_line_wrap (GTK_LABEL (label34), TRUE); frame8 = gtk_frame_new (NULL); gtk_widget_show (frame8); gtk_box_pack_start (GTK_BOX (vbox8), frame8, TRUE, TRUE, 0); table7 = gtk_table_new (2, 2, FALSE); gtk_widget_show (table7); gtk_container_add (GTK_CONTAINER (frame8), table7); gtk_container_set_border_width (GTK_CONTAINER (table7), 7); gtk_table_set_row_spacings (GTK_TABLE (table7), 5); gtk_table_set_col_spacings (GTK_TABLE (table7), 5); label31 = gtk_label_new (_("Your name:")); gtk_widget_show (label31); gtk_table_attach (GTK_TABLE (table7), label31, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label31), 0, 0.5); label32 = gtk_label_new (_("E-mail address:")); gtk_widget_show (label32); gtk_table_attach (GTK_TABLE (table7), label32, 0, 1, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label32), 0, 0.5); email_entry = gtk_entry_new (); gtk_widget_show (email_entry); gtk_table_attach (GTK_TABLE (table7), email_entry, 1, 2, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); author_entry = gtk_entry_new (); gtk_widget_show (author_entry); gtk_table_attach (GTK_TABLE (table7), author_entry, 1, 2, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); label33 = gtk_label_new (_("Contact information")); gtk_widget_show (label33); gtk_frame_set_label_widget (GTK_FRAME (frame8), label33); gtk_label_set_use_markup (GTK_LABEL (label33), TRUE); dialog_action_area3 = GTK_DIALOG (contact_dialog)->action_area; gtk_widget_show (dialog_action_area3); gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area3), GTK_BUTTONBOX_END); contact_dialog_cancelbutton = gtk_button_new_from_stock ("gtk-cancel"); gtk_widget_show (contact_dialog_cancelbutton); gtk_dialog_add_action_widget (GTK_DIALOG (contact_dialog), contact_dialog_cancelbutton, GTK_RESPONSE_CANCEL); GTK_WIDGET_SET_FLAGS (contact_dialog_cancelbutton, GTK_CAN_DEFAULT); contact_dialog_okbutton = gtk_button_new_from_stock ("gtk-ok"); gtk_widget_show (contact_dialog_okbutton); gtk_dialog_add_action_widget (GTK_DIALOG (contact_dialog), contact_dialog_okbutton, GTK_RESPONSE_OK); GTK_WIDGET_SET_FLAGS (contact_dialog_okbutton, GTK_CAN_DEFAULT); g_signal_connect ((gpointer) contact_dialog, "delete_event", G_CALLBACK (on_contact_dialog_delete_event), NULL); g_signal_connect ((gpointer) contact_dialog_cancelbutton, "clicked", G_CALLBACK (on_contact_dialog_cancelbutton_clicked), NULL); g_signal_connect ((gpointer) contact_dialog_okbutton, "clicked", G_CALLBACK (on_contact_dialog_okbutton_clicked), NULL); /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (contact_dialog, contact_dialog, "contact_dialog"); GLADE_HOOKUP_OBJECT_NO_REF (contact_dialog, dialog_vbox3, "dialog_vbox3"); GLADE_HOOKUP_OBJECT (contact_dialog, vbox8, "vbox8"); GLADE_HOOKUP_OBJECT (contact_dialog, label34, "label34"); GLADE_HOOKUP_OBJECT (contact_dialog, frame8, "frame8"); GLADE_HOOKUP_OBJECT (contact_dialog, table7, "table7"); GLADE_HOOKUP_OBJECT (contact_dialog, label31, "label31"); GLADE_HOOKUP_OBJECT (contact_dialog, label32, "label32"); GLADE_HOOKUP_OBJECT (contact_dialog, email_entry, "email_entry"); GLADE_HOOKUP_OBJECT (contact_dialog, author_entry, "author_entry"); GLADE_HOOKUP_OBJECT (contact_dialog, label33, "label33"); GLADE_HOOKUP_OBJECT_NO_REF (contact_dialog, dialog_action_area3, "dialog_action_area3"); GLADE_HOOKUP_OBJECT (contact_dialog, contact_dialog_cancelbutton, "contact_dialog_cancelbutton"); GLADE_HOOKUP_OBJECT (contact_dialog, contact_dialog_okbutton, "contact_dialog_okbutton"); return contact_dialog; } GtkWidget* create_about_dialog (void) { GtkWidget *about_dialog; GdkPixbuf *about_dialog_icon_pixbuf; GtkWidget *dialog_vbox4; GtkWidget *vbox9; GtkWidget *image11; GtkWidget *table8; GtkWidget *label35; GtkWidget *version_label; GtkWidget *label37; GtkWidget *developer_label; GtkWidget *label39; GtkWidget *License; GtkWidget *label41; GtkWidget *label42; GtkWidget *dialog_action_area4; GtkWidget *about_closebutton; about_dialog = gtk_dialog_new (); gtk_window_set_title (GTK_WINDOW (about_dialog), _("About keyTouch-editor")); gtk_window_set_resizable (GTK_WINDOW (about_dialog), FALSE); about_dialog_icon_pixbuf = create_pixbuf ("icon.png"); if (about_dialog_icon_pixbuf) { gtk_window_set_icon (GTK_WINDOW (about_dialog), about_dialog_icon_pixbuf); gdk_pixbuf_unref (about_dialog_icon_pixbuf); } gtk_window_set_type_hint (GTK_WINDOW (about_dialog), GDK_WINDOW_TYPE_HINT_DIALOG); dialog_vbox4 = GTK_DIALOG (about_dialog)->vbox; gtk_widget_show (dialog_vbox4); vbox9 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox9); gtk_box_pack_start (GTK_BOX (dialog_vbox4), vbox9, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (vbox9), 5); image11 = create_pixmap (about_dialog, "logo.png"); gtk_widget_show (image11); gtk_box_pack_start (GTK_BOX (vbox9), image11, FALSE, TRUE, 0); table8 = gtk_table_new (4, 2, FALSE); gtk_widget_show (table8); gtk_box_pack_start (GTK_BOX (vbox9), table8, FALSE, FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (table8), 5); gtk_table_set_row_spacings (GTK_TABLE (table8), 2); gtk_table_set_col_spacings (GTK_TABLE (table8), 7); label35 = gtk_label_new (_("Version:")); gtk_widget_show (label35); gtk_table_attach (GTK_TABLE (table8), label35, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label35), 0, 0.5); version_label = gtk_label_new ("3.2.0 beta"); gtk_widget_show (version_label); gtk_table_attach (GTK_TABLE (table8), version_label, 1, 2, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (version_label), 0, 0.5); label37 = gtk_label_new (_("Developer:")); gtk_widget_show (label37); gtk_table_attach (GTK_TABLE (table8), label37, 0, 1, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label37), 0, 0.5); developer_label = gtk_label_new ("Marvin Raaijmakers"); gtk_widget_show (developer_label); gtk_table_attach (GTK_TABLE (table8), developer_label, 1, 2, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (developer_label), 0, 0.5); label39 = gtk_label_new (_("License:")); gtk_widget_show (label39); gtk_table_attach (GTK_TABLE (table8), label39, 0, 1, 2, 3, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label39), 0, 0.5); License = gtk_label_new ("GPL 2"); gtk_widget_show (License); gtk_table_attach (GTK_TABLE (table8), License, 1, 2, 2, 3, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (License), 0, 0.5); label41 = gtk_label_new (_("Website:")); gtk_widget_show (label41); gtk_table_attach (GTK_TABLE (table8), label41, 0, 1, 3, 4, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_alignment (GTK_MISC (label41), 0, 0.5); label42 = gtk_label_new (_("http://keytouch.sf.net")); gtk_widget_show (label42); gtk_table_attach (GTK_TABLE (table8), label42, 1, 2, 3, 4, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); GTK_WIDGET_SET_FLAGS (label42, GTK_CAN_FOCUS); gtk_label_set_use_markup (GTK_LABEL (label42), TRUE); gtk_label_set_selectable (GTK_LABEL (label42), TRUE); gtk_misc_set_alignment (GTK_MISC (label42), 0, 0.5); dialog_action_area4 = GTK_DIALOG (about_dialog)->action_area; gtk_widget_show (dialog_action_area4); gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area4), GTK_BUTTONBOX_END); about_closebutton = gtk_button_new_from_stock ("gtk-close"); gtk_widget_show (about_closebutton); gtk_dialog_add_action_widget (GTK_DIALOG (about_dialog), about_closebutton, GTK_RESPONSE_CLOSE); GTK_WIDGET_SET_FLAGS (about_closebutton, GTK_CAN_DEFAULT); /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (about_dialog, about_dialog, "about_dialog"); GLADE_HOOKUP_OBJECT_NO_REF (about_dialog, dialog_vbox4, "dialog_vbox4"); GLADE_HOOKUP_OBJECT (about_dialog, vbox9, "vbox9"); GLADE_HOOKUP_OBJECT (about_dialog, image11, "image11"); GLADE_HOOKUP_OBJECT (about_dialog, table8, "table8"); GLADE_HOOKUP_OBJECT (about_dialog, label35, "label35"); GLADE_HOOKUP_OBJECT (about_dialog, version_label, "version_label"); GLADE_HOOKUP_OBJECT (about_dialog, label37, "label37"); GLADE_HOOKUP_OBJECT (about_dialog, developer_label, "developer_label"); GLADE_HOOKUP_OBJECT (about_dialog, label39, "label39"); GLADE_HOOKUP_OBJECT (about_dialog, License, "License"); GLADE_HOOKUP_OBJECT (about_dialog, label41, "label41"); GLADE_HOOKUP_OBJECT (about_dialog, label42, "label42"); GLADE_HOOKUP_OBJECT_NO_REF (about_dialog, dialog_action_area4, "dialog_action_area4"); GLADE_HOOKUP_OBJECT (about_dialog, about_closebutton, "about_closebutton"); return about_dialog; } keytouch-editor-3.2.0-beta/src/callbacks.h0000640000175000017500000001632710662075001017777 0ustar marvinmarvin#include gboolean on_selektkb_window_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data); void on_selectkb_ok_button_clicked (GtkButton *button, gpointer user_data); void on_selectkb_cancel_button_clicked (GtkButton *button, gpointer user_data); gboolean on_main_window_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data); void on_new1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_open1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_save1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_save_as1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_quit1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_about1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_remove_key_button_clicked (GtkButton *button, gpointer user_data); void on_new_key_button_clicked (GtkButton *button, gpointer user_data); void on_key_name_entry_editing_done (GtkCellEditable *celleditable, gpointer user_data); void on_scancode_change_button_clicked (GtkButton *button, gpointer user_data); void on_keycode_comboboxentry_editing_done (GtkCellEditable *celleditable, gpointer user_data); void on_program_radiobutton_group_changed (GtkRadioButton *radiobutton, gpointer user_data); void on_program_entry_editing_done (GtkCellEditable *celleditable, gpointer user_data); void on_plugin_comboboxentry_editing_done (GtkCellEditable *celleditable, gpointer user_data); void on_plugin_function_comboboxentry_editing_done (GtkCellEditable *celleditable, gpointer user_data); void on_change_keyboard_menuitem_activate (GtkMenuItem *menuitem, gpointer user_data); gboolean on_selectkb_window_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data); void on_selectkb_window_show (GtkWidget *widget, gpointer user_data); void on_get_scancode_cancel_button_clicked (GtkButton *button, gpointer user_data); void on_get_scancode_dialog_show (GtkWidget *widget, gpointer user_data); void on_get_scancode_dialog_close (GtkDialog *dialog, gpointer user_data); gboolean on_get_scancode_dialog_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data); void on_plugin_combobox_changed (GtkComboBox *combobox, gpointer user_data); void on_plugin_function_combobox_changed (GtkComboBox *combobox, gpointer user_data); void on_keycode_combobox_changed (GtkComboBox *combobox, gpointer user_data); gboolean on_new_key_name_dialog_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data); void on_new_key_cancel_button_clicked (GtkButton *button, gpointer user_data); void on_new_key_okbutton_clicked (GtkButton *button, gpointer user_data); gboolean on_key_treeview_selection ( GtkTreeSelection *selection, GtkTreeModel *model, GtkTreePath *path, gboolean path_currently_selected, gpointer userdata ); gboolean on_key_name_entry_leave_notify_event (GtkWidget *widget, GdkEventCrossing *event, gpointer user_data); void on_key_name_entry_grab_notify (GtkWidget *widget, gboolean was_grabbed, gpointer user_data); gboolean on_key_name_entry_focus_out_event (GtkWidget *widget, GdkEventFocus *event, gpointer user_data); void on_key_name_entry_changed (GtkEditable *editable, gpointer user_data); void on_program_entry_changed (GtkEditable *editable, gpointer user_data); void on_program_radiobutton_toggled (GtkToggleButton *togglebutton, gpointer user_data); void on_plugin_comboentry_changed (GtkEditable *editable, gpointer user_data); void on_plugin_function_comboentry_changed (GtkEditable *editable, gpointer user_data); void on_special_action_radiobutton_toggled (GtkToggleButton *togglebutton, gpointer user_data); gboolean on_contact_dialog_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data); void on_contact_dialog_cancelbutton_clicked (GtkButton *button, gpointer user_data); void on_contact_dialog_okbutton_clicked (GtkButton *button, gpointer user_data); void on_manufacturer_model_entry_changed (GtkEditable *editable, gpointer user_data); void on_usbcode_change_button_clicked (GtkButton *button, gpointer user_data); keytouch-editor-3.2.0-beta/src/callbacks.c0000640000175000017500000011131210767266773020010 0ustar marvinmarvin/*--------------------------------------------------------------------------------- Name : callbacks.c Author : Marvin Raaijmakers Description : Handles callbacks of the user interface Date of last change: 16-Mar-2008 History : 16-Mar-2008 Reloads evdev_list() before calling show_selectkb_window() 22-Aug-2007 Added support for USB keys 24-Jun-2007 Compiler warnings fixes 30-Aug-2006 Added support for ACPI hotkeys 01-Jul-2006 Added syntax check call to save_keyboard_file() 29-Apr-2006 save_keyboard_file() asks for a confirmation before overwriting a file 08-Apr-2006 on_new_key_button_clicked() suggests a name for the new key to the user, if the key is known and fills in the default action for such key. Copyright (C) 2006-2008 Marvin Raaijmakers 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; either version 2 of the License, or any later version. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. You can contact me at: marvinr(at)users(dot)sf(dot)net (replace (at) by @ and (dot) by .) -----------------------------------------------------------------------------------*/ #ifdef HAVE_CONFIG_H # include #endif #define _GNU_SOURCE #include #include #include #include #include #include "callbacks.h" #include "interface.h" #include "support.h" #include #include #include #include #include #define PRESS_KEY_MSG (_("Press the extra function key.")) #define SCANCODE_LABEL_TEXT (_("Scancode:")) #define EVENT_DESCR_LABEL_TEXT (_("Event description:")) static void handle_changed_special_action ( GtkWidget *special_action_radiobutton, GtkEntry *plugin_combo_entry, GtkEntry *plugin_function_combo_entry ); static Boolean ask_to_save ( GtkWidget *this_widget, char *filename ); static Boolean save_keyboard_file ( GtkWidget *this_widget, char **filename, KTKeyList *key_list ); /******************************** * Callbacks of selectkb_window * ********************************/ void on_selectkb_window_show (GtkWidget *widget, gpointer user_data) { /* Block the interaction with the main window, so that * the user can only use this window */ gtk_grab_add (GTK_WIDGET(widget)); } void on_selectkb_ok_button_clicked (GtkButton *button, gpointer user_data) { GtkTreeView *keyboard_treeview; GtkTreeSelection *tree_selection; GtkTreeModel *model; GtkTreeIter iter; char *event_descr; Boolean device_ok, acpi_selected; EVENT_DEVICE *selected_evdev; KTKeycodeScancode keycode_scancode; #define CHECK_DEVICE_MSG (_("Please press one of the extra function keys.\n" \ "Press \"Cancel\" and select another event device\n" \ "when this window does not disappear after\n" \ "pressing the key.")) keyboard_treeview = GTK_TREE_VIEW (lookup_widget(GTK_WIDGET(button), "keyboard_treeview")); tree_selection = gtk_tree_view_get_selection (keyboard_treeview); device_ok = FALSE; /* If a row was selected instead of deselected */ if (gtk_tree_selection_get_selected(tree_selection, &model, &iter)) { /* Get the evdev structure of the selected keyboard */ gtk_tree_model_get (model, &iter, COL_EVDEV_STRUCT, &selected_evdev, -1); acpi_selected = (selected_evdev == NULL); if (acpi_selected) { event_descr = get_acpi_event_descr (CHECK_DEVICE_MSG); device_ok = (event_descr != NULL); if (device_ok) { free (event_descr); } } else /* if an evdev has been selected */ { device_ok = get_keycode_scancode (evdev_complete_file_name(selected_evdev), CHECK_DEVICE_MSG, &keycode_scancode); } } else { msg_box (_("Please select the event device for your keyboard."), GTK_MESSAGE_INFO); } if (device_ok) { /* Close the window */ gtk_widget_destroy (gtk_widget_get_toplevel( GTK_WIDGET(button) )); if (GUI_main_window() == NULL) /* If there is no main window yet */ { show_main_window (&main_window_gui); } use_acpi_dev = acpi_selected; if (use_acpi_dev) { current_evdev = NULL; gtk_widget_set_sensitive (GTK_WIDGET(GUI_scancode_change_button()), TRUE); gtk_widget_set_sensitive (GTK_WIDGET(GUI_usbcode_change_button()), FALSE); } else { current_evdev = selected_evdev; if (evdev_bus_id(current_evdev) == BUS_USB) { usb_vendor_id = current_evdev->vendor_id; usb_product_id = current_evdev->product_id; } gtk_widget_set_sensitive (GUI_scancode_change_button(), evdev_bus_id(current_evdev) != BUS_USB); gtk_widget_set_sensitive (GUI_usbcode_change_button(), evdev_bus_id(current_evdev) == BUS_USB); } } } void on_selectkb_cancel_button_clicked (GtkButton *button, gpointer user_data) { /* If there is no main window */ if (GUI_main_window() == NULL) { gtk_main_quit(); gtk_exit (0); } /* Close the window */ gtk_widget_destroy ((gtk_widget_get_toplevel(GTK_WIDGET(button)))); } gboolean on_selectkb_window_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { /* If there is no main window */ if (GUI_main_window() == NULL) { gtk_main_quit(); gtk_exit (0); } return FALSE; } /**************************** * Callbacks of main_window * ****************************/ void on_manufacturer_model_entry_changed (GtkEditable *editable, gpointer user_data) { file_modified = TRUE; } Boolean save_keyboard_file ( GtkWidget *this_widget, char **filename, KTKeyList *key_list ) /* Input: this_widget - A widget in the same tree as the text entries named "manufacturer_entry" and "model_entry" filename - Points to the filename to save the file to. The user will be asked to fill in a filename if the string (= *filename) points to NULL. key_list - The list to write to the keyboard file. Output: filename - Will point to the filename where the keyboard file was written to or NULL if writing the file failed. Returns: TRUE if the keyboard file was (successfully) written, otherwise FALSE. Description: This function writes a keyboard file to the file named *filename, if *filename does not point to NULL. The user will be asked for a file name if '*filename' points to NULL and if the user wants to overwrite the file if the filled file name already exists. The manufacturer and model will be retrieved from the text entries "manufacturer_entry" and "model_entry" respectively. All the keys in 'key_list' will be used in the "key-list" element of the keyboard file. */ { char *manufacturer, *model, *author, *email_address, *subject; GtkWidget *overwrite_question_dialog, *msg_dialog, *send_question_dialog, *contact_dialog, *save_dialog; Boolean send_keyboard_file, ask_to_overwrite, save_file; /* Indicates at some point of this function if * the file should still be saved. At the end * of this function it indicates if the file * was successfully saved. */ manufacturer = (char *) gtk_entry_get_text( GTK_ENTRY( lookup_widget(this_widget, "manufacturer_entry") ) ); model = (char *) gtk_entry_get_text( GTK_ENTRY( lookup_widget(this_widget, "model_entry") ) ); author = ""; /*** Ask the user to send the keyboard file: ***/ send_question_dialog = gtk_message_dialog_new ( GTK_WINDOW (gtk_widget_get_toplevel (this_widget)), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, _("Do you want to send this keyboard file to the developer of keyTouch?\n" "This will help other people with the same keyboard.\n" "Only say \"Yes\" when the keyboard file is finished.")); send_keyboard_file = (gtk_dialog_run (GTK_DIALOG(send_question_dialog)) == GTK_RESPONSE_YES); gtk_widget_destroy (send_question_dialog); /* If the user wants to send it */ if (send_keyboard_file) { /*** Get contact information ***/ contact_dialog = create_contact_dialog(); send_keyboard_file = (gtk_dialog_run( GTK_DIALOG (contact_dialog) ) == GTK_RESPONSE_OK); if (send_keyboard_file) { author = (char *) gtk_entry_get_text( GTK_ENTRY( lookup_widget(contact_dialog, "author_entry")) ); email_address = (char *) gtk_entry_get_text( GTK_ENTRY( lookup_widget(contact_dialog, "email_entry")) ); /* Note: The contact_dialog should be destroyed later because we still need * the contents of author and email_address entries */ } else { gtk_widget_destroy (contact_dialog); } } ask_to_overwrite = (*filename == NULL); if (*filename == NULL) { save_dialog = gtk_file_chooser_dialog_new (_("Save keyboard file"), GTK_WINDOW ( gtk_widget_get_toplevel (GTK_WIDGET(this_widget)) ), GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, NULL); if (gtk_dialog_run( GTK_DIALOG (save_dialog) ) == GTK_RESPONSE_ACCEPT) { *filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (save_dialog)); } gtk_widget_destroy (save_dialog); } save_file = (*filename != NULL); /* = TRUE when the user specified a filename */ if (save_file) { /* If a file with the same name already exists */ if (access (*filename, F_OK) == 0 && ask_to_overwrite) { overwrite_question_dialog = gtk_message_dialog_new ( GTK_WINDOW ( gtk_widget_get_toplevel (GTK_WIDGET(this_widget)) ), GTK_DIALOG_MODAL, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, _("A file named \"%s\" already exists. " "Are you sure you want to overwrite it?"), *filename); save_file = (gtk_dialog_run (GTK_DIALOG(overwrite_question_dialog)) == GTK_RESPONSE_YES); gtk_widget_destroy (overwrite_question_dialog); } if (save_file) { /* If writing the file failed */ if (write_keyboard_file (manufacturer, model, key_list, usb_vendor_id, usb_product_id, author, *filename) == FALSE) { KTError (_("Failed to save \"%s\"."), *filename); save_file = FALSE; } else { if (send_keyboard_file) { if (asprintf (&subject, "kbfile: %s %s (%s)", manufacturer, model, author) == -1) { KTError (_("Could not allocate memory."), ""); exit (EXIT_FAILURE); } if (!email_file (KBFILE_EMAIL_ADDRESS, email_address, subject, *filename, smtp_hostnames)) { KTError (_("Failed to send the keyboard file."), ""); } free (subject); gtk_widget_destroy (contact_dialog); } if (!keyboard_file_is_valid (*filename)) { msg_dialog = gtk_message_dialog_new ( GTK_WINDOW ( gtk_widget_get_toplevel (GTK_WIDGET(this_widget)) ), GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, _("The keyboard file has been saved successfully, but cannot yet be " "imported in keyTouch because it is not a valid keyboard file.")); gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG(msg_dialog), (const gchar *) KTGetErrorMsg() ); gtk_dialog_run (GTK_DIALOG( msg_dialog )); gtk_widget_destroy (GTK_WIDGET( msg_dialog )); } } } if (!save_file) { /* We do not need the filename anymore if the file is not saved */ free (*filename); *filename = NULL; } } return save_file; } Boolean ask_to_save ( GtkWidget *this_widget, char *filename ) /* Input: this_widget - This widget must appear in in the main window filename - The filename of the current keyboard file, or NULL if it has no name yet Returns: TRUE if the user wants to save the file, otherwise FALSE. Description: This function creates a dialog that asks the user to save the file named 'filename' because it was modified. */ { GtkWidget *question_dialog; Boolean save_file; question_dialog = gtk_message_dialog_new ( GTK_WINDOW (gtk_widget_get_toplevel( this_widget )), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, _("The keyboard file \"%s\" has been modified.\n" "Do you want to save your changes?"), (filename ? filename : "")); save_file = (gtk_dialog_run( GTK_DIALOG(question_dialog) ) == GTK_RESPONSE_YES); gtk_widget_destroy (question_dialog); return save_file; } void on_new1_activate (GtkMenuItem *menuitem, gpointer user_data) { /* If the currently opened file was modified and the user wants to save it */ if (file_modified && ask_to_save(GTK_WIDGET(menuitem), current_filename)) { save_keyboard_file (GTK_WIDGET(menuitem), ¤t_filename, &key_list); } KTKeyList_clear (&key_list); reload_key_treeview (&key_list, GTK_WIDGET(menuitem)); file_modified = FALSE; selected_key = NULL; clear_key_settings_frame (GTK_WIDGET( menuitem )); gtk_entry_set_text (GTK_ENTRY( lookup_widget(GTK_WIDGET(menuitem), "manufacturer_entry") ), ""); gtk_entry_set_text (GTK_ENTRY( lookup_widget(GTK_WIDGET(menuitem), "model_entry") ), ""); if (current_filename) { free (current_filename); current_filename = NULL; } } void on_open1_activate (GtkMenuItem *menuitem, gpointer user_data) /* Globals: file_modified - Indicates if the currently opend file was modified current_filename - The name if the currently opened file (= NULL if no name is defined yet) */ { GtkWidget *open_dialog; KTKeyList new_key_list; char *filename, *manufacturer, *model; int vendor_id, product_id; /* If the currently opened file was modified and the user wants to save it */ if (file_modified && ask_to_save(GTK_WIDGET(menuitem), current_filename)) { save_keyboard_file (GTK_WIDGET(menuitem), ¤t_filename, &key_list); } open_dialog = gtk_file_chooser_dialog_new (_("Open keyboard file"), GTK_WINDOW ( gtk_widget_get_toplevel (GTK_WIDGET(menuitem)) ), GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); if (gtk_dialog_run (GTK_DIALOG (open_dialog)) == GTK_RESPONSE_ACCEPT) { filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (open_dialog)); /* If the keyboard file was successfully read */ if (read_keyboard_file (&new_key_list, &manufacturer, &model, &vendor_id, &product_id, filename)) { /* Set the USB vendor and product ID to the values read from the * the keyboard file, only when the currently selected keyboard * is not connected via USB */ if (evdev_bus_id(current_evdev) != BUS_USB) { usb_vendor_id = vendor_id; usb_product_id = product_id; } if (current_filename) { g_free (current_filename); } current_filename = filename; gtk_entry_set_text ( GTK_ENTRY( lookup_widget(GTK_WIDGET(menuitem), "manufacturer_entry") ), manufacturer); free (manufacturer); gtk_entry_set_text ( GTK_ENTRY( lookup_widget(GTK_WIDGET(menuitem), "model_entry") ), model); free (model); KTKeyList_clear (&key_list); key_list = new_key_list; reload_key_treeview (&key_list, GTK_WIDGET(menuitem)); file_modified = FALSE; selected_key = NULL; clear_key_settings_frame (GTK_WIDGET( menuitem )); } else { /* Because the filename will not be used: */ g_free (filename); } } gtk_widget_destroy (open_dialog); } void on_save1_activate (GtkMenuItem *menuitem, gpointer user_data) { file_modified &= !save_keyboard_file (GTK_WIDGET(menuitem), ¤t_filename, &key_list); } void on_save_as1_activate (GtkMenuItem *menuitem, gpointer user_data) { char *tmp_filename = NULL; /* The the keyboard file was successfully saved */ if (save_keyboard_file (GTK_WIDGET(menuitem), &tmp_filename, &key_list)) { if (current_filename) { free (current_filename); } current_filename = tmp_filename; file_modified = FALSE; } else if (tmp_filename) { free (tmp_filename); } } void on_quit1_activate (GtkMenuItem *menuitem, gpointer user_data) { /* If the currently opened file was modified and the user wants to save it */ if (file_modified && ask_to_save(GTK_WIDGET(menuitem), current_filename)) { save_keyboard_file (GTK_WIDGET(menuitem), ¤t_filename, &key_list); } gtk_main_quit(); gtk_exit (0); } void on_about1_activate (GtkMenuItem *menuitem, gpointer user_data) { GtkWidget *about_dialog; about_dialog = create_about_dialog(); gtk_dialog_run (GTK_DIALOG( about_dialog )); gtk_widget_destroy (about_dialog); } void on_remove_key_button_clicked (GtkButton *button, gpointer user_data) { if (selected_key) { KTKeyList_remove_key (&key_list, selected_key); reload_key_treeview (&key_list, GTK_WIDGET(button)); selected_key = NULL; clear_key_settings_frame (GTK_WIDGET( button )); } } void on_new_key_button_clicked (GtkButton *button, gpointer user_data) { GtkWidget *key_name_dialog; GtkEntry *key_name_entry; char *key_name, *acpi_event_descr; KTKeycodeScancode keycode_scancode; KTKey *new_key; Boolean key_identified; int keycode, scancode, usagecode; keycode_scancode.keycode = 0; keycode_scancode.scancode = 0; acpi_event_descr = NULL; if (use_acpi_dev) { acpi_event_descr = get_acpi_event_descr (PRESS_KEY_MSG); key_identified = (acpi_event_descr != NULL); } else { key_identified = get_keycode_scancode (evdev_complete_file_name(current_evdev), PRESS_KEY_MSG, &keycode_scancode); } if (key_identified) { key_name_dialog = create_new_key_name_dialog(); key_name_entry = GTK_ENTRY (lookup_widget(key_name_dialog, "new_key_name_entry")); /* If the key has a keycode and if there is a default name for such a key */ if (keycode_scancode.keycode && key_defaults[keycode_scancode.keycode].name) { /* Fill in the default name as a suggestion */ gtk_entry_set_text (key_name_entry, key_defaults[keycode_scancode.keycode].name); } /* Ask the user for the key name */ if (gtk_dialog_run(GTK_DIALOG(key_name_dialog)) == GTK_RESPONSE_OK) { /* Get the key name */ key_name = (char *) gtk_entry_get_text(key_name_entry); if (*key_name != '\0' && !KTKeyList_find_key(&key_list, key_name)) { keycode = keycode_scancode.keycode; if (evdev_bus_id(current_evdev) == BUS_USB) { scancode = 0; usagecode = keycode_scancode.scancode; } else { scancode = keycode_scancode.scancode; usagecode = 0; } new_key = KTKey_new(key_name, scancode, usagecode, keycode, acpi_event_descr); /* If the key has a keycode and if there is an action for such a key */ if (keycode && key_defaults[keycode].name) { if (key_defaults[keycode].action.type == KTActionTypeProgram) { KTKey_set_program (new_key, key_defaults[keycode].action.program.command); } else if (key_defaults[keycode].action.type == KTActionTypePlugin) { KTKey_set_plugin (new_key, key_defaults[keycode].action.plugin.plugin_name, key_defaults[keycode].action.plugin.function_name); } } /* Add the new key to the key list */ KTKeyList_append (&key_list, new_key); reload_key_treeview (&key_list, GTK_WIDGET(button)); file_modified = TRUE; } else { msg_box (_("Cannot add the key because the name is already in the list."), GTK_MESSAGE_WARNING); if (use_acpi_dev) { free (acpi_event_descr); } } } else if (use_acpi_dev) { free (acpi_event_descr); } gtk_widget_destroy (key_name_dialog); } } void on_scancode_change_button_clicked (GtkButton *button, gpointer user_data) { KTKeycodeScancode keycode_scancode; char str_scancode[64], *acpi_event_descr; if (selected_key) { if (use_acpi_dev) { acpi_event_descr = get_acpi_event_descr (PRESS_KEY_MSG); if (acpi_event_descr) { KTKey_set_acpi_event_descr (selected_key, acpi_event_descr); gtk_entry_set_text (GUI_scancode_entry(), acpi_event_descr); gtk_label_set_text (GUI_scancode_event_descr_label(), EVENT_DESCR_LABEL_TEXT); } } else { /* If we received a scancode */ if (get_keycode_scancode (evdev_complete_file_name(current_evdev), PRESS_KEY_MSG, &keycode_scancode)) { KTKey_set_scancode (selected_key, keycode_scancode.scancode); if (keycode_scancode.scancode) { /* Convert the scancode to a string */ snprintf (str_scancode, sizeof(str_scancode), "%d", keycode_scancode.scancode); str_scancode[sizeof(str_scancode)-1] = '\0'; /* Show the scancode */ gtk_entry_set_text (GUI_scancode_entry(), str_scancode); } else { gtk_entry_set_text (GUI_scancode_entry(), ""); } gtk_label_set_text (GUI_scancode_event_descr_label(), SCANCODE_LABEL_TEXT); if (keycode_scancode.keycode) { KTKey_set_keycode (selected_key, keycode_scancode.keycode); g_signal_handlers_block_by_func (GTK_OBJECT(GUI_keycode_combobox()), (void *)on_keycode_combobox_changed, NULL); gtk_combo_box_set_active (GUI_keycode_combobox(), keycode2index(keycode_scancode.keycode)); g_signal_handlers_unblock_by_func (GTK_OBJECT(GUI_keycode_combobox()), (void *)on_keycode_combobox_changed, NULL); } } } } } void on_usbcode_change_button_clicked (GtkButton *button, gpointer user_data) { KTKeycodeScancode keycode_scancode; char str_scancode[64]; if (selected_key) { /* If we received a usage code */ if (get_keycode_scancode (evdev_complete_file_name(current_evdev), PRESS_KEY_MSG, &keycode_scancode)) { KTKey_set_usagecode (selected_key, keycode_scancode.scancode); if (keycode_scancode.scancode) { /* Convert the usage code to a string */ snprintf (str_scancode, sizeof(str_scancode), "0x%x", keycode_scancode.scancode); str_scancode[sizeof(str_scancode)-1] = '\0'; /* Show the usage code */ gtk_entry_set_text (GUI_usbcode_entry(), str_scancode); } else { gtk_entry_set_text (GUI_usbcode_entry(), ""); } if (keycode_scancode.keycode) { KTKey_set_keycode (selected_key, keycode_scancode.keycode); g_signal_handlers_block_by_func (GTK_OBJECT(GUI_keycode_combobox()), (void *)on_keycode_combobox_changed, NULL); gtk_combo_box_set_active (GUI_keycode_combobox(), keycode2index(keycode_scancode.keycode)); g_signal_handlers_unblock_by_func (GTK_OBJECT(GUI_keycode_combobox()), (void *)on_keycode_combobox_changed, NULL); } } } } void on_keycode_combobox_changed (GtkComboBox *combobox, gpointer user_data) { int selection_index; if (selected_key) { selection_index = gtk_combo_box_get_active(combobox); KTKey_set_keycode (selected_key, visible_keycodes[selection_index]); file_modified = TRUE; } } void on_key_name_entry_changed (GtkEditable *editable, gpointer user_data) { KTKey *other_key; char *entry_text; if (selected_key) { entry_text = (char*) gtk_entry_get_text (GTK_ENTRY(editable)); /* Search in key_list for a key with the same name */ other_key = KTKeyList_find_key (&key_list, entry_text); /* If no other key with the same name exists */ if (other_key == NULL || other_key == selected_key) { /* Change the key name */ KTKey_set_name (selected_key, entry_text); reload_key_treeview (&key_list, GTK_WIDGET(editable)); file_modified = TRUE; } } } void on_program_radiobutton_toggled (GtkToggleButton *togglebutton, gpointer user_data) { GtkEntry *program_entry; /* If special_action_radiobutton is pressed */ if (gtk_toggle_button_get_active(togglebutton) == TRUE && selected_key) { program_entry = GTK_ENTRY (lookup_widget (GTK_WIDGET(togglebutton), "program_entry")); KTKey_set_program (selected_key, (char *) gtk_entry_get_text(program_entry)); file_modified = TRUE; } } void on_program_entry_changed (GtkEditable *editable, gpointer user_data) { GtkRadioButton *program_radiobutton; if (selected_key) { program_radiobutton = GTK_RADIO_BUTTON ( lookup_widget (GTK_WIDGET(editable), "program_radiobutton") ); g_signal_handlers_block_by_func (GTK_OBJECT(program_radiobutton), (void *)on_program_radiobutton_toggled, NULL); KTKey_set_program (selected_key, (char*)gtk_entry_get_text(GTK_ENTRY(editable))); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(program_radiobutton), TRUE); g_signal_handlers_unblock_by_func (GTK_OBJECT(program_radiobutton), (void *)on_program_radiobutton_toggled, NULL); file_modified = TRUE; } } void handle_changed_special_action ( GtkWidget *special_action_radiobutton, GtkEntry *plugin_combo_entry, GtkEntry *plugin_function_combo_entry ) /* input: special_action_radiobutton - The radiobutton which indicates if the selected plugin and its function plugin_combo_entry - The entry that contains the name of the plugin plugin_function_combo_entry - The entry that contains the name of the plugin function output: - returns: - description: This function changes the default action of the selected key to the selected plugin and its function. It also toggles special_action_radiobutton to TRUE. */ { char *plugin_name, *function_name; if (selected_key) { plugin_name = (char *) gtk_entry_get_text(plugin_combo_entry); function_name = (char *) gtk_entry_get_text(plugin_function_combo_entry); if (plugin_name[0] != '\0' && function_name[0] != '\0') { KTKey_set_plugin (selected_key, plugin_name, function_name); } /* Block the signal handler of and special_action_radiobutton */ g_signal_handlers_block_by_func (GTK_OBJECT(special_action_radiobutton), (void *)on_special_action_radiobutton_toggled, NULL); /* Toggle special_action_radiobutton */ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(special_action_radiobutton), TRUE); /* Unblock the signal handler of and special_action_radiobutton */ g_signal_handlers_unblock_by_func (GTK_OBJECT(special_action_radiobutton), (void *)on_special_action_radiobutton_toggled, NULL); file_modified = TRUE; } } void on_plugin_comboentry_changed (GtkEditable *editable, gpointer user_data) { char *plugin_name; plugin_name = (char *) gtk_entry_get_text (GTK_ENTRY(editable)); reload_plugin_function_list (GTK_WIDGET(editable), find_plugin (plugin_name, plugin_list, NUM_PLUGINS)); handle_changed_special_action ( lookup_widget (GTK_WIDGET(editable), "special_action_radiobutton"), GTK_ENTRY (editable), GTK_ENTRY (lookup_widget(GTK_WIDGET(editable), "plugin_function_comboentry")) ); } void on_plugin_function_comboentry_changed (GtkEditable *editable, gpointer user_data) { handle_changed_special_action ( lookup_widget (GTK_WIDGET(editable), "special_action_radiobutton"), GTK_ENTRY ( lookup_widget (GTK_WIDGET(editable), "plugin_comboentry") ), GTK_ENTRY (editable) ); } void on_special_action_radiobutton_toggled (GtkToggleButton *togglebutton, gpointer user_data) { /* If special_action_radiobutton is pressed */ if ( gtk_toggle_button_get_active(togglebutton) == TRUE ) { handle_changed_special_action ( GTK_WIDGET (togglebutton), GTK_ENTRY (lookup_widget( GTK_WIDGET(togglebutton), "plugin_comboentry" )), GTK_ENTRY (lookup_widget( GTK_WIDGET(togglebutton), "plugin_function_comboentry" )) ); } } void on_change_keyboard_menuitem_activate (GtkMenuItem *menuitem, gpointer user_data) { clear_evdev_list (&evdev_list); read_evdev_list (&evdev_list, EVDEV_DIR); show_selectkb_window (&evdev_list, acpi_usable); } gboolean on_key_treeview_selection ( GtkTreeSelection *selection, GtkTreeModel *model, GtkTreePath *path, gboolean path_currently_selected, gpointer userdata ) { GtkRadioButton *selected_radiobutton; GtkTreeIter iter; char *key_name, str_scancode[64], *prog, *plugin_name, *plugin_function, *acpi_event_descr; selected_key = NULL; /* If a row was selected instead of deselected */ if (gtk_tree_model_get_iter(model, &iter, path)) { /* Get the name of the selected key */ gtk_tree_model_get (model, &iter, FIRST_COLUMN, &key_name, -1); if (key_name != NULL) /* If a listitem was selected instead of deselected */ { /* Block the signal handlers */ g_signal_handlers_block_by_func (GTK_OBJECT(GUI_key_name_entry()), (void *)on_key_name_entry_changed, NULL); g_signal_handlers_block_by_func (GTK_OBJECT(GUI_program_entry()), (void *)on_program_entry_changed, NULL); g_signal_handlers_block_by_func (GTK_OBJECT(GUI_keycode_combobox()), (void *)on_keycode_combobox_changed, NULL); g_signal_handlers_block_by_func (GTK_OBJECT(GUI_program_radiobutton()), (void *)on_program_radiobutton_toggled, NULL); g_signal_handlers_block_by_func (GTK_OBJECT(GUI_plugin_comboentry()), (void *)on_plugin_comboentry_changed, NULL); g_signal_handlers_block_by_func (GTK_OBJECT(GUI_plugin_function_comboentry()), (void *)on_plugin_function_comboentry_changed, NULL); /* Get the data for the selected key */ selected_key = KTKeyList_find_key(&key_list, key_name); /* Show the name of the key */ gtk_entry_set_text (GUI_key_name_entry(), key_name); acpi_event_descr = KTKey_get_acpi_event_descr (selected_key); if (acpi_event_descr) { gtk_entry_set_text (GUI_scancode_entry(), acpi_event_descr); gtk_label_set_text (GUI_scancode_event_descr_label(), EVENT_DESCR_LABEL_TEXT); } else { gtk_label_set_text (GUI_scancode_event_descr_label(), SCANCODE_LABEL_TEXT); if (KTKey_get_scancode (selected_key)) { /* Convert the scancode to a string */ snprintf (str_scancode, sizeof(str_scancode), "%d", KTKey_get_scancode(selected_key)); str_scancode[sizeof(str_scancode)-1] = '\0'; /* Show the scancode */ gtk_entry_set_text (GUI_scancode_entry(), str_scancode); } else { gtk_entry_set_text (GUI_scancode_entry(), ""); } } if (KTKey_get_usagecode(selected_key)) { /* Convert the usagecode to a string */ snprintf (str_scancode, sizeof(str_scancode), "0x%x", KTKey_get_usagecode(selected_key)); str_scancode[sizeof(str_scancode)-1] = '\0'; /* Show the usagecode */ gtk_entry_set_text (GUI_usbcode_entry(), str_scancode); } else { gtk_entry_set_text (GUI_usbcode_entry(), ""); } /* Show the keycode */ gtk_combo_box_set_active (GUI_keycode_combobox(), keycode2index(KTKey_get_keycode(selected_key))); if (KTKey_get_action_type(selected_key) == KTActionTypeProgram) { prog = KTKey_get_action_command(selected_key); selected_radiobutton = GUI_program_radiobutton(); plugin_name = ""; plugin_function = ""; } else { prog = ""; selected_radiobutton = GUI_special_action_radiobutton(); plugin_name = KTKey_get_plugin_name(selected_key); plugin_function = KTKey_get_plugin_function_name(selected_key); } gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(selected_radiobutton), TRUE); /* Show the plugin */ gtk_entry_set_text (GUI_plugin_comboentry(), plugin_name); reload_plugin_function_list (GTK_WIDGET(GUI_special_action_radiobutton()), find_plugin (plugin_name, plugin_list, NUM_PLUGINS)); /* Show the plugin function */ gtk_entry_set_text (GUI_plugin_function_comboentry(), plugin_function); /* Show the program */ gtk_entry_set_text (GUI_program_entry(), prog); /* Unblock the signal handlers */ g_signal_handlers_unblock_by_func (GTK_OBJECT(GUI_key_name_entry()), (void *)on_key_name_entry_changed, NULL); g_signal_handlers_unblock_by_func (GTK_OBJECT(GUI_program_entry()), (void *)on_program_entry_changed, NULL); g_signal_handlers_unblock_by_func (GTK_OBJECT(GUI_keycode_combobox()), (void *)on_keycode_combobox_changed, NULL); g_signal_handlers_unblock_by_func (GTK_OBJECT(GUI_program_radiobutton()), (void *)on_program_radiobutton_toggled, NULL); g_signal_handlers_unblock_by_func (GTK_OBJECT(GUI_plugin_comboentry()), (void *)on_plugin_comboentry_changed, NULL); g_signal_handlers_unblock_by_func (GTK_OBJECT(GUI_plugin_function_comboentry()), (void *)on_plugin_function_comboentry_changed, NULL); } } return (TRUE); } gboolean on_main_window_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { /* If the currently opened file was modified and the user wants to save it */ if (file_modified && ask_to_save(widget, current_filename)) { save_keyboard_file (widget, ¤t_filename, &key_list); } KTKeyList_clear (&key_list); gtk_main_quit(); gtk_exit (0); return FALSE; } /************************************ * Callbacks of get_scancode_dialog * ************************************/ void on_get_scancode_dialog_show (GtkWidget *widget, gpointer user_data) { /* Block the interaction with the main window, so that * the user can only use this window */ gtk_grab_add (GTK_WIDGET(widget)); } gboolean on_get_scancode_dialog_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { gtk_main_quit(); return TRUE; /* Do not destroy the window */ } void on_get_scancode_cancel_button_clicked (GtkButton *button, gpointer user_data) { gtk_main_quit(); } /******************************* * Callbacks of contact_dialog * *******************************/ gboolean on_contact_dialog_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { gtk_dialog_response (GTK_DIALOG(widget), GTK_RESPONSE_CANCEL); return TRUE; /* Do not destroy the window */ } void on_contact_dialog_cancelbutton_clicked (GtkButton *button, gpointer user_data) { gtk_dialog_response (GTK_DIALOG( gtk_widget_get_toplevel( GTK_WIDGET(button) ) ), GTK_RESPONSE_CANCEL); } void on_contact_dialog_okbutton_clicked (GtkButton *button, gpointer user_data) { gtk_dialog_response (GTK_DIALOG( gtk_widget_get_toplevel( GTK_WIDGET(button) ) ), GTK_RESPONSE_OK); } keytouch-editor-3.2.0-beta/src/Makefile.in0000640000175000017500000002413010677476776020001 0ustar marvinmarvin# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ sbindir = @sbindir@ libexecdir = @libexecdir@ datadir = @datadir@ sysconfdir = @sysconfdir@ sharedstatedir = @sharedstatedir@ localstatedir = @localstatedir@ libdir = @libdir@ infodir = @infodir@ mandir = @mandir@ includedir = @includedir@ oldincludedir = /usr/include DESTDIR = pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ACLOCAL = @ACLOCAL@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ transform = @program_transform_name@ NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ DATADIRNAME = @DATADIRNAME@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ HAVE_LIB = @HAVE_LIB@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ LIB = @LIB@ LTLIB = @LTLIB@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT_OPTS = @MSGFMT_OPTS@ PACKAGE = @PACKAGE@ PACKAGE_CFLAGS = @PACKAGE_CFLAGS@ PACKAGE_LIBS = @PACKAGE_LIBS@ PKG_CONFIG = @PKG_CONFIG@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ INCLUDES = -I. -I../mxml/ -DPACKAGE_DATA_DIR=\""$(datadir)"\" -DPACKAGE_LOCALE_DIR=\""$(prefix)/$(DATADIRNAME)/locale"\" -I../string_to_keycode @PACKAGE_CFLAGS@ bin_PROGRAMS = keytouch-editor-bin AM_CFLAGS = @CFLAGS@ -Wall keytouch_editor_bin_SOURCES = main.c keytouch-editor.h support.c support.h interface.c interface.h callbacks.c callbacks.h memory.c set_data.c set_data.h error.c evdev.c evdev.h get_scancode.c key_list.c keycodes.c plugins.c config.c email.c email.h default_key_settings.c check_syntax.c check_syntax.h acpi.c acpi.h ud_socket.c ud_socket.h gui.h keytouch_editor_bin_LDADD = ../mxml/libmxml.a ../string_to_keycode/string_to_keycode.o @PACKAGE_LIBS@ $(INTLLIBS) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = ../config.h CONFIG_CLEAN_FILES = PROGRAMS = $(bin_PROGRAMS) DEFS = @DEFS@ -I. -I$(srcdir) -I.. CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ keytouch_editor_bin_OBJECTS = main.o support.o interface.o callbacks.o \ memory.o set_data.o error.o evdev.o get_scancode.o key_list.o \ keycodes.o plugins.o config.o email.o default_key_settings.o \ check_syntax.o acpi.o ud_socket.o keytouch_editor_bin_DEPENDENCIES = ../mxml/libmxml.a \ ../string_to_keycode/string_to_keycode.o keytouch_editor_bin_LDFLAGS = CFLAGS = @CFLAGS@ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ DIST_COMMON = Makefile.am Makefile.in DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) TAR = tar GZIP_ENV = --best DEP_FILES = .deps/acpi.P .deps/callbacks.P .deps/check_syntax.P \ .deps/config.P .deps/default_key_settings.P .deps/email.P .deps/error.P \ .deps/evdev.P .deps/get_scancode.P .deps/interface.P .deps/key_list.P \ .deps/keycodes.P .deps/main.P .deps/memory.P .deps/plugins.P \ .deps/set_data.P .deps/support.P .deps/ud_socket.P SOURCES = $(keytouch_editor_bin_SOURCES) OBJECTS = $(keytouch_editor_bin_OBJECTS) all: all-redirect .SUFFIXES: .SUFFIXES: .S .c .o .s $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) cd $(top_builddir) \ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status mostlyclean-binPROGRAMS: clean-binPROGRAMS: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) distclean-binPROGRAMS: maintainer-clean-binPROGRAMS: install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(bindir) @list='$(bin_PROGRAMS)'; for p in $$list; do \ if test -f $$p; then \ echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ else :; fi; \ done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) list='$(bin_PROGRAMS)'; for p in $$list; do \ rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ done .s.o: $(COMPILE) -c $< .S.o: $(COMPILE) -c $< mostlyclean-compile: -rm -f *.o core *.core clean-compile: distclean-compile: -rm -f *.tab.c maintainer-clean-compile: keytouch-editor-bin: $(keytouch_editor_bin_OBJECTS) $(keytouch_editor_bin_DEPENDENCIES) @rm -f keytouch-editor-bin $(LINK) $(keytouch_editor_bin_LDFLAGS) $(keytouch_editor_bin_OBJECTS) $(keytouch_editor_bin_LDADD) $(LIBS) tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS)'; \ unique=`for i in $$list; do echo $$i; done | \ awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ here=`pwd` && cd $(srcdir) \ && mkid -f$$here/ID $$unique $(LISP) TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS)'; \ unique=`for i in $$list; do echo $$i; done | \ awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags $$unique $(LISP)) mostlyclean-tags: clean-tags: distclean-tags: -rm -f TAGS ID maintainer-clean-tags: distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) subdir = src distdir: $(DISTFILES) here=`cd $(top_builddir) && pwd`; \ top_distdir=`cd $(top_distdir) && pwd`; \ distdir=`cd $(distdir) && pwd`; \ cd $(top_srcdir) \ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu src/Makefile @for file in $(DISTFILES); do \ d=$(srcdir); \ if test -d $$d/$$file; then \ cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :) -include $(DEP_FILES) mostlyclean-depend: clean-depend: distclean-depend: -rm -rf .deps maintainer-clean-depend: %.o: %.c @echo '$(COMPILE) -c $<'; \ $(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $< @-cp .deps/$(*F).pp .deps/$(*F).P; \ tr ' ' '\012' < .deps/$(*F).pp \ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ >> .deps/$(*F).P; \ rm .deps/$(*F).pp %.lo: %.c @echo '$(LTCOMPILE) -c $<'; \ $(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $< @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \ < .deps/$(*F).pp > .deps/$(*F).P; \ tr ' ' '\012' < .deps/$(*F).pp \ | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ >> .deps/$(*F).P; \ rm -f .deps/$(*F).pp info-am: info: info-am dvi-am: dvi: dvi-am check-am: all-am check: check-am installcheck-am: installcheck: installcheck-am install-exec-am: install-binPROGRAMS install-exec: install-exec-am install-data-am: install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am install: install-am uninstall-am: uninstall-binPROGRAMS uninstall: uninstall-am all-am: Makefile $(PROGRAMS) all-redirect: all-am install-strip: $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install installdirs: $(mkinstalldirs) $(DESTDIR)$(bindir) mostlyclean-generic: clean-generic: distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: mostlyclean-am: mostlyclean-binPROGRAMS mostlyclean-compile \ mostlyclean-tags mostlyclean-depend mostlyclean-generic mostlyclean: mostlyclean-am clean-am: clean-binPROGRAMS clean-compile clean-tags clean-depend \ clean-generic mostlyclean-am clean: clean-am distclean-am: distclean-binPROGRAMS distclean-compile distclean-tags \ distclean-depend distclean-generic clean-am distclean: distclean-am maintainer-clean-am: maintainer-clean-binPROGRAMS \ maintainer-clean-compile maintainer-clean-tags \ maintainer-clean-depend maintainer-clean-generic \ distclean-am @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am .PHONY: mostlyclean-binPROGRAMS distclean-binPROGRAMS clean-binPROGRAMS \ maintainer-clean-binPROGRAMS uninstall-binPROGRAMS install-binPROGRAMS \ mostlyclean-compile distclean-compile clean-compile \ maintainer-clean-compile tags mostlyclean-tags distclean-tags \ clean-tags maintainer-clean-tags distdir mostlyclean-depend \ distclean-depend clean-depend maintainer-clean-depend info-am info \ dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ install-exec install-data-am install-data install-am install \ uninstall-am uninstall all-redirect all-am all installdirs \ mostlyclean-generic distclean-generic clean-generic \ maintainer-clean-generic clean mostlyclean distclean maintainer-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: keytouch-editor-3.2.0-beta/src/evdev.h0000640000175000017500000000455310767265031017201 0ustar marvinmarvin/*--------------------------------------------------------------------------------- Name : evdev.h Author : Marvin Raaijmakers Description : Header file for evdev.c Date of last change: 16-Mar-2008 History : Copyright (C) 2006-2008 Marvin Raaijmakers 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; either version 2 of the License, or any later version. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. You can contact me at: marvinr(at)users(dot)sf(dot)net (replace (at) by @ and (dot) by .) -----------------------------------------------------------------------------------*/ #ifndef _EVDEV_H #define _EVDEV_H #include #ifndef MSC_RAW # define MSC_RAW 0x03 #endif #ifndef MSC_SCAN # define MSC_SCAN 0x04 #endif #ifndef EV_SYN # define EV_SYN 0 #endif #ifndef _BOOL_DEF #define _BOOL_DEF typedef int Boolean; #define TRUE 1 #define FALSE 0 #endif #define EVDEV_DIR "/dev/input/" typedef struct { char *file_name, *complete_file_name, *device_name; int driver_version, bus_id, vendor_id, product_id, version_id; } EVENT_DEVICE; typedef struct _evdev_list_entry { EVENT_DEVICE *evdev; struct _evdev_list_entry *next; } EVDEV_LIST_ENTRY; typedef struct { EVDEV_LIST_ENTRY *head, *tail; } EVDEV_LIST; #define evdev_file_name(_evdev) ((_evdev)->file_name) #define evdev_complete_file_name(_evdev) ((_evdev)->complete_file_name) #define evdev_device_name(_evdev) ((_evdev)->device_name) #define evdev_bus_id(_evdev) ((_evdev)->bus_id) #define evdev_bus_string(_evdev) ((_evdev)->bus_id == BUS_I8042 ? "PS/2" : ((_evdev)->bus_id == BUS_USB ? "USB" : "")) extern Boolean read_evdev_list (EVDEV_LIST *evdev_list, char *dir); extern char *load_evdev_module (void); extern void clear_evdev_list (EVDEV_LIST *evdev_list); #endif keytouch-editor-3.2.0-beta/src/set_data.c0000640000175000017500000003664610767265633017667 0ustar marvinmarvin/*--------------------------------------------------------------------------------- Name : set_data.c Author : Marvin Raaijmakers Description : Sets data to the GUI Date of last change: 22-Aug-2006 History : 30-Aug-2006 show_selectkb_window(): added acpi_usable parameter and code that uses this parameter. Copyright (C) 2006-2007 Marvin Raaijmakers 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; either version 2 of the License, or any later version. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. You can contact me at: marvinr(at)users(dot)sf(dot)net (replace (at) by @ and (dot) by .) -----------------------------------------------------------------------------------*/ #ifdef HAVE_CONFIG_H # include #endif #include #include "interface.h" #include "support.h" #include "callbacks.h" #include #include #include /* This is our data identification string to store * data in list items */ const gchar *list_item_data_key = "list_item_data"; static void init_evdev_treeview (GtkTreeView *treeview); static void tree_view_add_new_text_column ( GtkTreeView *tree_view, char *column_title, int column_pos ); static void list_append_item (GtkList *list, char *item_string); static void list_store_append_string ( GtkListStore *list_store, gchar *string ); static void treeview_create_list (GtkTreeView *treeview); void clear_key_settings_frame (GtkWidget *this_widget) /* Input: this_widget - A widget in the same tree as the widgets in the frame Description: This function clears the contents of the following widgets: - key_name_entry - scancode_entry - keycode_combobox - program_entry - plugin_comboentry - plugin_function_comboentry */ { gtk_entry_set_text (GTK_ENTRY( lookup_widget(this_widget, "key_name_entry") ), ""); gtk_entry_set_text (GTK_ENTRY( lookup_widget(this_widget, "scancode_entry") ), ""); gtk_combo_box_set_active (GTK_COMBO_BOX( lookup_widget(this_widget, "keycode_combobox") ), -1); gtk_entry_set_text (GTK_ENTRY( lookup_widget(this_widget, "program_entry") ), ""); gtk_entry_set_text (GTK_ENTRY( lookup_widget(this_widget, "plugin_comboentry") ), ""); gtk_entry_set_text (GTK_ENTRY( lookup_widget(this_widget, "plugin_function_comboentry") ), ""); } void msg_box ( gchar *message, GtkMessageType msg_type ) /* Input: message - The message to display msg_type - The type of the message Output: - Returns: - Description: msg_box() shows a message dialog containing text and an ok-button. The text of the dialog will be message. The type of the message is indicated by msg_type. */ { GtkWidget *msg_dialog; msg_dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, msg_type, GTK_BUTTONS_OK, message); /* * Block the interaction with the other windows, so that * the user can only use this window */ gtk_grab_add (GTK_WIDGET(msg_dialog)); gtk_dialog_run (GTK_DIALOG (msg_dialog)); gtk_widget_destroy (msg_dialog); /* Wait until the window has disappeared */ while (g_main_context_iteration(NULL, FALSE)) ; /* NULL Statement */ } void gui_error_handler (const char *msg) /* Input: msg - The message to display Output: - Returns: - Description: This function calls msg_box(msg, GTK_MESSAGE_ERROR) */ { msg_box ((gchar *)msg, GTK_MESSAGE_ERROR); } void list_append_item ( GtkList *list, char *item_string ) /* input: list - The list to append the item to item_string - The string of the new list item output: - returns: - description: This function appends a list item to list. The string of the item is item_string. */ { GtkWidget *list_item; GtkWidget *label; label = gtk_label_new( item_string ); gtk_misc_set_alignment (GTK_MISC (label), GTK_ALIGN_LEFT, GTK_ALIGN_CENTER); list_item = gtk_list_item_new(); gtk_container_add (GTK_CONTAINER(list_item), label); gtk_widget_show (label); gtk_container_add (GTK_CONTAINER(list), list_item); gtk_widget_show (list_item); gtk_object_set_data (GTK_OBJECT(list_item), list_item_data_key, item_string); } void reload_plugin_function_list ( GtkWidget *this_widget, KTPlugin *plugin ) /* Input: this_widget - A widget in the same tree as the widget named "plugin_combo" plugin - The address of the currently selected plugin Description: This function deletes all list items of a list widget and appends all functions names, of plugin, to the list. The list is a widget of a combo named "plugin_function_combo", which is in the same tree as this_widget. The list will only be cleared if plugin points to NULL. */ { GtkCombo *plugin_function_combo; GtkWidget *plugin_function_combo_entry; GtkList *plugin_function_list_widget; int count; plugin_function_combo_entry = lookup_widget(this_widget, "plugin_function_comboentry"); /* Block the signal handler of plugin_entry */ g_signal_handlers_block_by_func (GTK_OBJECT(plugin_function_combo_entry), on_plugin_function_comboentry_changed, NULL); plugin_function_combo = GTK_COMBO(lookup_widget(this_widget, "plugin_function_combo")); plugin_function_list_widget = GTK_LIST(plugin_function_combo->list); /* Clear the plugin function list */ gtk_list_clear_items (plugin_function_list_widget, 0, -1); /* Clear the whole list */ if (plugin) { /* Add all function names to the list */ for (count = 0; count < plugin->num_functions; count++) { list_append_item (plugin_function_list_widget, plugin->function[count]); } } /* Unblock the signal handler of plugin_entry */ g_signal_handlers_unblock_by_func (GTK_OBJECT(plugin_function_combo_entry), on_plugin_function_comboentry_changed, NULL); } void reload_plugin_list ( GtkWidget *this_widget, const KTPlugin plugin_list[], int num_plugins ) /* input: this_widget - A widget in the same tree as the widget named "plugin_combo" plugin_list - This is array of all available plugins num_plugins - Size of 'plugin_list' array output: - returns: - description: This function deletes all list items of a list widget and appends all plugin names, which it will read from plugin_list, to the list. The list is a widget of a combo named "plugin_combo", which is in the same tree as this_widget. */ { GtkCombo *plugin_combo; GtkWidget *plugin_combo_entry; GtkList *plugin_list_widget; int i; plugin_combo_entry = lookup_widget(this_widget, "plugin_comboentry"); /* Block the signal handler of plugin_entry */ g_signal_handlers_block_by_func (GTK_OBJECT(plugin_combo_entry), on_plugin_comboentry_changed, NULL); plugin_combo = GTK_COMBO(lookup_widget(this_widget, "plugin_combo")); plugin_list_widget = GTK_LIST(plugin_combo->list); /* Clear the plugin action list */ gtk_list_clear_items (plugin_list_widget, 0, -1); /* Clear the whole list */ /* Add all plugin names to the list */ for (i = 0; i < num_plugins; i++) { list_append_item (plugin_list_widget, KTPlugin_get_name(plugin_list[i])); } /* Unblock the signal handler of plugin_entry */ g_signal_handlers_unblock_by_func (GTK_OBJECT(plugin_combo_entry), on_plugin_comboentry_changed, NULL); } void list_store_append_string ( GtkListStore *list_store, gchar *string ) /* input: string - The string to append to list_store output: list_store - The GtkListStore where the string was appended to returns: - description: This function appends string as a new row to list_store. */ { GtkTreeIter iter; gtk_list_store_append (list_store, &iter); gtk_list_store_set (list_store, &iter, FIRST_COLUMN, string, -1); } void treeview_create_list (GtkTreeView *treeview) /* Output: treeview - The GtkTreeView to make a list of Description: This function makes a list of treeview. That means treeview will have one treeview column which contains text. */ { GtkListStore *list_store; GtkTreeViewColumn *column; GtkCellRenderer *renderer; column = gtk_tree_view_column_new(); /* pack tree view column into tree view */ gtk_tree_view_append_column (treeview, column); renderer = gtk_cell_renderer_text_new(); /* pack cell renderer into tree view column */ gtk_tree_view_column_pack_start (column, renderer, TRUE); /* connect 'text' property of the cell renderer to * model column that contains the text */ gtk_tree_view_column_add_attribute (column, renderer, "text", FIRST_COLUMN); list_store = gtk_list_store_new(ONE_COLUMN, G_TYPE_STRING); gtk_tree_view_set_model (treeview, GTK_TREE_MODEL(list_store)); g_object_unref (list_store); } void reload_key_treeview ( KTKeyList *list, GtkWidget *this_widget ) { KTKey *key; GtkTreeView *tree_view; GtkListStore *list_store; tree_view = GTK_TREE_VIEW( lookup_widget(this_widget, "key_treeview") ); list_store = GTK_LIST_STORE( gtk_tree_view_get_model(tree_view) ); gtk_list_store_clear (list_store);/* Clear the whole treeview */ /* Fill the treeview */ for (key = KTKeyList_head(list); key; key = key->next) { /* Add a new row to the model */ list_store_append_string (list_store, KTKey_get_name(key)); } } void tree_view_add_new_text_column ( GtkTreeView *tree_view, char *column_title, int column_pos ) /* Input: column_title - The title of the new column column_pos - The position of the new column Output: tree_view - The tree view to add the new text column to Returns: - Description: This function adds a new text column to tree_view at the position column_pos. */ { GtkTreeViewColumn *column; GtkCellRenderer *renderer; column = gtk_tree_view_column_new(); gtk_tree_view_column_set_title (column, column_title); /* pack tree view column into tree view */ gtk_tree_view_append_column (tree_view, column); renderer = gtk_cell_renderer_text_new(); /* pack cell renderer into tree view column */ gtk_tree_view_column_pack_start (column, renderer, TRUE); /* connect 'text' property of the cell renderer to * model column that contains the text */ gtk_tree_view_column_add_attribute (column, renderer, "text", column_pos); } void init_evdev_treeview (GtkTreeView *treeview) /* Output: treeview - Will have a "Device", "Device name" and a "Bus" column Description: This function makes a list of treeview with three columns: "Device", "Device name" and a "Bus". Only one row in this list can be selected. */ { GtkTreeSelection *selection; GtkListStore *list_store; selection = gtk_tree_view_get_selection( GTK_TREE_VIEW(treeview) ); gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE); /************ Create the model ************/ /* The last column with be 'invisible' and is a pointer to the corresponding EVDEV_DEVICE structure. */ list_store = gtk_list_store_new(NUM_COLS_EVDEV_TREEVIEW, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER); gtk_tree_view_set_model (treeview, GTK_TREE_MODEL(list_store)); g_object_unref (list_store); /************ Create the view ************/ tree_view_add_new_text_column (treeview, _("Device"), COL_EVDEV_FILE_NAME); tree_view_add_new_text_column (treeview, _("Device name"), COL_EVDEV_DEVICE_NAME); tree_view_add_new_text_column (treeview, _("Bus"), COL_EVDEV_BUS); } GtkWidget *show_selectkb_window (EVDEV_LIST *evdev_list, Boolean acpi_usable ) /* Input: evdev_list - List containing information about all event devices acpi_usable - Indicates if an entry for the ACPI device should be add to the keyboard_treeview Returns: The address of the created window Description: This function creates and initializes the keyboard_treeview in the selectkb_window and fills it with the following information about the event devices in evdev_list: device (file name), device name and bus. If 'acpi_usable' is TRUE then an entry for the ACPI device will be added to the end of the keyboard_treeview. */ { EVDEV_LIST_ENTRY *entry; GtkTreeView *treeview; GtkListStore *list_store; GtkTreeIter iter; GtkWidget *window; window = create_selectkb_window(); treeview = GTK_TREE_VIEW(lookup_widget(window, "keyboard_treeview")); init_evdev_treeview (treeview); list_store = GTK_LIST_STORE( gtk_tree_view_get_model(treeview) ); gtk_list_store_clear (list_store); /* Clear the whole treeview */ /* Fill the treeview */ for (entry = evdev_list->head; entry; entry = entry->next) { /* Add a new row to the model */ gtk_list_store_append (list_store, &iter); gtk_list_store_set ( list_store, &iter, COL_EVDEV_FILE_NAME, evdev_file_name(entry->evdev), COL_EVDEV_DEVICE_NAME, evdev_device_name(entry->evdev), COL_EVDEV_BUS, evdev_bus_string(entry->evdev), COL_EVDEV_STRUCT, entry->evdev, -1 ); } if (acpi_usable) { gtk_list_store_append (list_store, &iter); gtk_list_store_set ( list_store, &iter, COL_EVDEV_FILE_NAME, ACPI_EVDEV_FILE_NAME, COL_EVDEV_DEVICE_NAME, ACPI_DEVICE_NAME, COL_EVDEV_BUS, ACPI_BUS_NAME, COL_EVDEV_STRUCT, NULL, -1 ); } gtk_widget_show (window); return window; } GtkWidget *show_main_window (MainWindowGUI_type *main_window_gui) /* Output: main_window_gui - Will be intialised with pointers to the created widgets Returns: The address of the main window. Description: This function creates the main window and shows it. */ { GtkWidget *window; int index; main_window_gui->main_window = create_main_window(); window = main_window_gui->main_window; /* main_window_gui->keycode_combobox = GTK_COMBO_BOX(lookup_widget(window, "keycode_combobox")); */ #define _gui_init_widget(widget_name, type) (main_window_gui->widget_name = type(lookup_widget(window, #widget_name))) _gui_init_widget (keycode_combobox, GTK_COMBO_BOX); _gui_init_widget (scancode_event_descr_label, GTK_LABEL); _gui_init_widget (manufacturer_entry, GTK_ENTRY); _gui_init_widget (model_entry, GTK_ENTRY); _gui_init_widget (key_name_entry, GTK_ENTRY); _gui_init_widget (scancode_entry, GTK_ENTRY); _gui_init_widget (usbcode_entry, GTK_ENTRY); _gui_init_widget (program_entry, GTK_ENTRY); _gui_init_widget (plugin_function_comboentry, GTK_ENTRY); _gui_init_widget (plugin_comboentry, GTK_ENTRY); _gui_init_widget (program_radiobutton, GTK_RADIO_BUTTON); _gui_init_widget (special_action_radiobutton, GTK_RADIO_BUTTON); _gui_init_widget (key_treeview, GTK_TREE_VIEW); _gui_init_widget (keycode_combobox, GTK_COMBO_BOX); _gui_init_widget (usbcode_change_button, GTK_BUTTON); _gui_init_widget (scancode_change_button, GTK_BUTTON); for (index = 0; visible_keycodes[index]; index++) { gtk_combo_box_append_text (main_window_gui->keycode_combobox, keycode2string(visible_keycodes[index])); } reload_plugin_list (window, plugin_list, NUM_PLUGINS); /* main_window_gui->key_treeview = GTK_TREE_VIEW(lookup_widget(window, "key_treeview")); */ treeview_create_list (main_window_gui->key_treeview); /* Set the signal handler */ gtk_tree_selection_set_select_function (gtk_tree_view_get_selection(main_window_gui->key_treeview), on_key_treeview_selection, NULL, NULL); gtk_widget_show (window); return window; } keytouch-editor-3.2.0-beta/src/set_data.h0000640000175000017500000000422210662077347017652 0ustar marvinmarvin/*--------------------------------------------------------------------------------- Name : set_data.h Author : Marvin Raaijmakers Description : Header file for set_data.c Date of last change: 15-Mar-2006 History : Copyright (C) 2006 Marvin Raaijmakers 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; either version 2 of the License, or any later version. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. You can contact me at: marvinr(at)users(dot)sf(dot)net (replace (at) by @ and (dot) by .) -----------------------------------------------------------------------------------*/ #ifndef _SET_DATA_H #define _SET_DATA_H #include #include #include #include #define GTK_ALIGN_LEFT (0) #define GTK_ALIGN_CENTER (0.5) #define ONE_COLUMN (1) #define FIRST_COLUMN (0) #define SORTID_FIRSTCOL (0) enum { COL_EVDEV_FILE_NAME, COL_EVDEV_DEVICE_NAME, COL_EVDEV_BUS, COL_EVDEV_STRUCT, NUM_COLS_EVDEV_TREEVIEW }; extern void msg_box (gchar *message, GtkMessageType msg_type); extern void gui_error_handler (const char *msg); extern GtkWidget *show_selectkb_window (EVDEV_LIST *evdev_list, Boolean acpi_usable); extern GtkWidget *show_main_window (MainWindowGUI_type *main_window_gui); extern void clear_key_settings_frame (GtkWidget *this_widget); extern void reload_plugin_function_list (GtkWidget *this_widget, KTPlugin *plugin); extern void reload_plugin_list (GtkWidget *this_widget, const KTPlugin plugin_list[], int num_plugins); extern void reload_key_treeview (KTKeyList *list, GtkWidget *this_widget); #endif keytouch-editor-3.2.0-beta/src/evdev.c0000640000175000017500000001416010767266051017172 0ustar marvinmarvin/*--------------------------------------------------------------------------------- Name : evdev.c Author : Marvin Raaijmakers Description : Provides functions to related to the evdev module Date of last change: 16-Mar-2008 History : 16-Mar-2008 Added clear_evdev_list() 24-Jun-2007 Compiler warnings fixes 13-Mar-2006 Wrote load_evdev_module() Copyright (C) 2006-2008 Marvin Raaijmakers 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; either version 2 of the License, or any later version. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. You can contact me at: marvinr(at)users(dot)sf(dot)net (replace (at) by @ and (dot) by .) -----------------------------------------------------------------------------------*/ #define _GNU_SOURCE #include #include #include #include #include #include #include #include static int always_true (const struct dirent *file); static EVENT_DEVICE *create_event_device (const char *dir, const char *file_name); int always_true (const struct dirent *file) { return (TRUE); } EVENT_DEVICE *create_event_device ( const char *dir, const char *file_name ) /* Input: dir - The directory where the event device is located in file_name - The file name of the event device Returns: A new EVENT_DEVICE or NULL if reading the device failed. Description: This function reads information from the event device, named file_name and located in dir, creates a new EVENT_DEVICE and fills in the members of it with the readen information. */ { char *complete_file_name; int event_device; EVENT_DEVICE *evdev; int version; unsigned short id[4]; char name[256] = "Unknown"; if (asprintf(&complete_file_name, "%s/%s", dir, file_name) == -1) { KTError (_("Could not allocate memory."), ""); exit (EXIT_FAILURE); } event_device = open(complete_file_name, O_RDONLY); /* If opening the event device failed */ if (event_device < 0) { free (complete_file_name); return NULL; } /* Get the driver version */ if (ioctl(event_device, EVIOCGVERSION, &version)) { free (complete_file_name); close (event_device); return NULL; } /* Get the id's */ ioctl (event_device, EVIOCGID, id); /* Get the device name */ ioctl (event_device, EVIOCGNAME(sizeof(name)), name); evdev = keytouch_malloc (sizeof(EVENT_DEVICE)); evdev->file_name = keytouch_strdup (file_name); evdev->complete_file_name = complete_file_name; evdev->driver_version = version; evdev->bus_id = id[ID_BUS]; evdev->vendor_id = id[ID_VENDOR]; evdev->product_id = id[ID_PRODUCT]; evdev->version_id = id[ID_VERSION]; evdev->device_name = keytouch_strdup(name); close (event_device); return evdev; } void clear_evdev_list (EVDEV_LIST *evdev_list) /* Input: evdev_list Output: evdev_list - All elements are removed from the list and the allocated memory of these elements is freed. */ { EVDEV_LIST_ENTRY *next, *entry; entry = evdev_list->head; while (entry) { next = entry->next; free (entry->evdev->file_name); free (entry->evdev->complete_file_name); free (entry->evdev->device_name); free (entry->evdev); free (entry); entry = next; } evdev_list->head = evdev_list->tail = NULL; } Boolean read_evdev_list (EVDEV_LIST *evdev_list, char *dir ) /* Input: dir - The path where the event devices are located in Output: evdev_list - The list containing all readen devices returns: TRUE if the devices where successfully read, otherwise FALSE. description: This function reads information about all event devices in dir and puts it in evdev_list. */ { struct dirent **file_list; int num_files, count; EVENT_DEVICE *new_evdev; EVDEV_LIST_ENTRY *entry; evdev_list->head = evdev_list->tail = NULL; num_files = scandir (dir, &file_list, always_true, alphasort); if (num_files >= 0) { for (count = 0; count < num_files; count++) { new_evdev = create_event_device(dir, file_list[count]->d_name); if (new_evdev) { entry = keytouch_malloc(sizeof(EVDEV_LIST_ENTRY)); entry->evdev = new_evdev; entry->next = NULL; if (evdev_list->head) { evdev_list->tail->next = entry; evdev_list->tail = entry; } else { evdev_list->head = evdev_list->tail = entry; } } free (file_list[count]); } free (file_list); } return (num_files >= 0 && evdev_list->head); } char *load_evdev_module (void) /* Returns: NULL if evdev was successfully loaded, otherwise the address of the error message will be returned. The error message will be the first line of the output of "modprobe evdev" and should be freed with if it is no longer needed. Description: This function runs "modprobe evdev 2>&1" and returns an error message if modprobe failed. */ { FILE *modprobe; char output_buffer[100], *error = NULL; Boolean output_available; modprobe = popen ("modprobe evdev 2>&1", "r"); if (modprobe) { if (!feof( modprobe )) { output_available = (Boolean) fgets (output_buffer, 99, modprobe); } else { output_available = FALSE; } if (pclose( modprobe)) { if (output_available) { error = strdup (output_buffer); } else { error = strdup (_("Unknown reason")); } if (error == NULL) { KTError (_("Could not allocate memory."), ""); exit (EXIT_FAILURE); } } } else { error = strdup ("see output on stderr"); if (error == NULL) { KTError (_("Could not allocate memory."), ""); exit (EXIT_FAILURE); } perror ("keytouch-editor"); } return error; } keytouch-editor-3.2.0-beta/src/error.c0000641000175000017500000000607110637531557017217 0ustar marvinmarvin/*--------------------------------------------------------------------------------- Name : error.c Author : Marvin Raaijmakers Description : Shows an error message to the user Date of last change: 24-Jun-2007 History : 24-Jun-2007 Compiler warnings fixes 01-Jul-2006 Added KTSetErrorMsg() and KTGetErrorMsg() 25-Jan-2006 Added KTSetErrorHandler() and modified KTError() so that it calls (*error_handler)() Copyright (C) 2005-2007 Marvin Raaijmakers 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; either version 2 of the License, or any later version. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. You can contact me at: marvinr(at)users(dot)sf(dot)net (replace (at) by @ and (dot) by .) -----------------------------------------------------------------------------------*/ #define _GNU_SOURCE #include #include #include static char *error_msg = NULL; static void (*error_handler)(const char*) = NULL; void KTError (char *msg, char *str) { gchar *error_message; fprintf (stderr, "keytouch-editor: "); fprintf (stderr, msg, str); putc ('\n', stderr); /* Create the error message */ if (error_handler && asprintf (&error_message, msg, str) != -1) { (*error_handler) (error_message); free (error_message); /* Free the allocated memory for the error message */ } } void KTSetErrorHandler (void (*handler)(const char*)) { error_handler = handler; } void KTSetErrorMsg (char *msg, char *str) /* Input: msg - The error message to store. str - If 'msg' contains "%s", "%s" will be replaced by 'str'. Global output: error_msg - A copy of the string constructed using 'msg' and 'str'. Description: This function lets 'error_msg' point to a copy of the string constructed using 'msg' and 'str'. If 'error_msg' does not point to NULL, this function will free the memory pointed to by 'error_msg'. The value of 'error_msg' can be retrieved by calling KTGetErrorMsg(). */ { if (error_msg) { free (error_msg); } if (asprintf (&error_msg, msg, str) == -1) { fprintf (stderr, "keytouch-editor: Did not have enough memory for " "copying the following error message:\n "); fprintf (stderr, msg, str); putc ('\n', stderr); error_msg = NULL; } } char *KTGetErrorMsg (void) /* Global input: error_msg - This pointer will be returned Returns: The error message that was contructed by the latest KTSetErrorMsg() call. */ { return error_msg; } keytouch-editor-3.2.0-beta/src/memory.c0000641000175000017500000000370610451462721017366 0ustar marvinmarvin/*--------------------------------------------------------------------------------- Name : memory.c Author : Marvin Raaijmakers Description : Allocates memory Date of last change: 30-Jun-2006 History : 30-Jun-2006 Added keytouch_strdup() Copyright (C) 2005-2006 Marvin Raaijmakers 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; either version 2 of the License, or any later version. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. You can contact me at: marvinr(at)users(dot)sf(dot)net (replace (at) by @ and (dot) by .) -----------------------------------------------------------------------------------*/ #include #include #include void *keytouch_malloc (size_t size) /* Description: Does the same like malloc() accept that it shows an error message and exits the program if the memory allocation failed. */ { void *ptr; ptr = malloc(size); if (ptr == NULL) { KTError (_("Could not allocate memory."), ""); exit (EXIT_FAILURE); } return ptr; } char *keytouch_strdup (const char *s) /* Description: Does the same like strdup() accept that it shows an error message and exits the program if the memory allocation failed. */ { char *string; string = strdup (s); if (string == NULL) { KTError (_("Could not allocate memory."), ""); exit (EXIT_FAILURE); } return string; } keytouch-editor-3.2.0-beta/src/keytouch-editor.h0000761000175000017500000002003310665027203021174 0ustar marvinmarvin/*--------------------------------------------------------------------------------- Name : keytouch-editor.h Author : Marvin Raaijmakers Description : Main header file of keytouch-editor Date of last change: 22-Aug-2007 History : 24-Jun-2007 Compiler warnings fixes Copyright (C) 2006-2007 Marvin Raaijmakers 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; either version 2 of the License, or any later version. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. You can contact me at: marvinr(at)users(dot)sf(dot)net (replace (at) by @ and (dot) by .) -----------------------------------------------------------------------------------*/ #ifndef _KEYTOUH_EDITOR_H #define _KEYTOUH_EDITOR_H #ifdef XmlGetContentType #define _BOOL_DEF #endif #include #include #ifndef _BOOL_DEF #define _BOOL_DEF typedef int Boolean; #define TRUE 1 #define FALSE 0 #endif #define EQUAL (0) #ifdef HAVE_CONFIG_H # include #endif #ifndef _ # ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (PACKAGE, String) # define Q_(String) g_strip_context ((String), gettext (String)) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif # else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define Q_(String) g_strip_context ((String), (String)) # define N_(String) (String) # endif #endif #define KBFILE_EMAIL_ADDRESS "marvin.nospam@gmail.com" typedef struct { char *name; unsigned int num_functions; char **function; } KTPlugin; typedef enum { KTActionTypeProgram, KTActionTypePlugin, NUM_KTActionType } KTActionType; typedef struct { KTActionType type; char *command; } KTActionProgram; typedef struct { KTActionType type; char *plugin_name, *function_name; } KTActionPlugin; typedef union { KTActionType type; KTActionProgram program; KTActionPlugin plugin; } KTAction; typedef struct { int keycode, scancode; } KTKeycodeScancode; typedef struct _kt_key { char *name, *acpi_event_descr; int scancode, /* The scancode of the key that is sent by the keyboard (0 if not used) */ usagecode, /* The 'scancode' of the key, when connected via USB (0 if not used) */ keycode; /* The Linux kernel keycode of the key */ KTAction default_action; struct _kt_key *next; } KTKey; typedef struct { KTKey *head, *tail; } KTKeyList; typedef struct { char *name; KTAction action; } KTKeyDefaults; #define KTKeyList_head(_list) ((_list)->head) #define KTKeyList_tail(_list) ((_list)->tail) #define KTKey_get_name(_key) ((_key)->name) /*#define KTKey_get_keycode_index(_key) ((_key)->keycode_index) #define KTKey_set_keycode_index(_key, _index) ((_key)->keycode_index = (_index))*/ #define KTKey_get_keycode(_key) ((_key)->keycode) #define KTKey_set_keycode(_key, _keycode) ((_key)->keycode = (_keycode)) #define KTKey_get_scancode(_key) ((_key)->scancode) #define KTKey_get_usagecode(_key) ((_key)->usagecode) #define KTKey_get_acpi_event_descr(_key) ((_key)->acpi_event_descr) #define KTKey_get_action_type(_key) ((_key)->default_action.type) #define KTKey_get_action_command(_key) ((_key)->default_action.program.command) #define KTKey_get_plugin_name(_key) ((_key)->default_action.plugin.plugin_name) #define KTKey_get_plugin_function_name(_key) ((_key)->default_action.plugin.function_name) #define KTPlugin_get_name(_plugin) ((_plugin).name) #define index2keycode_string(_i) (kernel_keycode_to_string( visible_keycodes[(_i)]] )) #define keycode2string(_keycode) (kernel_keycode_to_string((_keycode)) ? : "") #define NUM_PLUGINS 11 #define SYNTAX_VERSION "1.2" /* The syntax version of the file this program produces */ #define DATE_FORMAT "%d-%m-%Y" #define MAX_SCANCODE_LEN 64 #define MAX_USBCODE_LEN 64 #define MAX_DATE_LEN 99 #define ACPI_EVDEV_FILE_NAME "" #define ACPI_DEVICE_NAME "ACPI device" #define ACPI_BUS_NAME "ACPI" /**** Global variables ****/ extern EVENT_DEVICE *current_evdev; extern Boolean use_acpi_dev, acpi_usable; extern const unsigned visible_keycodes[]; /* List of all available keycodes (in keycodes.c) in the GUI list */ extern const KTKeyDefaults key_defaults[KEY_MAX + 1]; /* The defaults for a keycode */ extern const KTPlugin plugin_list[NUM_PLUGINS]; extern EVDEV_LIST evdev_list; extern KTKeyList key_list; extern KTKey *selected_key; extern Boolean file_modified; /* Indicates if the currently opend file was modified */ extern char *current_filename; /* The name if the currently opened file * (= NULL if no name is defined yet) */ extern int usb_vendor_id, usb_product_id; /* The hostnames of the SMTP servers that can be used for * sending the keyboard file: */ extern const char *smtp_hostnames[]; /******* Functions in error.c *******/ extern void KTError (char *msg, char *str); extern void KTSetErrorHandler (void (*handler)(const char*)); extern void KTSetErrorMsg (char *msg, char *str); extern char *KTGetErrorMsg (void); /******* Functions in memory.c *******/ extern void *keytouch_malloc (size_t size); extern char *keytouch_strdup (const char *s); /******* Functions in get_scancode.c *******/ extern Boolean get_keycode_scancode (char *evdev_filename, char *msg, KTKeycodeScancode *keycode_scancode); extern char *get_acpi_event_descr (char *msg); /******* Functions in key_list.c *******/ extern void KTKeyList_init (KTKeyList *list); extern void KTKeyList_clear (KTKeyList *list); extern KTKey *KTKeyList_find_key (const KTKeyList *list, const char *name); extern void KTKeyList_append (KTKeyList *list, KTKey *key); extern void KTKeyList_remove_key (KTKeyList *list, KTKey *key); extern Boolean KTKeyList_contains_usb_key (KTKeyList *list); extern void KTKey_set_program (KTKey *key, const char *command); extern void KTKey_set_plugin (KTKey *key, const char *plugin, const char *function); extern void KTKey_set_name (KTKey *key, const char *name); extern void KTKey_set_scancode (KTKey *key, int scancode); extern void KTKey_set_usagecode (KTKey *key, int usagecode); extern void KTKey_set_acpi_event_descr (KTKey *key, char *acpi_event_descr); extern void KTKey_delete (KTKey *key); extern void KTKey_free_default_action (KTKey *key); extern KTKey *KTKey_new (const char *name, int scancode, int usagecode, int keycode, char *acpi_event_descr); /******* Functions in keycodes.c *******/ extern unsigned int string2keycode (const char *keycode_str); extern int string2keycode_index (const char *keycode_str); extern int keycode2index (unsigned int keycode); /******* Functions in config.c *******/ extern Boolean read_keyboard_file (KTKeyList *key_list, char **manufacturer, char **model, int *usb_vendor_id, int *usb_product_id, char *file_name); extern Boolean keyboard_file_is_valid (char *file_name); extern Boolean write_keyboard_file (char *manufacturer, char *model, KTKeyList *key_list, int usb_vendor_id, int usb_product_id, char *author, char *filename); /******* Functions in plugins.c *******/ extern KTPlugin *find_plugin (char *name, const KTPlugin list[], unsigned int list_size); #endif keytouch-editor-3.2.0-beta/src/get_scancode.c0000640000175000017500000002176510663060471020501 0ustar marvinmarvin/*---------------------------------------------------------------------------------- Name : getscancode.c Author : Marvin Raaijmakers Description : For getting a scancode and/or keycode from an event device Date of last change: 22-Aug-2007 History : 22-Aug-2007 poll_keycode_scancode(): device now MUST report a scancode 24-Jun-2007 Compiler warnings fixes 30-Aug-2006 Added poll_event_descr() and get_acpi_event_descr() 27-Apr-2006 poll_keycode_scancode() will return TRUE when no scancode and keycode were received or when a mouse button was clicked 05-Apr-2006 The functions now also wait for a possible keycode Copyright (C) 2006-2007 Marvin Raaijmakers 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; either version 2 of the License, or any later version. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. You can contact me at: marvinr(at)users(dot)sf(dot)net (replace (at) by @ and (dot) by .) ------------------------------------------------------------------------------------*/ #include #include #include #include #include #include #include #include #include "interface.h" #include "support.h" #include #include #include #include #include static gboolean poll_keycode_scancode (POLL_SCANCODE_STRUCT *poll) /* Input: poll->fd - Contains the file descriptor to the event device Output: poll->keycode_scancode - The scancode member will be the received scancode and/or the keycode member will be the received keycode. Returns: FALSE if data was read from the event device and this data contains information about a key press, otherwise TRUE. Description: This function waits EVDEV_TIMEOUT microseconds for data from the event device. If the data contains a scancode poll->keycode_scancode->scancode will be equal to it, otherwise poll->keycode_scancode->scancode will remain unchanged. If the data contains a keycode poll->keycode_scancode->keycode will be equal to it, otherwise poll->keycode_scancode->keycode will remain unchanged. */ { fd_set set; struct timeval timeout; int readen_size, i, select_returnval; struct input_event ev[64]; /* Event list */ /* Initialize the file descriptor set. */ FD_ZERO (&set); FD_SET (poll->fd, &set); /* Initialize the timeout data structure. */ timeout.tv_sec = 0; timeout.tv_usec = EVDEV_TIMEOUT; /* Wait until there is data available on poll->fd and stop * waiting after EVDEV_TIMEOUT microseconds */ select_returnval = select (FD_SETSIZE, &set, NULL, NULL, &timeout); /* If there is data available */ if (select_returnval == 1) { /* Read the data */ readen_size = read (poll->fd, ev, sizeof(struct input_event) * 64); if (readen_size < (int) sizeof(struct input_event)) { KTError (_("Failed to read events."), ""); } else { /* Read the events and stop after a key event (if there is one in the event list). */ for (i = 0; i < readen_size / sizeof(struct input_event); i++) { /* If we receive a sync event */ if (ev[i].type == EV_SYN) { break; } /* If the event contains a scancode */ else if (ev[i].type == EV_MSC && (ev[i].code == MSC_RAW || ev[i].code == MSC_SCAN)) { poll->keycode_scancode->scancode = ev[i].value; } /* If the event contains a keycode */ else if (ev[i].type == EV_KEY) { poll->keycode_scancode->keycode = ev[i].code; } } /* If the key has no scancode */ if (!poll->keycode_scancode->scancode) { poll->keycode_scancode->keycode = 0; /*KTError (_("The event device did not report a scancode."), "");*/ return TRUE; } } gtk_main_quit(); return FALSE; } /* If there is no data */ else { return TRUE; } } Boolean get_keycode_scancode ( char *evdev_filename, char *msg, KTKeycodeScancode *keycode_scancode ) /* Input: evdev_filename - The filename of the evdev device to listen for a scancode msg - The message to display while while waiting for a scancode Output: keycode_scancode - The scancode member will be the received scancode or 0 if no scancode was received. The keycode member will be the received keycode or 0 if no keycode was received. Returns: TRUE if a keycode and/or scancode was retrieved, otherwise FALSE. Description: This function creates a dialog with a "Cancel" button, displays the text of pointed to by 'msg' and wait for a scancode and/or keycode from the event device whos filename is 'evdev_filename'. If the user clicks the "Cancel" button or the device could not be opened or did not send a scancode or keycode, this function will return 0. If the device did not send a keycode or scancode following error message will be shown: "The event device did not report a scancode or keycode." */ { POLL_SCANCODE_STRUCT poll; GtkWidget *dialog; guint poll_tag; keycode_scancode->keycode = 0; keycode_scancode->scancode = 0; poll.keycode_scancode = keycode_scancode; /* If opening the event device failed */ if ((poll.fd = open( evdev_filename, O_RDONLY )) < 0) { KTError (_("Could not open event device '%s'."), evdev_filename); } else { dialog = GTK_WIDGET( create_get_scancode_dialog() ); /* Set the text to show */ gtk_label_set_text (GTK_LABEL(lookup_widget(dialog, "msg_label")), msg); gtk_widget_show (dialog); /* Poll every POLL_INTERVAL milisecond for a scancode and/or keycode */ poll_tag = g_timeout_add (POLL_INTERVAL, (GSourceFunc) poll_keycode_scancode, &poll); gtk_main (); gtk_widget_destroy (dialog); /* Stop polling */ g_source_remove (poll_tag); close (poll.fd); } return (keycode_scancode->scancode || keycode_scancode->keycode); } static gboolean poll_event_descr (POLL_EVENT_DESCR_STRUCT *poll) /* Input: poll->fd - Contains the file descriptor to the event device Output: poll->event_descr - Will point to new allocated memory that contains the readen event description, or to NULL if no event description was read. Returns: FALSE if data was read from the ACPI socket file, otherwise TRUE. Description: This function waits EVDEV_TIMEOUT microseconds for data from the ACPI socket file. */ { fd_set set; struct timeval timeout; int select_returnval; /* Initialize the file descriptor set. */ FD_ZERO (&set); FD_SET (poll->fd, &set); /* Initialize the timeout data structure. */ timeout.tv_sec = 0; timeout.tv_usec = EVDEV_TIMEOUT; /* Wait until there is data available on poll->fd and stop * waiting after EVDEV_TIMEOUT microseconds */ select_returnval = select (FD_SETSIZE, &set, NULL, NULL, &timeout); /* If there is data available */ if (select_returnval == 1) { /* Read the data */ poll->event_descr = keytouch_strdup (read_eventdescr (poll->fd)); gtk_main_quit(); return FALSE; } /* If there is no data */ else { return TRUE; } } char *get_acpi_event_descr (char *msg) /* Input: msg - The message to display while while waiting for a event description Returns: NULL if no event description was read. If an event description was read then a address to this event description will be returned. If the memory pointed to by this address is no longer needed, it should be freed. Description: This function creates a dialog with a "Cancel" button, displays the text of pointed to by 'msg' and wait for an event description from the ACPI socket. If the user clicks the "Cancel" button or the device could not be opened or did not send a event description, this function will return NULL. */ { POLL_EVENT_DESCR_STRUCT poll; GtkWidget *dialog; guint poll_tag; poll.event_descr = NULL; /* If opening the event device failed */ if ((poll.fd = ud_connect (ACPI_SOCKETFILE)) < 0) { KTError (_("Could not open ACPI socket file '%s'."), ACPI_SOCKETFILE); } else { dialog = GTK_WIDGET( create_get_scancode_dialog() ); /* Set the text to show */ gtk_label_set_text (GTK_LABEL(lookup_widget(dialog, "msg_label")), msg); gtk_widget_show (dialog); /* Poll every POLL_INTERVAL milisecond for a scancode and/or keycode */ poll_tag = g_timeout_add (POLL_INTERVAL, (GSourceFunc) poll_event_descr, &poll); gtk_main (); gtk_widget_destroy (dialog); /* Stop polling */ g_source_remove (poll_tag); close (poll.fd); } return poll.event_descr; } keytouch-editor-3.2.0-beta/src/keycodes.c0000640000175000017500000001224110637531064017660 0ustar marvinmarvin/*--------------------------------------------------------------------------------- Name : keycodes.c Author : Marvin Raaijmakers Description : Contains an array of all keycodes and a function to find a keycode in the array. Date of last change: 24-Jun-2007 History : 24-Jun-2007 Removed KEY_BASSBOOST from visible_keycodes[], because it was also removed from the key_name[] array in string_to_keycode.c 01-Jul-2006 - Removed array keycode_string[], because kernel_keycode_to_string() in string_to_keycode.h will now be used. - Added to visible_keycodes: KEY_NEW, KEY_REDO, KEY_SEND, KEY_REPLY, KEY_FORWARDMAIL, KEY_SAVE, KEY_DOCUMENTS 05-Apr-2006 Changed array of "strings" keycode[] to an array of keycodes (unsigned ints) visible_keycodes[]. Copyright (C) 2006-2007 Marvin Raaijmakers 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; either version 2 of the License, or any later version. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. You can contact me at: marvinr(at)users(dot)sf(dot)net (replace (at) by @ and (dot) by .) -----------------------------------------------------------------------------------*/ #include #include #include const unsigned int visible_keycodes[] = { KEY_AGAIN, KEY_ALTERASE, KEY_BACK, KEY_BOOKMARKS, KEY_BRIGHTNESSDOWN, KEY_BRIGHTNESSUP, KEY_CALC, KEY_CAMERA, KEY_CANCEL, KEY_CHAT, KEY_CLOSE, KEY_CLOSECD, KEY_COFFEE, KEY_COMPOSE, KEY_COMPUTER, KEY_CONFIG, KEY_CONNECT, KEY_COPY, KEY_CUT, KEY_CYCLEWINDOWS, KEY_DELETEFILE, KEY_DIRECTION, KEY_DOCUMENTS, KEY_EDIT, KEY_EJECTCD, KEY_EJECTCLOSECD, KEY_EMAIL, KEY_EXIT, KEY_FASTFORWARD, KEY_FILE, KEY_FINANCE, KEY_FIND, KEY_FORWARD, KEY_FORWARDMAIL, KEY_FRONT, KEY_HANGUEL, KEY_HANJA, KEY_HELP, KEY_HOMEPAGE, KEY_HP, KEY_ISO, KEY_KBDILLUMDOWN, KEY_KBDILLUMTOGGLE, KEY_KBDILLUMUP, KEY_KPCOMMA, KEY_KPEQUAL, KEY_KPLEFTPAREN, KEY_KPPLUSMINUS, KEY_KPRIGHTPAREN, KEY_LEFTMETA, KEY_MACRO, KEY_MAIL, KEY_MEDIA, KEY_MENU, KEY_MOVE, KEY_MSDOS, KEY_MUTE, KEY_NEW, KEY_NEXTSONG, KEY_OPEN, KEY_PASTE, KEY_PAUSE, KEY_PAUSECD, KEY_PHONE, KEY_PLAY, KEY_PLAYCD, KEY_PLAYPAUSE, KEY_POWER, KEY_PREVIOUSSONG, KEY_PRINT, KEY_PROG1, KEY_PROG2, KEY_PROG3, KEY_PROG4, KEY_PROPS, KEY_QUESTION, KEY_RECORD, KEY_REDO, KEY_REFRESH, KEY_REPLY, KEY_REWIND, KEY_RIGHTMETA, KEY_SAVE, KEY_SCROLLDOWN, KEY_SCROLLUP, KEY_SEARCH, KEY_SEND, KEY_SENDFILE, KEY_SETUP, KEY_SHOP, KEY_SLEEP, KEY_SOUND, KEY_SPORT, KEY_STOP, KEY_STOPCD, KEY_SUSPEND, KEY_SWITCHVIDEOMODE, KEY_UNDO, KEY_VOLUMEDOWN, KEY_VOLUMEUP, KEY_WAKEUP, KEY_WWW, KEY_XFER, KEY_YEN, 0 }; unsigned int string2keycode (const char *keycode_str) /* Input: keycode_str - The keycode string to find Global: visible_keycodes Returns: The keycode of that belongs to the keycode string 'keycode_str'. If no such keycode exists, 0 will be returned. */ { int keycode; for (keycode = 1; keycode < KEY_MAX; keycode++) { if (kernel_keycode_to_string( keycode ) && !strcmp(kernel_keycode_to_string( keycode ), keycode_str)) { return (keycode); } } return 0; } int string2keycode_index (const char *keycode_str) /* Input: keycode_str - The keycode to find Global: visible_keycodes Returns: The index in the visible_keycodes array of the keycode whose string is equal to 'keycode_str'. -1 will be returned if no keycode string equal to 'keycode_str' exists. */ { int index; for (index = 0; visible_keycodes[index] && (kernel_keycode_to_string( visible_keycodes[index] ) == NULL || strcmp(kernel_keycode_to_string( visible_keycodes[index] ), keycode_str)); index++) ; /* NULL Statement */ if (kernel_keycode_to_string( visible_keycodes[index] )) { return index; } return -1; } int keycode2index (unsigned int keycode) /* Input: keycode - The keycode to find Global: visible_keycodes - The array to search through for the keycode Returns: The index of the entry in the visible_keycodes array whose keycode is equal to 'keycode'. -1 is returned if no such entry exists. */ { int index; if (keycode) { for (index = 0; visible_keycodes[index] && visible_keycodes[index] != keycode; index++) ; /* NULL Statement */ if (visible_keycodes[index] == keycode) { return index; } } return -1; } keytouch-editor-3.2.0-beta/src/key_list.c0000640000175000017500000002014210664036571017677 0ustar marvinmarvin/*----------------------------------------------------------------------------------- Name : key_list.c Author : Marvin Raaijmakers Description : Provides functions for the KTKey and KTKeyList type Date of last change: 22-Aug-2007 History : 22-Aug-2007 Added support for USB keys 30-Aug-2006 Added code for new acpi_event_descr member of KTKey 07-Apr-2006 Added keycode parameter to KTKey_new() Copyright (C) 2006-2007 Marvin Raaijmakers 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; either version 2 of the License, or any later version. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. You can contact me at: marvinr(at)users(dot)sf(dot)net (replace (at) by @ and (dot) by .) -------------------------------------------------------------------------------------*/ #include #include #include void KTKeyList_init (KTKeyList *list) /* Output: list - Will be initialized */ { list->head = list->tail = NULL; } void KTKeyList_clear (KTKeyList *list) /* Output: list - Will be empty Description: All elements in 'list' will be deleted. */ { KTKey *next_key; list->head = list->tail = NULL; while (list->head) { next_key = list->head->next; KTKey_delete (list->head); list->head = next_key; } list->tail = NULL; } KTKey *KTKeyList_find_key ( const KTKeyList *list, const char *name ) /* Input: list - The list to search in for the key name - The name of the key to search for Returns: The address of the KTKey in 'list' with name 'name'. NULL will be returned if no such key appears in 'list'. */ { KTKey *key; for (key = list->head; key != NULL && strcmp(key->name, name) != EQUAL; key = key->next) ; /* NULL Statement */ return (key); } void KTKeyList_append ( KTKeyList *list, KTKey *key ) /* Input: key - The address of the KTKey to append to list Output: list - The KTKey will be appended to this list Description: This functions appends the key pointed to by 'key' to 'list'. */ { if (list->head) { list->tail->next = key; } else { list->head = key; } list->tail = key; } void KTKeyList_remove_key ( KTKeyList *list, KTKey *key ) /* Input: list - The list to remove the KTKey from key - The address of the key to remove Output: list - 'key' will be removed from it Description: This functions frees the KTKey pointed to by 'key' and removes it from 'list'. Note that the KTKey to remove MUST appear in 'list'. */ { KTKey *predecessor; if (list->head == key) /* If key appears at the beginning of list */ { list->head = key->next; if (list->head == NULL) { list->tail = NULL; } } else { /* Unfortunately we will have to walk trough the linked list to * find the predecessor of key */ for (predecessor = list->head; predecessor->next != key; predecessor = predecessor->next) ; /* NULL Statement */ predecessor->next = key->next; if (predecessor->next == NULL) { list->tail = predecessor; } } KTKey_delete (key); } Boolean KTKeyList_contains_usb_key (KTKeyList *list) /* Input: list - The list to search through Returns: TRUE if there is a key in 'list' that has a non-zero 'usagecode' member. */ { KTKey *key; for (key = list->head; key; key = key->next) { if (key->usagecode) { return TRUE; } } return FALSE; } void KTKey_free_default_action (KTKey *key) /* Input: key - The address of the KTKey to free the default action of Description: See the code */ { if (key->default_action.type == KTActionTypeProgram) { free (key->default_action.program.command); } else if (key->default_action.type == KTActionTypePlugin) { free (key->default_action.plugin.plugin_name); free (key->default_action.plugin.function_name); } } KTKey *KTKey_new (const char *name, int scancode, int usagecode, int keycode, char *acpi_event_descr ) /* Input: name - The name of the KTKey to create scancode - The scancode to assign to the new KTKey usagecode - The usagecode to assign to the new KTKey keycode - The keycode to assign to the new KTKey acpi_event_descr - The ACPI event description to assign to the new KTKey. It must point to NULL or an allocated string containing the event description. Returns: The address of the created KTKey. Description: This function creates a new KTKey with initialized with name, keycode, scancode and, acpi_event_descr. The default action will be a program with command "". */ { KTKey *new_key; new_key = keytouch_malloc(sizeof(KTKey)); new_key->name = strdup(name); new_key->scancode = scancode; new_key->usagecode = usagecode; new_key->keycode = keycode; new_key->default_action.type = KTActionTypeProgram; new_key->default_action.program.command = strdup (""); new_key->acpi_event_descr = acpi_event_descr; new_key->next = NULL; if (new_key->name == NULL || new_key->default_action.program.command == NULL) { KTError (_("Could not allocate memory."), ""); exit (EXIT_FAILURE); } return (new_key); } void KTKey_delete (KTKey *key) /* Input: key - The address of the key to remove Description: This function frees the KTKey pointed to by 'key'. */ { free (key->name); KTKey_free_default_action (key); if (key->acpi_event_descr) { free (key->acpi_event_descr); } free (key); } void KTKey_set_name ( KTKey *key, const char *name ) /* Input: name - The new name of the key Output: key - The key containing the new name Description: This function copies 'name' to the name element of 'key'. */ { free (key->name); key->name = strdup(name); if (key->name == NULL) { KTError (_("Could not allocate memory."), ""); exit (EXIT_FAILURE); } } void KTKey_set_program ( KTKey *key, const char *command ) /* Input: command - The command of the program Output: key - The default action will be changed to KTActionTypeProgram with 'command' as the command. */ { KTKey_free_default_action (key); key->default_action.type = KTActionTypeProgram; key->default_action.program.command = strdup (command); if (key->default_action.program.command == NULL) { KTError (_("Could not allocate memory."), ""); exit (EXIT_FAILURE); } } void KTKey_set_plugin ( KTKey *key, const char *plugin, const char *function ) /* Input: plugin - The name of the plugin function - The name of the plugin function Output: key - The default action will be changed to KTActionTypePlugin with plugin name 'plugin' and function name 'function' */ { KTKey_free_default_action (key); key->default_action.type = KTActionTypePlugin; key->default_action.plugin.plugin_name = strdup (plugin); key->default_action.plugin.function_name = strdup (function); if (key->default_action.plugin.plugin_name == NULL || key->default_action.plugin.function_name == NULL) { KTError (_("Could not allocate memory."), ""); exit (EXIT_FAILURE); } } void KTKey_set_scancode (KTKey *key, int scancode ) { key->scancode = scancode; key->acpi_event_descr = NULL; if (key->acpi_event_descr) { free (key->acpi_event_descr); } } void KTKey_set_usagecode (KTKey *key, int usagecode ) { key->usagecode = usagecode; key->acpi_event_descr = NULL; if (key->acpi_event_descr) { free (key->acpi_event_descr); } } void KTKey_set_acpi_event_descr ( KTKey *key, char *acpi_event_descr ) { if (key->acpi_event_descr) { free (key->acpi_event_descr); } key->scancode = 0; key->usagecode = 0; key->acpi_event_descr = acpi_event_descr; } keytouch-editor-3.2.0-beta/src/config.c0000641000175000017500000007753510665036577017353 0ustar marvinmarvin/*---------------------------------------------------------------------------------- Name : config.c Author : Marvin Raaijmakers Description : Reads and writes the keyboard files Date of last change: 25-Aug-2007 History : 25-Aug-2007 Added support for syntax version 1.2 24-Jun-2007 Compiler warnings fixes ??-Sep-2006 Added support for ACPI hotkeys 01-Jul-2006 Added keyboard_file_is_valid() Copyright (C) 2005-2007 Marvin Raaijmakers 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; either version 2 of the License, or any later version. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. You can contact me at: marvinr(at)users(dot)sf(dot)net (replace (at) by @ and (dot) by .) ------------------------------------------------------------------------------------*/ #include #include #include #include #include #include #include #include #include #include static KTAction read_action ( XmlContent *action_element, XmlElementType *pluginname_type, XmlElementType *pluginfunction_type, XmlAttributeName *action_type_attrname ); static KTKey *read_key_settings ( XmlContent *keylist_element, int index, XmlElementType *key_type, XmlElementType *keyname_type, XmlElementType *default_action_type, XmlElementType *keycode_type, XmlElementType *scancode_type, XmlElementType *usbcode_type, XmlElementType *event_descr_type, XmlElementType *pluginname_type, XmlElementType *pluginfunction_type, XmlAttributeName *action_type_attrname, XmlAttributeName *key_type_attrname ); static void xml_add_string_element ( XmlContent *parent, XmlElementType *element_type, const char *string ); static void add_file_info ( char *author, XmlContent *keyboard_element, XmlDocument *document); static void add_keyboard_info (char *manufacturer, char *model, XmlContent *keyboard_element, KTKeyList *key_list, int usb_vendor_id, int usb_product_id, XmlDocument *document); static void add_key_list ( KTKeyList *key_list, XmlContent *keyboard_element, XmlDocument *document ); static Boolean read_keyboard_info (XmlContent *keyboard_element, XmlDocument *document, char **manufacturer, char **model, int *usb_vendor_id, int *usb_product_id); /*********** The read part: ***********/ KTAction read_action ( XmlContent *action_element, XmlElementType *pluginname_type, XmlElementType *pluginfunction_type, XmlAttributeName *action_type_attrname ) /* Input: action_element - The element to read from. pluginname_type - The XmlElementType for the plugin-name element pluginfunction_type - The XmlElementType for the plugin-function element action_type_attrname - The XmlElementName for the action-type attribute Output: - Returns: The readen action. Desciption: This function reads the KTAction from action_element and returns it. */ { XmlContent *pluginname_element, *pluginfunction_element; char *action_type_argument, *plugin_name, *plugin_function; KTAction action; /* Get the type of the action */ action_type_argument = XmlGetAttributeValue (action_type_attrname, action_element); /* If it is a program */ if (action_type_argument == NULL || strcmp(action_type_argument, ATTR_VAL_PROGRAM) == EQUAL) { action.type = KTActionTypeProgram; action.program.command = XmlGetElementString(action_element, ""); } /* If it is a plugin */ else if (strcmp(action_type_argument, ATTR_VAL_PLUGIN) == EQUAL) { action.type = KTActionTypePlugin; if ((pluginname_element = XmlGetElementOfType(XmlElementContentList(action_element), pluginname_type, 0)) == NULL || (pluginfunction_element = XmlGetElementOfType(XmlElementContentList(action_element), pluginfunction_type, 0)) == NULL) { KTError (_("The keyboard file contains an invalid action element."), ""); action.type = KTActionTypeProgram; action.program.command = keytouch_strdup (""); } else { plugin_name = XmlGetElementString(pluginname_element, ""); plugin_function = XmlGetElementString(pluginfunction_element, ""); action.plugin.plugin_name = plugin_name; action.plugin.function_name = plugin_function; } } else { KTError (_("The keyboard file contains " "an invalid action-type value."), ""); action.type = KTActionTypeProgram; action.program.command = keytouch_strdup (""); } return (action); } KTKey *read_key_settings ( XmlContent *keylist_element, int index, XmlElementType *key_type, XmlElementType *keyname_type, XmlElementType *default_action_type, XmlElementType *keycode_type, XmlElementType *scancode_type, XmlElementType *usbcode_type, XmlElementType *event_descr_type, XmlElementType *pluginname_type, XmlElementType *pluginfunction_type, XmlAttributeName *action_type_attrname, XmlAttributeName *key_type_attrname ) /* Input: keylist_element - The element to read from. index - Read the index'th key element key_type - The XmlElementType for the key element keyname_type - The XmlElementType for the key-name element keycode_type - The XmlElementType for the keycode element scancode_type - The XmlElementType for the scancode element usbcode_type - The XmlElementType for the usb-code element event_descr_type - The XmlElementType for the event-descr element default_action_type - The XmlElementType for the default-action element pluginname_type - The XmlElementType for the plugin-name element pluginfunction_type - The XmlElementType for the plugin-function element action_type_attrname - The XmlAttributeName for the action-type attribute key_type_attrname - The XmlAttributeName for the key-type attribute Output: - Returns: A pointer to the new KTKey if it was read, otherwise NULL. Desciption: This function reads the key_name and default_action member from the index'th key element that is a child of keylist_element. */ { XmlContent *key_element, *keycode_element, *scancode_element, *usbcode_element, *event_descr_element, *keyname_element, *default_action_element; char *tmp_string, *key_type_string, *key_name, *acpi_event_descr; int scancode, usagecode, keycode; KTKey *key; key_element = XmlGetElementOfType(XmlElementContentList(keylist_element), key_type, index); if (key_element == NULL) { return (NULL); } if ((keyname_element = XmlGetElementOfType(XmlElementContentList(key_element), keyname_type, 0)) == NULL || (keycode_element = XmlGetElementOfType(XmlElementContentList(key_element), keycode_type, 0)) == NULL || (default_action_element = XmlGetElementOfType(XmlElementContentList(key_element), default_action_type, 0)) == NULL) { KTError (_("The keyboard file contains an incomplete key element."), ""); return (NULL); } /* Read the key name */ key_name = XmlGetElementString(keyname_element, ""); /* Read the keycode... */ tmp_string = XmlGetElementString(keycode_element, ""); /* ... and convert it a real (= unsigned int) keycode */ keycode = string2keycode(tmp_string); XmlFree (tmp_string); key_type_string = XmlGetAttributeValue(key_type_attrname, key_element); if (key_type_string && !strcmp (key_type_string, ATTR_VAL_ACPIHOTKEY) && (event_descr_element = XmlGetElementOfType(XmlElementContentList(key_element), event_descr_type, 0)) != NULL) { acpi_event_descr = XmlGetElementString (event_descr_element, ""); scancode = 0; usagecode = 0; } else { acpi_event_descr = NULL; scancode_element = XmlGetElementOfType(XmlElementContentList(key_element), scancode_type, 0); if (scancode_element != NULL) { /* Read the scancode... */ tmp_string = XmlGetElementString(scancode_element, ""); /* ... and convert it to an integer */ scancode = atoi(tmp_string); XmlFree (tmp_string); } else { scancode = 0; } usbcode_element = XmlGetElementOfType(XmlElementContentList(key_element), usbcode_type, 0); if (usbcode_element != NULL) { /* Read the usage code... */ tmp_string = XmlGetElementString(usbcode_element, ""); /* ... and convert it to an integer */ usagecode = strtol(tmp_string, NULL, 0); XmlFree (tmp_string); } else { usagecode = 0; } if (usbcode_element == NULL && scancode_element == NULL) { KTError (_("The keyboard file contains an incomplete key element."), ""); XmlFree (key_name); return (NULL); } } key = KTKey_new (key_name, scancode, usagecode, keycode, acpi_event_descr); XmlFree (key_name); KTKey_free_default_action (key); /* Read the default action */ key->default_action = read_action (default_action_element, pluginname_type, pluginfunction_type, action_type_attrname); return (key); } Boolean read_keyboard_info (XmlContent *keyboard_element, XmlDocument *document, char **manufacturer, char **model, int *usb_vendor_id, int *usb_product_id) /* Input: keyboard_element - The element that to read the keyboard-info element from document - This must be the document 'keyboard_element' is in Output: manufacturer - The manufacturer name that was read model - The model name that was read usb_vendor_id - The USB vendor ID if it was read usb_product_id - The USB product ID if it was read Returns: TRUE if the keyboard name was succesfully read, otherwise FALSE. Description: This function reads the name of the keyboard from 'keyboard_element' and puts it in 'manufacturer' and 'model'. If available in 'keyboard_element' then the values for 'usb_vendor_id' and 'usb_product_id' will also be read. */ { XmlElementType *keyboard_name_type, *keyboard_info_type, *usb_info_type, *model_type, *manufacturer_type, *vendor_id_type, *product_id_type; XmlContent *keyboard_name_element, *keyboard_info_element, *usb_info_element, *model_element, *manufacturer_element, *vendor_id_element, *product_id_element; char *tmp_string; if ((keyboard_info_type = XmlGetElementType(ELEM_TYPE_KEYBOARDINFO, document, FALSE)) == NULL || (keyboard_name_type = XmlGetElementType(ELEM_TYPE_KEYBOARDNAME, document, FALSE)) == NULL || (model_type = XmlGetElementType(ELEM_TYPE_MODEL, document, FALSE)) == NULL || (manufacturer_type = XmlGetElementType(ELEM_TYPE_MANUFACTURER, document, FALSE)) == NULL) { return (FALSE); } if ((keyboard_info_element = XmlGetElementOfType(XmlElementContentList(keyboard_element), keyboard_info_type, 0)) == NULL || (keyboard_name_element = XmlGetElementOfType(XmlElementContentList(keyboard_info_element), keyboard_name_type, 0)) == NULL || (model_element = XmlGetElementOfType(XmlElementContentList(keyboard_name_element), model_type, 0)) == NULL || (manufacturer_element = XmlGetElementOfType(XmlElementContentList(keyboard_name_element), manufacturer_type, 0)) == NULL) { return (FALSE); } *model = XmlGetElementString (model_element, ""); *manufacturer = XmlGetElementString (manufacturer_element, ""); /** Read the usb-info element **/ usb_info_type = XmlGetElementType(ELEM_TYPE_USBINFO, document, TRUE); usb_info_element = XmlGetElementOfType(XmlElementContentList(keyboard_info_element), usb_info_type, 0); if (usb_info_element) { vendor_id_type = XmlGetElementType(ELEM_TYPE_VENDORID, document, TRUE); product_id_type = XmlGetElementType(ELEM_TYPE_PRODUCTID, document, TRUE); vendor_id_element = XmlGetElementOfType(XmlElementContentList(usb_info_element), vendor_id_type, 0); product_id_element = XmlGetElementOfType(XmlElementContentList(usb_info_element), product_id_type, 0); if (vendor_id_element && product_id_element) { tmp_string = XmlGetElementString (vendor_id_element, ""); *usb_vendor_id = strtol (tmp_string, NULL, 0); XmlFree (tmp_string); tmp_string = XmlGetElementString (product_id_element, ""); *usb_product_id = strtol (tmp_string, NULL, 0); XmlFree (tmp_string); } } return (TRUE); } Boolean read_keyboard_file (KTKeyList *key_list, char **manufacturer, char **model, int *usb_vendor_id, int *usb_product_id, char *file_name) /* Input: file_name - The name of the keyboard file to read from Output: key_list - List containing information for every key manufacturer - model - usb_vendor_id - If the keyboard file contains one usb_product_id - If the keyboard file contains one Returns: TRUE if the file was successfully read, otherwise FALSE. Desciption: This function reads the keyboard file, named file_name, which means that it creates for every special function key an entry in key_list and fills in the following elements: - name - keycode - scancode - usagecode - default action */ { XmlDocument *document; XmlContent *keyboard_element, *keylist_element; XmlElementType *keyboard_type, *keylist_type, *key_type, *keyname_type, *default_action_type, *scancode_type, *usbcode_type, *keycode_type, *pluginname_type, *pluginfunction_type, *event_descr_type; XmlAttributeName *action_type_attrname, *key_type_attrname; KTKey *key; int count; document = XmlParseDocument(file_name); if (document == NULL) { KTError (_("'%s' is an invalid keyboard file."), file_name); return FALSE; } keyboard_type = XmlGetElementType(ELEM_TYPE_KEYBOARD, document, FALSE); if (keyboard_type == NULL || (keyboard_element = XmlGetElementOfType(XmlDocumentContentList(document), keyboard_type, 0)) == NULL) { KTError (_("The keyboard file '%s' does not contain a keyboard element."), file_name); XmlFreeDocument (document); return FALSE; } keylist_type = XmlGetElementType(ELEM_TYPE_KEYLIST, document, FALSE); if (keylist_type == NULL || (keylist_element = XmlGetElementOfType(XmlElementContentList(keyboard_element), keylist_type, 0)) == NULL) { KTError (_("The keyboard file '%s' does not contain a key-list element."), file_name); XmlFreeDocument (document); return FALSE; } if ((key_type = XmlGetElementType(ELEM_TYPE_KEY, document, FALSE)) == NULL || (default_action_type = XmlGetElementType(ELEM_TYPE_DEFAULTACTION, document, FALSE)) == NULL || (keyname_type = XmlGetElementType(ELEM_TYPE_KEYNAME, document, FALSE)) == NULL || (keycode_type = XmlGetElementType(ELEM_TYPE_KEYCODE, document, FALSE)) == NULL) { KTError (_("The keyboard file '%s' is invalid."), file_name); XmlFreeDocument (document); return FALSE; } scancode_type = XmlGetElementType(ELEM_TYPE_SCANCODE, document, TRUE); usbcode_type = XmlGetElementType(ELEM_TYPE_USBCODE, document, TRUE); event_descr_type = XmlGetElementType(ELEM_TYPE_ACPI_EVENT_DESCR, document, TRUE); action_type_attrname = XmlGetAttributeName(ATTR_NAME_ACTIONTYPE, document, TRUE); key_type_attrname = XmlGetAttributeName(ATTR_NAME_KEYTYPE, document, TRUE); /* Create the element types "plugin-name" and "plugin-function" if they * do not appear in the document, because these element do not necessary * appear in the document */ pluginname_type = XmlGetElementType(ELEM_TYPE_PLUGINNAME, document, TRUE); pluginfunction_type = XmlGetElementType(ELEM_TYPE_PLUGINFUNCTION, document, TRUE); /* If reading the keyboard name failed */ if (read_keyboard_info (keyboard_element, document, manufacturer, model, usb_vendor_id, usb_product_id) == FALSE) { KTError (_("Failed to read the keyboard name from %s."), file_name); XmlFreeDocument (document); return FALSE; } /* Now read the key settings list */ KTKeyList_head(key_list) = read_key_settings(keylist_element, 0, key_type, keyname_type, default_action_type, keycode_type, scancode_type, usbcode_type, event_descr_type, pluginname_type, pluginfunction_type, action_type_attrname, key_type_attrname); KTKeyList_tail(key_list) = KTKeyList_head(key_list); key = KTKeyList_head(key_list); for (count = 1; key != NULL; count++) { key = read_key_settings(keylist_element, count, key_type, keyname_type, default_action_type, keycode_type, scancode_type, usbcode_type, event_descr_type, pluginname_type, pluginfunction_type, action_type_attrname, key_type_attrname); KTKeyList_tail(key_list)->next = key; if (key != NULL) { KTKeyList_tail(key_list) = key; } } XmlFreeDocument (document); return TRUE; } /*********** The write part: ***********/ void xml_add_string_element ( XmlContent *parent, XmlElementType *element_type, const char *string ) /* Input: element_type - The type of the new element string - The string the new element will contain Output: parent - The parent element where the new element will be add to Returns: - Description: This functions creates a new element of type element_type and adds it to parent. The new element will contain the string 'string'. */ { XmlContent *new_element, *xml_string; new_element = XmlCreateElement(element_type, FALSE); XmlContentAppend (new_element, XmlElementContentList(parent)); xml_string = XmlCreateContent(XmlCType_String); XmlStringSetString (xml_string, (char *) string); XmlContentAppend (xml_string, XmlElementContentList(new_element)); } void add_file_info ( char *author, XmlContent *keyboard_element, XmlDocument *document) /* Input: author - The author of the keyboard file keyboard_element - The file-info element will be add to this element. document - The document that contains keyboard_element. Output: keyboard_element - The file-info element will be add to this element. document - The document that contains keyboard_element. New element types and attribute names will be add to this document. Returns: - Description: This functions creates a file-info element and adds it to keyboard_element. The file-info element will contain the following sub-elements: - syntax-version: Contains the SYNTAX_VERSION. - last-change: Contains todays date. - author: Will contain the contents of 'author'. */ { XmlContent *file_info_element, *last_change_element, *last_change_string; XmlElementType *element_type; char date[MAX_DATE_LEN+1]; time_t current_time; element_type = XmlGetElementType(ELEM_TYPE_FILEINFO, document, TRUE); file_info_element = XmlCreateElement(element_type, FALSE); XmlContentAppend (file_info_element, XmlElementContentList(keyboard_element)); /** Create the syntax-version element containing SYNTAX_VERSION and add it to ** the file info element **/ xml_add_string_element (file_info_element, XmlGetElementType(ELEM_TYPE_SYNTAXVERSION, document, TRUE), SYNTAX_VERSION); /** Create the last change element and add it to the file info element **/ element_type = XmlGetElementType(ELEM_TYPE_LASTCHANGE, document, TRUE); last_change_element = XmlCreateElement(element_type, FALSE); XmlContentAppend (last_change_element, XmlElementContentList(file_info_element)); /** Get the current time, convert it to a string and put it in date **/ time (¤t_time); strftime (date, MAX_DATE_LEN, DATE_FORMAT, localtime(¤t_time)); /* Create the XmlContent string that will contain date */ last_change_string = XmlCreateContent(XmlCType_String); /* Let last_change_string contain date */ XmlStringSetString (last_change_string, date); /* Add last_change_string to last_change_element */ XmlContentAppend (last_change_string, XmlElementContentList(last_change_element)); /* Set the date format we used */ XmlSetAttributeValue ( XmlGetAttributeName (ATTR_NAME_FORMAT, document, TRUE), DATE_FORMAT, last_change_element ); /** Create an author element, in the file info element, containing the 'author' ** string. **/ xml_add_string_element (file_info_element, XmlGetElementType(ELEM_TYPE_AUTHOR, document, TRUE), author); } void add_keyboard_info (char *manufacturer, char *model, XmlContent *keyboard_element, KTKeyList *key_list, int usb_vendor_id, int usb_product_id, XmlDocument *document) /* Input: manufacturer - The keyboard manufacturer model - The keyboard model keyboard_element - The keyboard-info element will be add to this element. document - The document that contains keyboard_element. key_list - The list of keys that will be written to the document Output: keyboard_element - The keyboard-info element will be add to this element. document - The document that contains keyboard_element. New element types and attribute names will be add to this document. Returns: - Description: This functions creates a keyboard-info element and adds it to keyboard_element. The keyboard-info element contains a keyboard-name sub- element which contains the following sub elements: - manufacturer: Will contain the value of 'manufacturer'. - model: Will contain the value of 'model'. If 'key_list' contains at least 1 key with an usage code, then an usb-info element will be added to the keyboard-info element. The usb-info element will have two sub elements: - vendor-id: Will contain a hexadecimal representation (preceded by "0x" of 'usb_vendor_id'. - product-id: Will contain a hexadecimal representation (preceded by "0x" of 'usb_product_id'. */ { XmlContent *keyboard_info_element, *keyboard_name_element, *usb_info_element; XmlElementType *element_type; char str_usb_id[64]; element_type = XmlGetElementType(ELEM_TYPE_KEYBOARDINFO, document, TRUE); keyboard_info_element = XmlCreateElement(element_type, FALSE); XmlContentAppend (keyboard_info_element, XmlElementContentList(keyboard_element)); element_type = XmlGetElementType(ELEM_TYPE_KEYBOARDNAME, document, TRUE); keyboard_name_element = XmlCreateElement(element_type, FALSE); XmlContentAppend (keyboard_name_element, XmlElementContentList(keyboard_info_element)); xml_add_string_element (keyboard_name_element, XmlGetElementType(ELEM_TYPE_MANUFACTURER, document, TRUE), manufacturer); xml_add_string_element (keyboard_name_element, XmlGetElementType(ELEM_TYPE_MODEL, document, TRUE), model); if (KTKeyList_contains_usb_key (key_list)) { element_type = XmlGetElementType(ELEM_TYPE_USBINFO, document, TRUE); usb_info_element = XmlCreateElement(element_type, FALSE); XmlContentAppend (usb_info_element, XmlElementContentList(keyboard_info_element)); snprintf (str_usb_id, sizeof(str_usb_id), "0x%x", usb_vendor_id); str_usb_id[sizeof(str_usb_id)-1] = '\0'; xml_add_string_element (usb_info_element, XmlGetElementType(ELEM_TYPE_VENDORID, document, TRUE), str_usb_id); snprintf (str_usb_id, sizeof(str_usb_id), "0x%x", usb_product_id); str_usb_id[sizeof(str_usb_id)-1] = '\0'; xml_add_string_element (usb_info_element, XmlGetElementType(ELEM_TYPE_PRODUCTID, document, TRUE), str_usb_id); } } void add_key_list ( KTKeyList *key_list, XmlContent *keyboard_element, XmlDocument *document ) /* Input: key_list - The list containg information for every extra function key. keyboard_element - The key list will be added to this element document - The document containing keyboard_element Output: keyboard_element - The key list will be added to this element document - The document containing keyboard_element and after calling this function the key list. Returns: - Description: This function creates a key list that will be added to keyboard_element. The list will contain the information of 'key_list'. */ { XmlContent *key_list_element, *key_element, *default_action_element; XmlElementType *key_list_etype, *key_etype, *scancode_etype, *usbcode_etype, *keycode_etype, *key_name_etype, *default_action_etype, *plugin_name_etype, *plugin_function_etype, *event_descr_etype; XmlAttributeName *action_type_attrname, *key_type_attrname; char scancode_string[MAX_SCANCODE_LEN+1], usbcode_string[MAX_USBCODE_LEN+1], *acpi_event_descr; int scancode, usagecode; KTKey *key; key_list_etype = XmlGetElementType(ELEM_TYPE_KEYLIST, document, TRUE); key_list_element = XmlCreateElement(key_list_etype, FALSE); XmlContentAppend (key_list_element, XmlElementContentList(keyboard_element)); key_list_etype = XmlGetElementType(ELEM_TYPE_KEYLIST, document, TRUE); key_etype = XmlGetElementType(ELEM_TYPE_KEY, document, TRUE); scancode_etype = XmlGetElementType(ELEM_TYPE_SCANCODE, document, TRUE); usbcode_etype = XmlGetElementType(ELEM_TYPE_USBCODE, document, TRUE); keycode_etype = XmlGetElementType(ELEM_TYPE_KEYCODE, document, TRUE); key_name_etype = XmlGetElementType(ELEM_TYPE_KEYNAME, document, TRUE); default_action_etype = XmlGetElementType(ELEM_TYPE_DEFAULTACTION, document, TRUE); plugin_name_etype = XmlGetElementType(ELEM_TYPE_PLUGINNAME, document, TRUE); plugin_function_etype = XmlGetElementType(ELEM_TYPE_PLUGINFUNCTION, document, TRUE); event_descr_etype = XmlGetElementType(ELEM_TYPE_ACPI_EVENT_DESCR, document, TRUE); action_type_attrname = XmlGetAttributeName(ATTR_NAME_ACTIONTYPE, document, TRUE); key_type_attrname = XmlGetAttributeName(ATTR_NAME_KEYTYPE, document, TRUE); for (key = KTKeyList_head(key_list); key; key = key->next) { /* Create and append the key element */ key_element = XmlCreateElement(key_etype, FALSE); XmlContentAppend (key_element, XmlElementContentList(key_list_element)); /* Add the name element: */ xml_add_string_element (key_element, key_name_etype, KTKey_get_name(key)); acpi_event_descr = KTKey_get_acpi_event_descr (key); if (acpi_event_descr) { /* Set the key-type attibute of key_element to indicate that it contains an event-descr element instead of a keycode element: */ XmlSetAttributeValue (key_type_attrname, ATTR_VAL_ACPIHOTKEY, key_element); /* Add the event-descr element: */ xml_add_string_element (key_element, event_descr_etype, acpi_event_descr); } else { usagecode = KTKey_get_usagecode(key); scancode = KTKey_get_scancode(key); if (usagecode) { /* Convert the usage code to a string */ snprintf (usbcode_string, MAX_USBCODE_LEN+1, "0x%x", usagecode); usbcode_string[MAX_USBCODE_LEN] = '\0'; /* Add the USB code element: */ xml_add_string_element (key_element, usbcode_etype, usbcode_string); } if (scancode || (usagecode == 0 && scancode == 0)) { /* Convert the scancode to a string */ snprintf (scancode_string, MAX_SCANCODE_LEN+1, "%d", scancode); scancode_string[MAX_SCANCODE_LEN] = '\0'; /* Add the scancode element: */ xml_add_string_element (key_element, scancode_etype, scancode_string); } } /* Add the keycode element: */ xml_add_string_element (key_element, keycode_etype, KTKey_get_keycode(key) ? keycode2string( KTKey_get_keycode(key) ) : ""); if (KTKey_get_action_type(key) == KTActionTypePlugin) { default_action_element = XmlCreateElement(default_action_etype, FALSE); XmlSetAttributeValue (action_type_attrname, ATTR_VAL_PLUGIN, default_action_element); /* Add the default-action element: */ XmlContentAppend (default_action_element, XmlElementContentList(key_element)); /* Add the plugin element to the default-action element: */ xml_add_string_element (default_action_element, plugin_name_etype, KTKey_get_plugin_name(key)); /* Add the plugin function element to the default-action element: */ xml_add_string_element (default_action_element, plugin_function_etype, KTKey_get_plugin_function_name(key)); } else { /* Add the default-action element: */ xml_add_string_element (key_element, default_action_etype, KTKey_get_action_command(key)); } } } Boolean write_keyboard_file (char *manufacturer, char *model, KTKeyList *key_list, int usb_vendor_id, int usb_product_id, char *author, char *filename) /* Input: manufacturer - The keyboards manufacturer model - The keyboards model key_list - The list containing information for every extra function key usb_vendor_id - usb_product_id - author - The author of the keyboard file filename - The name of the keyboard file to write to Returns: TRUE if the keyboard file was successfully written, otherwise FALSE. Description: This function creates a keyboard file, named 'filename', which will contain the contents of 'manufacturer', 'model', 'key_list' and 'author'. */ { XmlDocument *document; XmlElementType *element_type; XmlContent *keyboard_element; Boolean return_val; document = XmlCreateDocument(); element_type = XmlGetElementType(ELEM_TYPE_KEYBOARD, document, TRUE); keyboard_element = XmlCreateElement(element_type, FALSE); XmlContentAppend (keyboard_element, XmlDocumentContentList(document)); /* Add the file-info element: */ add_file_info (author, keyboard_element, document); /* Add the keyboard-info element: */ add_keyboard_info (manufacturer, model, keyboard_element, key_list, usb_vendor_id, usb_product_id, document); /* Add the key-list element */ add_key_list (key_list, keyboard_element, document); return_val = XmlWriteDocument (document, filename); XmlFreeDocument (document); return return_val; } Boolean keyboard_file_is_valid (char *file_name) /* Input: file_name - The file name of the keyboard file to check Returns: TRUE if the keyboard file, named 'file_name', is a valid keyboard file, otherwise FALSE. If FALSE is returned, an explaination message can be retrieved by KTGetErrorMsg(). */ { XmlDocument *document; Boolean valid; document = XmlParseDocument (file_name); if (document) { valid = check_keyboard_file (document); XmlFreeDocument (document); } else { KTSetErrorMsg (_("'%s' is not a valid XML document."), file_name); valid = FALSE; } return valid; } keytouch-editor-3.2.0-beta/src/plugins.c0000640000175000017500000000670310637531745017547 0ustar marvinmarvin/*--------------------------------------------------------------------------------- Name : plugin.c Author : Marvin Raaijmakers Description : Contains a list of all plugins and a function to find the plugins. Date of last change: 24-Jun-2007 History : 24-Jun-2007 Compiler warnings fixes Copyright (C) 2006-2007 Marvin Raaijmakers 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; either version 2 of the License, or any later version. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. You can contact me at: marvinr(at)users(dot)sf(dot)net (replace (at) by @ and (dot) by .) -----------------------------------------------------------------------------------*/ #include #include #include char *amarok_plugin_functions[4] = {"Play/Pause", "Stop", "Previous", "Next"}; char *amixer_plugin_functions[3] = {"Volume increase", "Volume decrease", "Mute"}; char *chat_plugin_functions[1] = {"Chat"}; char *common_actions_plugin_functions[12] = {"Close/Quit", "New (file)", "Open", "Save", "Print", "Undo", "Redo", "Find", "Cut", "Copy", "Paste", "Select All"}; char *email_plugin_functions[5] = {"E-mail", "New mail message", "Send/Receive", "Reply", "Forward"}; char *filemanager_plugin_functions[6] = {"Filemanager", "Documents", "Reload", "Back", "Forward", "Parent directory"}; char *kde_sw_desktop_plugin_functions[6] = {"Next Desktop", "Previous Desktop", "Desktop 1", "Desktop 2", "Desktop 3", "Desktop 4"}; char *lock_screen_plugin_functions[1] = {"Lock Screen"}; char *scroll_plugin_functions[4] = {"Up", "Down", "Left", "Right"}; char *www_browser_plugin_functions[8] = {"Home", "Search", "Back", "Forward", "Reload", "Stop", "History", "Add Bookmark"}; char *xmms_plugin_functions[4] = {"Play/Pause", "Stop", "Previous", "Next"}; const KTPlugin plugin_list[NUM_PLUGINS] = { {"Amarok", 4, amarok_plugin_functions}, {"Amixer", 3, amixer_plugin_functions}, {"Chat", 1, chat_plugin_functions}, {"Common actions", 12, common_actions_plugin_functions}, {"E-mail", 5, email_plugin_functions}, {"Filemanager", 6, filemanager_plugin_functions}, {"KDE Switch Desktop", 6, kde_sw_desktop_plugin_functions}, {"Lock Screen", 1, lock_screen_plugin_functions}, {"Scroll", 4, scroll_plugin_functions}, {"WWW Browser", 8, www_browser_plugin_functions}, {"XMMS", 4, xmms_plugin_functions} }; KTPlugin *find_plugin ( char *name, const KTPlugin list[], unsigned int list_size ) /* Input: name - The name of the plugin to find list - The list to search in for the plugin list_size - The number of elements of 'list' Returns: The address of the KTPlugin in 'list', named 'name'. If no such plugin exists NULL is returned. */ { unsigned int i; for (i = 0; i < list_size; i++) { if (!strcmp (list[i].name, name)) { return (KTPlugin *) &(list[i]); } } return NULL; } keytouch-editor-3.2.0-beta/src/config_element_types.h0000640000175000017500000000620510664024755022270 0ustar marvinmarvin/*--------------------------------------------------------------------------------- Name : config_element_types.h Author : Marvin Raaijmakers Description : Contains all ellement types, attribute names and attribute values that appear in the (XML) configuration files. Date of last change: 25-Aug-2007 History : 25-Aug-2007 Added element types for syntax version 1.2 Copyright (C) 2005-2007 Marvin Raaijmakers 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; either version 2 of the License, or any later version. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. You can contact me at: marvinr(at)users(dot)sf(dot)net (replace (at) by @ and (dot) by .) -----------------------------------------------------------------------------------*/ #ifndef CONFIG_ELEMENT_TYPES_H #define CONFIG_ELEMENT_TYPES_H /* All used attribute names in the configuration files */ #define ATTR_NAME_ACTIONTYPE "action-type" #define ATTR_NAME_ISDEFAULT "isdefault" #define ATTR_NAME_FORMAT "format" #define ATTR_NAME_KEYTYPE "key-type" /* All used attribute values in the configuration files */ #define ATTR_VAL_PROGRAM "program" #define ATTR_VAL_PLUGIN "plugin" #define ATTR_VAL_ACPIHOTKEY "acpi-hotkey" /* All used element types in the configuration files */ #define ELEM_TYPE_KEYBOARD "keyboard" #define ELEM_TYPE_KEYLIST "key-list" #define ELEM_TYPE_DEFAULTACTION "default-action" #define ELEM_TYPE_KEY "key" #define ELEM_TYPE_KEYNAME "name" #define ELEM_TYPE_KEYCODE "keycode" #define ELEM_TYPE_SCANCODE "scancode" #define ELEM_TYPE_USBCODE "usb-code" #define ELEM_TYPE_PLUGINNAME "plugin-name" #define ELEM_TYPE_PLUGINFUNCTION "plugin-function" #define ELEM_TYPE_ACTION "action" #define ELEM_TYPE_PREFERENCES "preferences" #define ELEM_TYPE_DOCUMENTSDIR "documents-dir" #define ELEM_TYPE_HOMEPAGE "home-page" #define ELEM_TYPE_SEARCHPAGE "search-page" #define ELEM_TYPE_BROWSER "browser" #define ELEM_TYPE_EMAILPROG "email-program" #define ELEM_TYPE_CHATPROG "chat-program" #define ELEM_TYPE_CURRENTKEYBOARD "current-keyboard" #define ELEM_TYPE_MODEL "model" #define ELEM_TYPE_MANUFACTURER "manufacturer" #define ELEM_TYPE_KEYBOARDNAME "keyboard-name" #define ELEM_TYPE_KEYBOARDINFO "keyboard-info" #define ELEM_TYPE_FILEINFO "file-info" #define ELEM_TYPE_AUTHOR "author" #define ELEM_TYPE_SYNTAXVERSION "syntax-version" #define ELEM_TYPE_LASTCHANGE "last-change" #define ELEM_TYPE_ACPI_EVENT_DESCR "event-descr" #define ELEM_TYPE_USBINFO "usb-info" #define ELEM_TYPE_VENDORID "vendor-id" #define ELEM_TYPE_PRODUCTID "product-id" #endif keytouch-editor-3.2.0-beta/src/getscancode.h0000640000175000017500000000314210475305526020340 0ustar marvinmarvin/*--------------------------------------------------------------------------------- Name : getscancode.h Author : Marvin Raaijmakers Description : Header file for getscancode.c Date of last change: 05-Apr-2006 History : Copyright (C) 2006 Marvin Raaijmakers 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; either version 2 of the License, or any later version. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. You can contact me at: marvinr(at)users(dot)sf(dot)net (replace (at) by @ and (dot) by .) -----------------------------------------------------------------------------------*/ #ifndef _GETSCANCODE_H #define _GETSCANCODE_H #include #define POLL_INTERVAL 10 /* miliseconds*/ #define EVDEV_TIMEOUT 1000 /* # of microseconds to wait for input from the evdev file */ #define BTN_MIN 0x100 #define BTN_MAX 0x151 typedef struct { KTKeycodeScancode *keycode_scancode; int fd; } POLL_SCANCODE_STRUCT; typedef struct { char *event_descr; int fd; } POLL_EVENT_DESCR_STRUCT; #endif keytouch-editor-3.2.0-beta/src/email.c0000640000175000017500000001741410637531734017154 0ustar marvinmarvin/*--------------------------------------------------------------------------------- Name : email.c Author : Marvin Raaijmakers Description : For sending text files via e-mail Date of last change: 24-Jun-2007 History : 24-Jun-2007 Compiler warnings fixes 27-Apr-2006 init_sockaddr() does not exit the program when it fails, but returns FALSE instead 11-Mar-2006 Wrote this file Copyright (C) 2006-2007 Marvin Raaijmakers 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; either version 2 of the License, or any later version. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. You can contact me at: marvinr(at)users(dot)sf(dot)net (replace (at) by @ and (dot) by .) -----------------------------------------------------------------------------------*/ #include #include #include #include #include #include #include #include #include #include static Boolean init_sockaddr (struct sockaddr_in *name, const char *hostname, uint16_t port); static int smtp_get_reply (int sock); static Boolean smtp_send_string (int sock, char *string); static Boolean smtp_connect (char *hostname, int *sock); static Boolean copy_file_to_socket (char *filename, int sock); Boolean init_sockaddr ( struct sockaddr_in *name, const char *hostname, uint16_t port) /* Input: hostname - The host name to connect to port - The port to use for the connection Output: name - Will be initialized with the socket address for a connection to 'hostname' on port 'port'. Returns: TRUE if 'name' is successfully initialized, otherwise FALSE. */ { struct hostent *hostinfo; name->sin_family = AF_INET; name->sin_port = htons (port); hostinfo = gethostbyname (hostname); if (hostinfo == NULL) { fprintf (stderr, "Unknown host %s.\n", hostname); return FALSE; } name->sin_addr = *(struct in_addr *) hostinfo->h_addr; return TRUE; } int smtp_get_reply (int sock) /* Input: sock - Connection to the SMTP server Returns: The reply code received from the SMTP server and -1 on timeout. Description: This function reads the reply code from the SMTP server and returns it. This function will return -1 when nothing is received after SMTP_TIMEOUT seconds. */ { fd_set set; struct timeval timeout; int reply_code; char connection_buffer[100], *endptr; reply_code = -1; /* Initialize the file descriptor set. */ FD_ZERO (&set); FD_SET (sock, &set); /* Initialize the timeout data structure. */ timeout.tv_sec = SMTP_TIMEOUT; timeout.tv_usec = 0; /* Wait until there is data available on socket and stop * waiting after SMTP_TIMEOUT microseconds */ if (select (FD_SETSIZE, &set, NULL, NULL, &timeout) && /* If there is data available */ read (sock, connection_buffer, 99) ) /* If the data was successfully read */ { connection_buffer[99] = '\0'; reply_code = (int) strtol (connection_buffer, &endptr, 10); if (endptr == NULL) { reply_code = -1; } } return reply_code; } Boolean smtp_send_string ( int sock, char *string ) /* Input: sock - Connection to the SMTP server string - The string to send Returns: TRUE if the string was successfully sent, otherwise FALSE. Description: This function sends 'string' (without '\0' character) to sock. */ { if (write (sock, string, strlen(string)) < 0) { perror (__FUNCTION__); return FALSE; } return TRUE; } Boolean smtp_connect ( char *hostname, int *sock ) /* Input: hostname - The hostname of the SMTP server Output: sock - Will the contain the socket of the connection (if TRUE is returned) Returns: TRUE if the connection was successfully established, otherwise FALSE. Description: This function tries to connect to the SMTP server named 'hostname'. FALSE will be returned when connecting failed. Otherwise a HELO command will be sent to the server and TRUE will be returned if the server accepts the connection. */ { struct sockaddr_in address; Boolean connected = FALSE; /* Create the socket. */ *sock = socket (PF_INET, SOCK_STREAM, 0); if (*sock >= 0) { /* If a socket address has been made */ if (init_sockaddr (&address, hostname, SMTP_PORT)) { /* If de connection was successfully established */ connected = connect (*sock, (struct sockaddr *) &address, sizeof(address)) >= 0 && smtp_get_reply(*sock) == SMTP_REPLY_GREETING && smtp_send_string(*sock, "HELO bla\n") && smtp_get_reply(*sock) == SMTP_REPLY_OK; } else { connected = FALSE; } } return (connected); } Boolean copy_file_to_socket ( char *filename, int sock ) /* Input: filename - The file to read from Output: sock - The contents of file will be written to this socket. Returns: TRUE if the file was successfully copied, otherwise FALSE. Description: This function opens the file named 'filename' and reads it. The readen content will be written to 'sock'. */ { FILE *file; char c; file = fopen (filename, "r"); if (file == NULL) { return FALSE; } while ((c = getc(file)) != EOF) { if (write (sock, &c, 1) != 1) { return FALSE; } } return TRUE; } Boolean email_file ( char *to, char *from, char *subject, char *filename, const char *smtp_hostnames[] ) /* Input: to - The e-mail address to send the file to from - The sender e-mail address subject - The subject of the message filename - The name of the file that will be body of the message smtp_hostnames - An array of pointers to hostnames of SMTP servers. The last element in the array must point to NULL. Returns: TRUE (!= 0 actually) if the message was sent successfully, otherwise FALSE. Description: This function sends an e-mail to the e-mail address 'to'. The message will contain the contents of the file, name 'filename'. This function tries to send the message via the first hostname in smtp_hostnames. It tries every next hostname in the array until it finds one where it can successfully send to. */ { char **hostname; Boolean success; int sock; success = FALSE; /* Find an SMTP server where we can connect to: */ for (hostname = (char **) smtp_hostnames; *hostname; hostname++) { if (smtp_connect (*hostname, &sock)) /* If we are connected */ { success = smtp_send_string (sock, "MAIL FROM: <") && smtp_send_string (sock, from) && smtp_send_string (sock, ">\n") && smtp_get_reply (sock) == SMTP_REPLY_OK && smtp_send_string (sock, "RCPT TO: <") && smtp_send_string (sock, to) && smtp_send_string (sock, ">\n") && smtp_get_reply (sock) == SMTP_REPLY_OK && smtp_send_string (sock, "DATA\n") && smtp_get_reply (sock) == SMTP_REPLY_START_MAIL_INPUT && smtp_send_string (sock, "From: <") && smtp_send_string (sock, from) && smtp_send_string (sock, ">\n") && smtp_send_string (sock, "Subject: ") && smtp_send_string (sock, subject) && smtp_send_string (sock, "\n\n") && copy_file_to_socket (filename, sock) && smtp_send_string (sock, "\r\n.\r\n") && smtp_get_reply (sock) == SMTP_REPLY_OK && smtp_send_string (sock, "QUIT\n") && smtp_get_reply (sock) == SMTP_REPLY_GOODBYE; if (success) { break; } } } return success; } keytouch-editor-3.2.0-beta/src/email.h0000644000175000017500000000313510406054742017151 0ustar marvinmarvin/*--------------------------------------------------------------------------------- Name : email.h Author : Marvin Raaijmakers Description : Header file for email.c Date of last change: 15-Mar-2006 History : Copyright (C) 2006 Marvin Raaijmakers 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; either version 2 of the License, or any later version. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. You can contact me at: marvinr(at)users(dot)sf(dot)net (replace (at) by @ and (dot) by .) -----------------------------------------------------------------------------------*/ #ifndef _EMAIL_H #define _EMAIL_H #ifndef TRUE typedef int Boolean; # define TRUE 1 # define FALSE 0 #endif #define SMTP_TIMEOUT 4 #define SMTP_PORT 25 #define SMTP_REPLY_GREETING 220 #define SMTP_REPLY_GOODBYE 221 #define SMTP_REPLY_OK 250 #define SMTP_REPLY_START_MAIL_INPUT 354 extern Boolean email_file ( char *to, char *from, char *subject, char *filename, const char *smtp_hostnames[] ); #endif keytouch-editor-3.2.0-beta/src/default_key_settings.c0000644000175000017500000002050110451502066022262 0ustar marvinmarvin/*--------------------------------------------------------------------------------- Name : default_key_settings.c Author : Marvin Raaijmakers Description : Contains default names and actions for known keys with a keycode. Date of last change: 01-Jul-2006 History : 01-Jul-2006 Added defaults for keycodes KEY_NEW, KEY_REDO, KEY_SEND, KEY_REPLY, KEY_FORWARDMAIL, KEY_SAVE and KEY_DOCUMENTS 08-Apr-2006 Created this file Copyright (C) 2006 Marvin Raaijmakers 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; either version 2 of the License, or any later version. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. You can contact me at: marvinr(at)users(dot)sf(dot)net (replace (at) by @ and (dot) by .) -----------------------------------------------------------------------------------*/ #include #include const KTKeyDefaults key_defaults[KEY_MAX + 1] = { [0 ... KEY_MAX] = {.name = NULL}, [KEY_MUTE] = {"Mute", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "Amixer", .function_name = "Mute"}}}, [KEY_VOLUMEDOWN] = {"Volume Down", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "Amixer", .function_name = "Volume decrease"}}}, [KEY_VOLUMEUP] = {"Volume Up", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "Amixer", .function_name = "Volume increase"}}}, [KEY_POWER] = {"Power", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "Lock Screen", .function_name = "Lock Screen"}}}, [KEY_COMPOSE] = {"Compose", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "E-mail", .function_name = "New mail message"}}}, [KEY_STOP] = {"Stop", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "WWW Browser", .function_name = "Stop"}}}, [KEY_UNDO] = {"Undo", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "Common actions", .function_name = "Undo"}}}, [KEY_REDO] = {"Redo", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "Common actions", .function_name = "Redo"}}}, [KEY_COPY] = {"Copy", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "Common actions", .function_name = "Copy"}}}, [KEY_OPEN] = {"Open", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "Common actions", .function_name = "Open"}}}, [KEY_PASTE] = {"Paste", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "Common actions", .function_name = "Paste"}}}, [KEY_FIND] = {"Find", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "Common actions", .function_name = "Find"}}}, [KEY_CUT] = {"Cut", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "Common actions", .function_name = "Cut"}}}, [KEY_HELP] = {"Help", {.program = {.type = KTActionTypeProgram, .command = "khelpcenter || gnome-help"}}}, [KEY_CALC] = {"Help", {.program = {.type = KTActionTypeProgram, .command = "kcalc || gnome-calculator || xcalc"}}}, [KEY_SETUP] = {"Setup", {.program = {.type = KTActionTypeProgram, .command = "kcontrol || gnome-control-center"}}}, [KEY_SLEEP] = {"Sleep", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "Lock Screen", .function_name = "Lock Screen"}}}, [KEY_WAKEUP] = {"Wake up", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "Lock Screen", .function_name = "Lock Screen"}}}, [KEY_PROG1] = {"Prog 1", {.program = {.type = KTActionTypeProgram, .command = "keytouch"}}}, [KEY_PROG2] = {"Prog 2", {.program = {.type = KTActionTypeProgram, .command = "keytouch"}}}, [KEY_WWW] = {"WWW", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "WWW Browser", .function_name = "Home"}}}, [KEY_MAIL] = {"Mail", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "E-mail", .function_name = "E-mail"}}}, [KEY_BOOKMARKS] = {"Favorites", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "WWW Browser", .function_name = "Add Bookmark"}}}, [KEY_COMPUTER] = {"Computer", {.program = {.type = KTActionTypeProgram, .command = ""}}}, [KEY_BACK] = {"Back", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "WWW Browser", .function_name = "Back"}}}, [KEY_FORWARD] = {"Forward", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "WWW Browser", .function_name = "Forward"}}}, [KEY_CLOSECD] = {"Close CD", {.program = {.type = KTActionTypeProgram, .command = "eject -t"}}}, [KEY_EJECTCD] = {"Eject CD", {.program = {.type = KTActionTypeProgram, .command = "eject"}}}, [KEY_EJECTCLOSECD] = {"Eject/Close CD", {.program = {.type = KTActionTypeProgram, .command = "eject -T"}}}, [KEY_NEXTSONG] = {"Next song", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "XMMS", .function_name = "Next"}}}, [KEY_PLAYPAUSE] = {"Play/Pause", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "XMMS", .function_name = "Play/Pause"}}}, [KEY_PREVIOUSSONG] = {"Previous song", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "XMMS", .function_name = "Previous"}}}, [KEY_STOPCD] = {"Stop CD", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "XMMS", .function_name = "Stop"}}}, [KEY_RECORD] = {"Record", {.program = {.type = KTActionTypeProgram, .command = "k3b"}}}, [KEY_REWIND] = {"Rewind", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "XMMS", .function_name = "Previous"}}}, [KEY_CONFIG] = {"Config", {.program = {.type = KTActionTypeProgram, .command = "kcontrol || gnome-control-center"}}}, [KEY_HOMEPAGE] = {"Homepage", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "WWW Browser", .function_name = "Home"}}}, [KEY_REFRESH] = {"Reload", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "WWW Browser", .function_name = "Reload"}}}, [KEY_PLAYCD] = {"Play CD", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "XMMS", .function_name = "Play/Pause"}}}, [KEY_PAUSECD] = {"Pause CD", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "XMMS", .function_name = "Play/Pause"}}}, [KEY_PROG3] = {"Prog 3", {.program = {.type = KTActionTypeProgram, .command = "keytouch"}}}, [KEY_PROG4] = {"Prog 4", {.program = {.type = KTActionTypeProgram, .command = "keytouch"}}}, [KEY_SUSPEND] = {"Suspend", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "Lock Screen", .function_name = "Lock Screen"}}}, [KEY_CLOSE] = {"Close", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "Common actions", .function_name = "Close/Quit"}}}, [KEY_PLAY] = {"Play", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "XMMS", .function_name = "Play/Pause"}}}, [KEY_FASTFORWARD] = {"Fast forward", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "XMMS", .function_name = "Next"}}}, [KEY_PRINT] = {"Print", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "Common actions", .function_name = "Print"}}}, [KEY_EMAIL] = {"E-mail", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "E-mail", .function_name = "E-mail"}}}, [KEY_CHAT] = {"Chat", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "Chat", .function_name = "Chat"}}}, [KEY_SEARCH] = {"Search", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "WWW Browser", .function_name = "Search"}}}, [KEY_MEDIA] = {"Media", {.program = {.type = KTActionTypeProgram, .command = "gmplayer"}}}, [KEY_SEND] = {"Send", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "E-mail", .function_name = "Send/Receive"}}}, [KEY_REPLY] = {"Reply mail", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "E-mail", .function_name = "Reply"}}}, [KEY_FORWARDMAIL] = {"Forward mail", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "E-mail", .function_name = "Forward"}}}, [KEY_SAVE] = {"Save", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "Common actions", .function_name = "Save"}}}, [KEY_DOCUMENTS] = {"Documents", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "Filemanager", .function_name = "Documents"}}}, [KEY_NEW] = {"New", {.plugin = {.type = KTActionTypePlugin, .plugin_name = "Common actions", .function_name = "New (file)"}}} }; keytouch-editor-3.2.0-beta/src/check_syntax.c0000644000175000017500000005433110677475666020572 0ustar marvinmarvin/*--------------------------------------------------------------------------------- Name : check_syntax.c Author : Marvin Raaijmakers Description : Checks if the syntax of a keyboard file is valid Date of last change: 29-Sep-2007 History : 21-Jul-2007 Added check_keyboard_info() and checks for 'usb-code' elements in check_key_settings() 20-Jul-2007 Fixed memory leak (key_name) in check_key_settings 28-Jun-2007 Fixed compiler warnings 17-Sep-2006 Added support for ACPI hotkeys 24-Jun-2006 Added checks for keycodes and scancodes Copyright (C) 2006-2007 Marvin Raaijmakers 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; either version 2 of the License, or any later version. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. You can contact me at: marvinr(at)users(dot)sf(dot)net (replace (at) by @ and (dot) by .) -----------------------------------------------------------------------------------*/ #include #include #include #define _XOPEN_SOURCE /* glibc2 needs this */ #include #include #include #include #include #include static Boolean check_action ( XmlContent *action_element, XmlElementType *pluginname_type, XmlElementType *pluginfunction_type, XmlAttributeName *action_type_attrname ); static Boolean check_key_settings ( XmlContent *keylist_element, int index, XmlElementType *key_type, XmlElementType *keyname_type, XmlElementType *keycode_type, XmlElementType *scancode_type, XmlElementType *usbcode_type, XmlElementType *acpi_event_descr_type, XmlElementType *default_action_type, XmlElementType *pluginname_type, XmlElementType *pluginfunction_type, XmlAttributeName *action_type_attrname, XmlAttributeName *key_type_attrname, unsigned int *num_keys, char *key_names[MAX_NUM_KEYS], Boolean keycode_used[NUM_KEYCODES], Boolean *valid ); static Boolean syntax_version_ok ( XmlContent *file_info_element, XmlDocument *document, unsigned int version_major, unsigned int version_minor ); static Boolean check_last_change_date ( XmlContent *file_info_element, XmlDocument *document ); static Boolean check_keyboard_info (XmlDocument *keyboard_file, XmlContent *keyboard_element); Boolean check_action ( XmlContent *action_element, XmlElementType *pluginname_type, XmlElementType *pluginfunction_type, XmlAttributeName *action_type_attrname ) /* Input: action_element - The element to read from. pluginname_type - The XmlElementType for the plugin-name element pluginfunction_type - The XmlElementType for the plugin-function element action_type_attrname - The XmlElementName for the action-type attribute Returns: TRUE if 'action_element' has a correct syntax, otherwise FALSE. Desciption: This function checks if 'action_element' has a correct syntax, otherwise FALSE. */ { char *action_type_argument; Boolean error; error = FALSE; /* Get the type of the action */ action_type_argument = XmlGetAttributeValue (action_type_attrname, action_element); /* If it is a plugin */ if (action_type_argument && strcmp(action_type_argument, ATTR_VAL_PLUGIN) == 0) { if (XmlGetElementOfType(XmlElementContentList(action_element), pluginname_type, 0) == NULL || XmlGetElementOfType(XmlElementContentList(action_element), pluginfunction_type, 0) == NULL) { KTSetErrorMsg (_("The keyboard file contains an invalid action " "element (where the action is a plugin)."), ""); error = TRUE; } } /* If it is not a program */ else if (action_type_argument != NULL && strcmp(action_type_argument, ATTR_VAL_PROGRAM) != 0) { KTSetErrorMsg (_("The keyboard file contains the invalid action-type value '%s'."), action_type_argument); error = TRUE; } return !error; } Boolean check_key_settings ( XmlContent *keylist_element, int index, XmlElementType *key_type, XmlElementType *keyname_type, XmlElementType *keycode_type, XmlElementType *scancode_type, XmlElementType *usbcode_type, XmlElementType *acpi_event_descr_type, XmlElementType *default_action_type, XmlElementType *pluginname_type, XmlElementType *pluginfunction_type, XmlAttributeName *action_type_attrname, XmlAttributeName *key_type_attrname, unsigned int *num_keys, char *key_names[MAX_NUM_KEYS], Boolean keycode_used[NUM_KEYCODES], Boolean *valid ) /* Input: keylist_element - The parent of the element to check. index - Read the index'th key element key_type - The XmlElementType for the key element keyname_type - The XmlElementType for the key-name element keycode_type - The XmlElementType for the keycode element scancode_type - The XmlElementType for the scancode element usbcode_type - The XmlElementType for the usb-code element acpi_event_descr_type - The XmlElementType for the event-descr element default_action_type - The XmlElementType for the default-action element pluginname_type - The XmlElementType for the plugin-name element pluginfunction_type - The XmlElementType for the plugin-function element action_type_attrname - The XmlElementName for the action-type attribute key_type_attrname - The XmlElementName for the key-type attribute num_keys - The number of elements used in 'key_names' key_names - Array of pointers to key names that are in the keyboard file. keycode_used - For keycode i, keycode_used[i] indicates if it is used already in the keyboard file. Output: valid - Will be TRUE if the index'th element of 'key_type' in 'keylist_element', is valid (otherwise FALSE). num_keys - If '*valid' is set to TRUE then 'num_keys' will be increased with 1 if it is smaller than MAX_NUM_KEYS-1. key_names - If '*valid' is set to TRUE then the (*num_key-1)'th (if *num_keys < MAX_NUM_KEYS) element of this array, will point to the key name of the checked key setting. The memory of this name is allocated and should be freed if it is no longer needed. keycode_used - For keycode i, keycode_used[i] indicates if it is used already in the keyboard file. Returns: TRUE if the index'th element of 'key_type' in 'keylist_element' exist. Desciption: This function checks if the key_name and default_action member, of the index'th key element of 'keylist_element', are valid. */ { XmlContent *key_element, *event_descr_element, *keyname_element, *keycode_element, *scancode_element, *usbcode_element, *default_action_element; unsigned int i, keycode; char *key_name, *key_type_str, *end_pointer, *keycode_string, *scancode_string; Boolean is_acpi_hotkey; *valid = TRUE; key_element = XmlGetElementOfType(XmlElementContentList(keylist_element), key_type, index); if (key_element) { key_type_str = XmlGetAttributeValue (key_type_attrname, key_element); is_acpi_hotkey = (key_type_str && !strcmp(key_type_str, ATTR_VAL_ACPIHOTKEY)); keyname_element = XmlGetElementOfType(XmlElementContentList(key_element), keyname_type, 0); default_action_element = XmlGetElementOfType(XmlElementContentList(key_element), default_action_type, 0); keycode_element = XmlGetElementOfType(XmlElementContentList(key_element), keycode_type, 0); event_descr_element = XmlGetElementOfType(XmlElementContentList(key_element), acpi_event_descr_type, 0); scancode_element = XmlGetElementOfType(XmlElementContentList(key_element), scancode_type, 0); usbcode_element = XmlGetElementOfType(XmlElementContentList(key_element), usbcode_type, 0); if (keyname_element == NULL || default_action_element == NULL || keycode_element == NULL || (is_acpi_hotkey ? event_descr_element == NULL : (scancode_element == NULL && usbcode_element == NULL) )) { KTSetErrorMsg (_("The keyboard file contains an incomplete key element."), ""); *valid = FALSE; } else { key_name = XmlGetElementString (keyname_element, ""); if (*key_name == '\0') { KTSetErrorMsg (_("The keyboard file contains an empty key-name element."), ""); *valid = FALSE; } else { for (i = 0; i < *num_keys && strcmp (key_name, key_names[i]) != 0; i++) ; /* NULL Statement */ if (i < *num_keys) { KTSetErrorMsg (_("The keyboard file contains more than once a key named '%s'."), key_name); *valid = FALSE; } else if ( !check_action (default_action_element, pluginname_type, pluginfunction_type, action_type_attrname) ) { *valid = FALSE; } } if (*valid) { if (!is_acpi_hotkey) { if (scancode_element) { /** Check the scancode **/ scancode_string = XmlGetElementString(scancode_element, ""); /* Convert the string of the scancode to a integer */ strtol (scancode_string, &end_pointer, 0); /* If the scancode string is not a valid scancode */ if (*end_pointer != '\0') { KTSetErrorMsg (_("'%s' is an invalid scancode."), scancode_string); *valid = FALSE; } XmlFree (scancode_string); } if (usbcode_element) { /** Check the USB code **/ scancode_string = XmlGetElementString(usbcode_element, ""); /* Convert the string of the USB code to a integer */ strtol (scancode_string, &end_pointer, 16); /* If the string is not a valid USB code */ if (*end_pointer != '\0') { KTSetErrorMsg (_("'%s' is an invalid USB code."), scancode_string); *valid = FALSE; } XmlFree (scancode_string); } } if (*valid) { /** Check the keycode **/ keycode_string = XmlGetElementString (keycode_element, ""); keycode = string_to_kernel_keycode (keycode_string); if (keycode) { if (keycode_used[keycode]) { KTSetErrorMsg (_("Keycode %s is used more than once."), keycode_string); *valid = FALSE; } else { keycode_used[keycode] = TRUE; } } else { if (keycode_string[0] == '\0') { KTSetErrorMsg (_("The keyboard file contains an empty keycode."), ""); } else { KTSetErrorMsg (_("'%s' is an invalid keycode."), keycode_string); } *valid = FALSE; } XmlFree (keycode_string); if (*valid && *num_keys < MAX_NUM_KEYS) { key_names[*num_keys] = key_name; (*num_keys)++; } } } /* If the key is invalid or the name could * not have been added to the name list */ if (!*valid || *num_keys >= MAX_NUM_KEYS) { XmlFree (key_name); } } } return (key_element != NULL); } Boolean check_last_change_date ( XmlContent *file_info_element, XmlDocument *document ) /* Input: file_info_element - The last-change element will be read from this element document - file_info_element must located in this XmlDocument Returns: TRUE if the date was succesfully read, otherwise FALSE. Description: This function reads the last-change element that is located in file_info_element and checks if it is OK. */ { XmlElementType *last_change_type; XmlContent *last_change_element; XmlAttributeName *format_attrname; char *date_string, *format; Boolean return_val; struct tm date; /* Get the last-change element */ if ((last_change_type = XmlGetElementType(ELEM_TYPE_LASTCHANGE, document, FALSE)) == NULL || (last_change_element = XmlGetElementOfType(XmlElementContentList(file_info_element), last_change_type, 0)) == NULL) { return (FALSE); } /* Get the value of the format attribute */ if ((format_attrname = XmlGetAttributeName(ATTR_NAME_FORMAT, document, FALSE)) == NULL || (format = XmlGetAttributeValue(format_attrname, last_change_element)) == NULL) { return (FALSE); } date_string = XmlGetElementString(last_change_element, ""); /* Convert string to a time tm structure */ return_val = (strptime(date_string, format, &date) != NULL); if (!return_val) { KTSetErrorMsg (_("The last-change-date \"%s\" of the keyboard file is not a valid date."), date_string); } XmlFree (date_string); return (return_val); } Boolean syntax_version_ok ( XmlContent *file_info_element, XmlDocument *document, unsigned int version_major, unsigned int version_minor ) /* Input: file_info_element - The syntax version will be read from this element document - file_info_element must located in this XmlDocument version_major - The compatible major syntax version number version_minor - The latest compatible minor syntax version number Output: - Returns: TRUE if the syntax version was succesfully read, the major version number equals version_major and the minor version number is less than or equal to version_minor. Otherwise FALSE is returned. Description: This function reads the syntax-version element that is located in file_info_element. This function will return TRUE if this version is compatible with the version specified in the input variables (version_major and version_minor). */ { XmlElementType *syntax_version_type; XmlContent *syntax_version_element; char *version_string; unsigned int maj, min; if ((syntax_version_type = XmlGetElementType (ELEM_TYPE_SYNTAXVERSION, document, FALSE)) == NULL || (syntax_version_element = XmlGetElementOfType (XmlElementContentList(file_info_element), syntax_version_type, 0)) == NULL) { return (FALSE); } version_string = XmlGetElementString (syntax_version_element, ""); /* Convert the string to version numbers */ if (sscanf(version_string, "%d.%d", &maj, &min) != 2) { maj = min = 0; } XmlFree (version_string); /* Return TRUE if the version is compatible */ return (maj == version_major && min <= version_minor); } Boolean check_keyboard_info (XmlDocument *keyboard_file, XmlContent *keyboard_element) { XmlContent *keyboard_name_element, *keyboard_info_element, *usb_info_element, *vendor_id_element, *product_id_element; XmlElementType *keyboard_name_type, *keyboard_info_type, *model_type, *manufacturer_type, *usb_info_type, *vendor_id_type, *product_id_type; char *string, *end_pointer; Boolean error; error = FALSE; if ((keyboard_info_type = XmlGetElementType(ELEM_TYPE_KEYBOARDINFO, keyboard_file, FALSE)) == NULL || (keyboard_name_type = XmlGetElementType(ELEM_TYPE_KEYBOARDNAME, keyboard_file, FALSE)) == NULL || (model_type = XmlGetElementType(ELEM_TYPE_MODEL, keyboard_file, FALSE)) == NULL || (manufacturer_type = XmlGetElementType(ELEM_TYPE_MANUFACTURER, keyboard_file, FALSE)) == NULL || (keyboard_info_element = XmlGetElementOfType (XmlElementContentList(keyboard_element), keyboard_info_type, 0)) == NULL || (keyboard_name_element = XmlGetElementOfType (XmlElementContentList(keyboard_info_element), keyboard_name_type, 0)) == NULL || XmlGetElementOfType (XmlElementContentList(keyboard_name_element), model_type, 0) == NULL || XmlGetElementOfType (XmlElementContentList(keyboard_name_element), manufacturer_type, 0) == NULL) { KTSetErrorMsg (_("The keyboard file does not provide enough information about the keyboard model."), ""); error = TRUE; } else if ((usb_info_type = XmlGetElementType(ELEM_TYPE_USBINFO, keyboard_file, FALSE)) != NULL && (usb_info_element = XmlGetElementOfType (XmlElementContentList(keyboard_info_element), usb_info_type, 0)) != NULL) { if ((vendor_id_type = XmlGetElementType(ELEM_TYPE_VENDORID, keyboard_file, FALSE)) == NULL || (vendor_id_element = XmlGetElementOfType (XmlElementContentList(usb_info_element), vendor_id_type, 0)) == NULL) { KTSetErrorMsg (_("The 'usb-info' element does not contain a '%s' element."), ELEM_TYPE_VENDORID); error = TRUE; } else if ((product_id_type = XmlGetElementType(ELEM_TYPE_PRODUCTID, keyboard_file, FALSE)) == NULL || (product_id_element = XmlGetElementOfType (XmlElementContentList(usb_info_element), product_id_type, 0)) == NULL) { KTSetErrorMsg (_("The 'usb-info' element does not contain a '%s' element."), ELEM_TYPE_PRODUCTID); error = TRUE; } else { string = XmlGetElementString(vendor_id_element, ""); /* Convert the string of the vendor ID to a integer */ strtol (string, &end_pointer, 16); /* If the string is not a valid vendor ID */ if (*end_pointer != '\0') { KTSetErrorMsg (_("'%s' is an invalid vendor ID."), string); error = TRUE; } XmlFree (string); if (!error) { string = XmlGetElementString(product_id_element, ""); /* Convert the string of the product ID to a integer */ strtol (string, &end_pointer, 16); /* If the string is not a valid product ID */ if (*end_pointer != '\0') { KTSetErrorMsg (_("'%s' is an invalid product ID."), string); error = TRUE; } XmlFree (string); } } } return !error; } Boolean check_keyboard_file (XmlDocument *keyboard_file) /* Input: keyboard_file - The contents of the keyboard file to check Returns: TRUE if 'keyboard_file' is valid, otherwise FALSE. Desciption: This function checks if the contents of 'keyboard_file' are valid according the "keyTouch 2.1 file documentation". If 'keyboard_file' is not valid then an error message describing why it is invalid can be retrieved using KTGetErrorMsg(). */ { XmlContent *keyboard_element, *file_info_element, *keylist_element; XmlElementType *keyboard_type, *file_info_type, *keylist_type, *key_type, *keyname_type, *scancode_type, *usbcode_type, *event_descr_type, *keycode_type, *default_action_type, *pluginname_type, *pluginfunction_type; XmlAttributeName *action_type_attrname, *key_type_attrname; Boolean error, valid; unsigned int index, num_keys; char *key_names[MAX_NUM_KEYS]; Boolean keycode_used[NUM_KEYCODES] = {[0 ... NUM_KEYCODES-1] = 0}; error = FALSE; event_descr_type = XmlGetElementType (ELEM_TYPE_ACPI_EVENT_DESCR, keyboard_file, TRUE); scancode_type = XmlGetElementType (ELEM_TYPE_SCANCODE, keyboard_file, TRUE); usbcode_type = XmlGetElementType (ELEM_TYPE_USBCODE, keyboard_file, TRUE); if ((keyboard_type = XmlGetElementType (ELEM_TYPE_KEYBOARD, keyboard_file, FALSE)) == NULL || (keyboard_element = XmlGetElementOfType (XmlDocumentContentList(keyboard_file), keyboard_type, 0)) == NULL) { KTSetErrorMsg (_("The keyboard file does not contain a keyboard element."), ""); error = TRUE; } else if (!check_keyboard_info (keyboard_file, keyboard_element)) { /* NOTE: KTSetErrorMsg() is already called by check_keyboard_info() */ error = TRUE; } else if ((keylist_type = XmlGetElementType(ELEM_TYPE_KEYLIST, keyboard_file, FALSE)) == NULL || (keylist_element = XmlGetElementOfType(XmlElementContentList(keyboard_element), keylist_type, 0)) == NULL) { KTSetErrorMsg (_("The keyboard file does not contain a key-list element."), ""); error = TRUE; } else if ((file_info_type = XmlGetElementType(ELEM_TYPE_FILEINFO, keyboard_file, FALSE)) == NULL || (file_info_element = XmlGetElementOfType(XmlElementContentList(keyboard_element), file_info_type, 0)) == NULL) { KTSetErrorMsg (_("The \"keyboard\" element in the keyboard file does not contain a %s element."), ELEM_TYPE_FILEINFO); error = TRUE; } else if (!syntax_version_ok (file_info_element, keyboard_file, SYNTAX_VERSION_MAJOR, SYNTAX_VERSION_MINOR)) { KTSetErrorMsg (_("The syntax version of the keyboard file is not compatible with this version of keyTouch."), SYNTAX_VERSION_STRING); error = TRUE; } else if (!check_last_change_date (file_info_element, keyboard_file)) { /* NOTE: KTSetErrorMsg() is already called by check_last_change_date() */ error = TRUE; } else if ((default_action_type = XmlGetElementType(ELEM_TYPE_DEFAULTACTION, keyboard_file, FALSE)) == NULL) { KTSetErrorMsg (_("The keyboard file does not contain any %s element."), ELEM_TYPE_DEFAULTACTION); error = TRUE; } else if ((key_type = XmlGetElementType(ELEM_TYPE_KEY, keyboard_file, FALSE)) == NULL) { KTSetErrorMsg (_("The keyboard file does not contain any %s element."), ELEM_TYPE_KEY); error = TRUE; } else if ((keyname_type = XmlGetElementType(ELEM_TYPE_KEYNAME, keyboard_file, FALSE)) == NULL) { KTSetErrorMsg (_("The keyboard file does not contain any %s element."), ELEM_TYPE_KEYNAME); error = TRUE; } else if ((keycode_type = XmlGetElementType(ELEM_TYPE_KEYCODE, keyboard_file, FALSE)) == NULL) { KTSetErrorMsg (_("The keyboard file does not contain any %s element."), ELEM_TYPE_KEYCODE); error = TRUE; } else { action_type_attrname = XmlGetAttributeName (ATTR_NAME_ACTIONTYPE, keyboard_file, TRUE); key_type_attrname = XmlGetAttributeName (ATTR_NAME_KEYTYPE, keyboard_file, TRUE); /* Create the element types "plugin-name" and "plugin-function" if they * do not appear in the document, because these element do not necessary * appear in the document */ pluginname_type = XmlGetElementType (ELEM_TYPE_PLUGINNAME, keyboard_file, TRUE); pluginfunction_type = XmlGetElementType (ELEM_TYPE_PLUGINFUNCTION, keyboard_file, TRUE); num_keys = 0; for (index = 0; check_key_settings (keylist_element, index, key_type, keyname_type, keycode_type, scancode_type, usbcode_type, event_descr_type, default_action_type, pluginname_type, pluginfunction_type, action_type_attrname, key_type_attrname, &num_keys, key_names, keycode_used, &valid); index++) { if (!valid) { error = TRUE; break; } } while (num_keys--) { XmlFree (key_names[num_keys]); } } return !error; } keytouch-editor-3.2.0-beta/src/check_syntax.h0000644000175000017500000000267510665033557020565 0ustar marvinmarvin/*--------------------------------------------------------------------------------- Name : check_syntax.h Author : Marvin Raaijmakers Description : Header file for check_syntax.c Date of last change: 23-Jun-2006 History : Copyright (C) 2006 Marvin Raaijmakers 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; either version 2 of the License, or any later version. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. You can contact me at: marvinr(at)users(dot)sf(dot)net (replace (at) by @ and (dot) by .) -----------------------------------------------------------------------------------*/ #ifndef INCLUDE_CHECK_SYNTAX #define INCLUDE_CHECK_SYNTAX #define MAX_NUM_KEYS 300 #define SYNTAX_VERSION_MAJOR 1 #define SYNTAX_VERSION_MINOR 2 #define SYNTAX_VERSION_STRING "1.2" extern Boolean check_keyboard_file (XmlDocument *keyboard_file); #endif keytouch-editor-3.2.0-beta/src/ud_socket.c0000640000175000017500000000332610637527372020045 0ustar marvinmarvin/* * $Id: ud_socket.c,v 1.4 2003/11/17 21:24:58 sunthockin Exp $ * A few routines for handling UNIX domain sockets */ #include #include #include #include #include #include #include #include #include #include /*#include "acpid.h"*/ #include "ud_socket.h" int ud_create_socket(const char *name) { int fd; int r; struct sockaddr_un uds_addr; /* JIC */ unlink(name); fd = socket(AF_UNIX, SOCK_STREAM, 0); if (fd < 0) { return fd; } /* setup address struct */ memset(&uds_addr, 0, sizeof(uds_addr)); uds_addr.sun_family = AF_UNIX; strcpy(uds_addr.sun_path, name); /* bind it to the socket */ r = bind(fd, (struct sockaddr *)&uds_addr, sizeof(uds_addr)); if (r < 0) { return r; } /* listen - allow 10 to queue */ r = listen(fd, 10); if (r < 0) { return r; } return fd; } int ud_accept(int listenfd, struct ucred *cred) { while (1) { int newsock = 0; struct sockaddr_un cliaddr; socklen_t len = sizeof(struct sockaddr_un); newsock = accept(listenfd, (struct sockaddr *)&cliaddr, &len); if (newsock < 0) { if (errno == EINTR) { continue; /* signal */ } return newsock; } if (cred) { len = sizeof(struct ucred); getsockopt(newsock, SOL_SOCKET, SO_PEERCRED,cred,&len); } return newsock; } } int ud_connect(const char *name) { int fd; int r; struct sockaddr_un addr; fd = socket(AF_UNIX, SOCK_STREAM, 0); if (fd < 0) { return fd; } memset(&addr, 0, sizeof(addr)); addr.sun_family = AF_UNIX; sprintf(addr.sun_path, "%s", name); r = connect(fd, (struct sockaddr *)&addr, sizeof(addr)); if (r < 0) { close(fd); return r; } return fd; } keytouch-editor-3.2.0-beta/src/acpi.c0000640000175000017500000000451610504537700016770 0ustar marvinmarvin#include #include #include #include #include #include #include #include #include "ud_socket.h" static char *read_line (int fd); Boolean check_acpi (void) /* Returns: TRUE if ACPI_SOCKETFILE is a valid and accesible ACPI socket, otherwise FALSE will be returned. */ { int fd; fd = ud_connect (ACPI_SOCKETFILE); if (fd >= 0) { close (fd); } return fd >= 0; } char *read_eventdescr (int fd) /* Input: fd - The socket to read from Output: - Returns: A pointer to the readen event description or NULL if reading the event failed. Description: read_event() reads a line from fd and puts it in a string. The last space character in this string will be replaced by '\0' if the string does not begin with "ibm". A pointer to the resulting string will be returned. The string may not be modified and may not be used after calling this function again. */ { char *line, *last_space, *c; line = read_line(fd); if (line && strncmp ("ibm", line, 3)) { last_space = NULL; for (c = line; *c != '\0'; c++) { if (isspace(*c)) { last_space = c; } } if (last_space != NULL) { *last_space = '\0'; } } return (line); } /* The code below was borrowed from: * acpi_listen.c - ACPI client for acpid's UNIX socket * * Portions Copyright (C) 2003 Sun Microsystems (thockin@sun.com) * Some parts (C) 2003 - Gismo / Luca Capello http://luca.pca.it */ #define MAX_BUFLEN 1024 static char * read_line(int fd) { static char *buf; int buflen = 64; int i = 0; int r; int searching = 1; while (searching) { buf = realloc(buf, buflen); if (!buf) { fprintf(stderr, "ERR: malloc(%d): %s\n", buflen, strerror(errno)); return NULL; } memset(buf+i, 0, buflen-i); while (i < buflen) { r = read(fd, buf+i, 1); if (r < 0 && errno != EINTR) { /* we should do something with the data */ fprintf(stderr, "ERR: read(): %s\n", strerror(errno)); return NULL; } else if (r == 0) { /* signal this in an almost standard way */ errno = EPIPE; return NULL; } else if (r == 1) { /* scan for a newline */ if (buf[i] == '\n') { searching = 0; buf[i] = '\0'; break; } i++; } } if (buflen >= MAX_BUFLEN) { break; } buflen *= 2; } return buf; } keytouch-editor-3.2.0-beta/src/ud_socket.h0000640000175000017500000000043707756236252020054 0ustar marvinmarvin/* *$Id: ud_socket.h,v 1.2 2003/11/17 21:24:58 sunthockin Exp $ */ #ifndef UD_SOCKET_H__ #define UD_SOCKET_H__ #include #include int ud_create_socket(const char *name); int ud_accept(int sock, struct ucred *cred); int ud_connect(const char *name); #endif keytouch-editor-3.2.0-beta/src/acpi.h0000640000175000017500000000031310475314110016757 0ustar marvinmarvin#ifndef INCLUDE_ACPI #define INCLUDE_ACPI #include #define ACPI_SOCKETFILE "/var/run/acpid.socket" extern Boolean check_acpi (void); extern char *read_eventdescr (int fd); #endif keytouch-editor-3.2.0-beta/src/gui.h0000644000175000017500000000620410663060635016651 0ustar marvinmarvin/*--------------------------------------------------------------------------------- Name : gui.h Author : Marvin Raaijmakers Description : Contains macros and structures for accessing GUI widgets Date of last change: 22-Aug-2007 19-Aug-2007 Created this file Copyright (C) 2007 Marvin Raaijmakers 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; either version 2 of the License, or any later version. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. You can contact me at: marvinr(at)users(dot)sf(dot)net (replace (at) by @ and (dot) by .) -----------------------------------------------------------------------------------*/ #ifndef INCLUDE_GUI #define INCLUDE_GUI #include /* Macro's for accessing objects of the GUI: */ #define GUI_main_window() (main_window_gui.main_window) #define GUI_scancode_event_descr_label() (main_window_gui.scancode_event_descr_label) #define GUI_manufacturer_entry() (main_window_gui.manufacturer_entry) #define GUI_model_entry() (main_window_gui.model_entry) #define GUI_key_name_entry() (main_window_gui.key_name_entry) #define GUI_scancode_entry() (main_window_gui.scancode_entry) #define GUI_usbcode_entry() (main_window_gui.usbcode_entry) #define GUI_program_entry() (main_window_gui.program_entry) #define GUI_plugin_function_comboentry() (main_window_gui.plugin_function_comboentry) #define GUI_plugin_comboentry() (main_window_gui.plugin_comboentry) #define GUI_program_radiobutton() (main_window_gui.program_radiobutton) #define GUI_special_action_radiobutton() (main_window_gui.special_action_radiobutton) #define GUI_key_treeview() (main_window_gui.key_treeview) #define GUI_keycode_combobox() (main_window_gui.keycode_combobox) #define GUI_usbcode_change_button() (main_window_gui.usbcode_change_button) #define GUI_scancode_change_button() (main_window_gui.scancode_change_button) /* * This structure contains pointers to the objects in the main * windows GUI used by the code in callbacks.c and setdata.c: */ typedef struct { GtkWidget *main_window; GtkLabel *scancode_event_descr_label; GtkEntry *manufacturer_entry, *model_entry, *key_name_entry, *scancode_entry, *usbcode_entry, *program_entry, *plugin_function_comboentry, *plugin_comboentry; GtkRadioButton *program_radiobutton, *special_action_radiobutton; GtkTreeView *key_treeview; GtkComboBox *keycode_combobox; GtkButton *usbcode_change_button, *scancode_change_button; } MainWindowGUI_type; extern MainWindowGUI_type main_window_gui; #endif keytouch-editor-3.2.0-beta/po/0000755000175000017500000000000010767267677015565 5ustar marvinmarvinkeytouch-editor-3.2.0-beta/po/ChangeLog0000640000175000017500000000000010371376741017301 0ustar marvinmarvinkeytouch-editor-3.2.0-beta/po/POTFILES.in0000640000175000017500000000033410451740325017306 0ustar marvinmarvin# List of source files containing translatable strings. src/main.c src/interface.c src/callbacks.c src/support.c src/config.c src/evdev.c src/get_scancode.c src/key_list.c src/memory.c src/set_data.c src/check_syntax.c keytouch-editor-3.2.0-beta/po/Makefile.in.in0000644000175000017500000001771410677476774020251 0ustar marvinmarvin# Makefile for program source directory in GNU NLS utilities package. # Copyright (C) 1995, 1996, 1997 by Ulrich Drepper # # This file file be copied and used freely without restrictions. It can # be used in projects which are not available under the GNU Public License # but which still want to provide support for the GNU gettext functionality. # Please note that the actual code is *not* freely available. # # - Modified by Owen Taylor to use GETTEXT_PACKAGE # instead of PACKAGE and to look for po2tbl in ./ not in intl/ # # - Modified by jacob berkman to install # Makefile.in.in and po2tbl.sed.in for use with glib-gettextize GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ PACKAGE = @PACKAGE@ VERSION = @VERSION@ SHELL = /bin/sh @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ datarootdir = @datarootdir@ datadir = @datadir@ libdir = @libdir@ localedir = $(libdir)/locale gnulocaledir = $(datadir)/locale gettextsrcdir = $(datadir)/glib-2.0/gettext/po subdir = po INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ MKINSTALLDIRS = $(top_srcdir)/@MKINSTALLDIRS@ CC = @CC@ GENCAT = @GENCAT@ GMSGFMT = @GMSGFMT@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ XGETTEXT = @XGETTEXT@ MSGMERGE = msgmerge DEFS = @DEFS@ CFLAGS = @CFLAGS@ CPPFLAGS = @CPPFLAGS@ INCLUDES = -I.. -I$(top_srcdir)/intl COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) SOURCES = POFILES = @POFILES@ GMOFILES = @GMOFILES@ DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(GETTEXT_PACKAGE).pot \ $(POFILES) $(GMOFILES) $(SOURCES) POTFILES = \ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ INSTOBJEXT = @INSTOBJEXT@ .SUFFIXES: .SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat .c.o: $(COMPILE) $< .po.pox: $(MAKE) $(GETTEXT_PACKAGE).pot $(MSGMERGE) $< $(srcdir)/$(GETTEXT_PACKAGE).pot -o $*.pox .po.mo: $(MSGFMT) -o $@ $< .po.gmo: file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \ && rm -f $$file && $(GMSGFMT) $(MSGFMT_OPTS) -o $$file $< .po.cat: sed -f ../intl/po2msg.sed < $< > $*.msg \ && rm -f $@ && $(GENCAT) $@ $*.msg all: all-@USE_NLS@ all-yes: $(CATALOGS) all-no: $(srcdir)/$(GETTEXT_PACKAGE).pot: $(POTFILES) $(XGETTEXT) --default-domain=$(GETTEXT_PACKAGE) --directory=$(top_srcdir) \ --add-comments --keyword=_ --keyword=N_ \ --flag=g_strdup_printf:1:c-format \ --flag=g_string_printf:2:c-format \ --flag=g_string_append_printf:2:c-format \ --flag=g_error_new:3:c-format \ --flag=g_set_error:4:c-format \ --flag=g_markup_printf_escaped:1:c-format \ --flag=g_log:3:c-format \ --flag=g_print:1:c-format \ --flag=g_printerr:1:c-format \ --flag=g_printf:1:c-format \ --flag=g_fprintf:2:c-format \ --flag=g_sprintf:2:c-format \ --flag=g_snprintf:3:c-format \ --flag=g_scanner_error:2:c-format \ --flag=g_scanner_warn:2:c-format \ --files-from=$(srcdir)/POTFILES.in \ && test ! -f $(GETTEXT_PACKAGE).po \ || ( rm -f $(srcdir)/$(GETTEXT_PACKAGE).pot \ && mv $(GETTEXT_PACKAGE).po $(srcdir)/$(GETTEXT_PACKAGE).pot ) install: install-exec install-data install-exec: install-data: install-data-@USE_NLS@ install-data-no: all install-data-yes: all if test -r "$(MKINSTALLDIRS)"; then \ $(MKINSTALLDIRS) $(DESTDIR)$(datadir); \ else \ $(SHELL) $(top_srcdir)/mkinstalldirs $(DESTDIR)$(datadir); \ fi @catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ case "$$cat" in \ *.gmo) destdir=$(gnulocaledir);; \ *) destdir=$(localedir);; \ esac; \ lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ dir=$(DESTDIR)$$destdir/$$lang/LC_MESSAGES; \ if test -r "$(MKINSTALLDIRS)"; then \ $(MKINSTALLDIRS) $$dir; \ else \ $(SHELL) $(top_srcdir)/mkinstalldirs $$dir; \ fi; \ if test -r $$cat; then \ $(INSTALL_DATA) $$cat $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \ echo "installing $$cat as $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT)"; \ else \ $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \ echo "installing $(srcdir)/$$cat as" \ "$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT)"; \ fi; \ if test -r $$cat.m; then \ $(INSTALL_DATA) $$cat.m $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \ echo "installing $$cat.m as $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m"; \ else \ if test -r $(srcdir)/$$cat.m ; then \ $(INSTALL_DATA) $(srcdir)/$$cat.m \ $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \ echo "installing $(srcdir)/$$cat as" \ "$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m"; \ else \ true; \ fi; \ fi; \ done if test "$(PACKAGE)" = "glib"; then \ if test -r "$(MKINSTALLDIRS)"; then \ $(MKINSTALLDIRS) $(DESTDIR)$(gettextsrcdir); \ else \ $(SHELL) $(top_srcdir)/mkinstalldirs $(DESTDIR)$(gettextsrcdir); \ fi; \ $(INSTALL_DATA) $(srcdir)/Makefile.in.in \ $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \ else \ : ; \ fi # Define this as empty until I found a useful application. installcheck: uninstall: catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \ rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \ rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \ rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \ done if test "$(PACKAGE)" = "glib"; then \ rm -f $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \ fi check: all dvi info tags TAGS ID: mostlyclean: rm -f core core.* *.pox $(GETTEXT_PACKAGE).po *.old.po cat-id-tbl.tmp rm -fr *.o clean: mostlyclean distclean: clean rm -f Makefile Makefile.in POTFILES *.mo *.msg *.cat *.cat.m maintainer-clean: distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." rm -f $(GMOFILES) distdir = ../$(GETTEXT_PACKAGE)-$(VERSION)/$(subdir) dist distdir: update-po $(DISTFILES) dists="$(DISTFILES)"; \ for file in $$dists; do \ ln $(srcdir)/$$file $(distdir) 2> /dev/null \ || cp -p $(srcdir)/$$file $(distdir); \ done update-po: Makefile $(MAKE) $(GETTEXT_PACKAGE).pot tmpdir=`pwd`; \ cd $(srcdir); \ catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ echo "$$lang:"; \ if $(MSGMERGE) $$lang.po $(GETTEXT_PACKAGE).pot -o $$tmpdir/$$lang.new.po; then \ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ rm -f $$tmpdir/$$lang.new.po; \ else \ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ :; \ else \ echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ rm -f $$tmpdir/$$lang.new.po; \ exit 1; \ fi; \ fi; \ else \ echo "msgmerge for $$cat failed!"; \ rm -f $$tmpdir/$$lang.new.po; \ fi; \ done # POTFILES is created from POTFILES.in by stripping comments, empty lines # and Intltool tags (enclosed in square brackets), and appending a full # relative path to them POTFILES: POTFILES.in ( if test 'x$(srcdir)' != 'x.'; then \ posrcprefix='$(top_srcdir)/'; \ else \ posrcprefix="../"; \ fi; \ rm -f $@-t $@ \ && (sed -e '/^#/d' \ -e "s/^\[.*\] +//" \ -e '/^[ ]*$$/d' \ -e "s@.*@ $$posrcprefix& \\\\@" < $(srcdir)/$@.in \ | sed -e '$$s/\\$$//') > $@-t \ && chmod a-w $@-t \ && mv $@-t $@ ) Makefile: Makefile.in.in ../config.status POTFILES cd .. \ && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ $(SHELL) ./config.status # Tell versions [3.59,3.63) of GNU make not to export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: keytouch-editor-3.2.0-beta/po/POTFILES0000644000175000017500000000034310677477004016720 0ustar marvinmarvin ../src/main.c \ ../src/interface.c \ ../src/callbacks.c \ ../src/support.c \ ../src/config.c \ ../src/evdev.c \ ../src/get_scancode.c \ ../src/key_list.c \ ../src/memory.c \ ../src/set_data.c \ ../src/check_syntax.c keytouch-editor-3.2.0-beta/po/Makefile.in0000644000175000017500000002003510677477005017616 0ustar marvinmarvin# Makefile for program source directory in GNU NLS utilities package. # Copyright (C) 1995, 1996, 1997 by Ulrich Drepper # # This file file be copied and used freely without restrictions. It can # be used in projects which are not available under the GNU Public License # but which still want to provide support for the GNU gettext functionality. # Please note that the actual code is *not* freely available. # # - Modified by Owen Taylor to use GETTEXT_PACKAGE # instead of PACKAGE and to look for po2tbl in ./ not in intl/ # # - Modified by jacob berkman to install # Makefile.in.in and po2tbl.sed.in for use with glib-gettextize GETTEXT_PACKAGE = keytouch-editor-bin PACKAGE = keytouch-editor-bin VERSION = 3.1.0 SHELL = /bin/sh srcdir = . top_srcdir = .. prefix = /usr/local exec_prefix = ${prefix} datarootdir = ${prefix}/share datadir = ${datarootdir} libdir = ${exec_prefix}/lib localedir = $(libdir)/locale gnulocaledir = $(datadir)/locale gettextsrcdir = $(datadir)/glib-2.0/gettext/po subdir = po INSTALL = /usr/bin/install -c INSTALL_DATA = ${INSTALL} -m 644 MKINSTALLDIRS = $(top_srcdir)/./mkinstalldirs CC = gcc GENCAT = @GENCAT@ GMSGFMT = /usr/bin/msgfmt MSGFMT = /usr/bin/msgfmt MSGFMT_OPTS = -c XGETTEXT = /usr/bin/xgettext MSGMERGE = msgmerge DEFS = -DHAVE_CONFIG_H CFLAGS = -g -O2 CPPFLAGS = INCLUDES = -I.. -I$(top_srcdir)/intl COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) SOURCES = POFILES = nl.po de.po ga.po sv.po hu.po it.po vi.po GMOFILES = nl.gmo de.gmo ga.gmo sv.gmo hu.gmo it.gmo vi.gmo DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(GETTEXT_PACKAGE).pot \ $(POFILES) $(GMOFILES) $(SOURCES) POTFILES = \ CATALOGS = nl.gmo de.gmo ga.gmo sv.gmo hu.gmo it.gmo vi.gmo CATOBJEXT = .gmo INSTOBJEXT = .mo .SUFFIXES: .SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat .c.o: $(COMPILE) $< .po.pox: $(MAKE) $(GETTEXT_PACKAGE).pot $(MSGMERGE) $< $(srcdir)/$(GETTEXT_PACKAGE).pot -o $*.pox .po.mo: $(MSGFMT) -o $@ $< .po.gmo: file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \ && rm -f $$file && $(GMSGFMT) $(MSGFMT_OPTS) -o $$file $< .po.cat: sed -f ../intl/po2msg.sed < $< > $*.msg \ && rm -f $@ && $(GENCAT) $@ $*.msg all: all-yes all-yes: $(CATALOGS) all-no: $(srcdir)/$(GETTEXT_PACKAGE).pot: $(POTFILES) $(XGETTEXT) --default-domain=$(GETTEXT_PACKAGE) --directory=$(top_srcdir) \ --add-comments --keyword=_ --keyword=N_ \ --flag=g_strdup_printf:1:c-format \ --flag=g_string_printf:2:c-format \ --flag=g_string_append_printf:2:c-format \ --flag=g_error_new:3:c-format \ --flag=g_set_error:4:c-format \ --flag=g_markup_printf_escaped:1:c-format \ --flag=g_log:3:c-format \ --flag=g_print:1:c-format \ --flag=g_printerr:1:c-format \ --flag=g_printf:1:c-format \ --flag=g_fprintf:2:c-format \ --flag=g_sprintf:2:c-format \ --flag=g_snprintf:3:c-format \ --flag=g_scanner_error:2:c-format \ --flag=g_scanner_warn:2:c-format \ --files-from=$(srcdir)/POTFILES.in \ && test ! -f $(GETTEXT_PACKAGE).po \ || ( rm -f $(srcdir)/$(GETTEXT_PACKAGE).pot \ && mv $(GETTEXT_PACKAGE).po $(srcdir)/$(GETTEXT_PACKAGE).pot ) install: install-exec install-data install-exec: install-data: install-data-yes install-data-no: all install-data-yes: all if test -r "$(MKINSTALLDIRS)"; then \ $(MKINSTALLDIRS) $(DESTDIR)$(datadir); \ else \ $(SHELL) $(top_srcdir)/mkinstalldirs $(DESTDIR)$(datadir); \ fi @catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ case "$$cat" in \ *.gmo) destdir=$(gnulocaledir);; \ *) destdir=$(localedir);; \ esac; \ lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ dir=$(DESTDIR)$$destdir/$$lang/LC_MESSAGES; \ if test -r "$(MKINSTALLDIRS)"; then \ $(MKINSTALLDIRS) $$dir; \ else \ $(SHELL) $(top_srcdir)/mkinstalldirs $$dir; \ fi; \ if test -r $$cat; then \ $(INSTALL_DATA) $$cat $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \ echo "installing $$cat as $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT)"; \ else \ $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \ echo "installing $(srcdir)/$$cat as" \ "$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT)"; \ fi; \ if test -r $$cat.m; then \ $(INSTALL_DATA) $$cat.m $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \ echo "installing $$cat.m as $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m"; \ else \ if test -r $(srcdir)/$$cat.m ; then \ $(INSTALL_DATA) $(srcdir)/$$cat.m \ $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \ echo "installing $(srcdir)/$$cat as" \ "$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m"; \ else \ true; \ fi; \ fi; \ done if test "$(PACKAGE)" = "glib"; then \ if test -r "$(MKINSTALLDIRS)"; then \ $(MKINSTALLDIRS) $(DESTDIR)$(gettextsrcdir); \ else \ $(SHELL) $(top_srcdir)/mkinstalldirs $(DESTDIR)$(gettextsrcdir); \ fi; \ $(INSTALL_DATA) $(srcdir)/Makefile.in.in \ $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \ else \ : ; \ fi # Define this as empty until I found a useful application. installcheck: uninstall: catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \ rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \ rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \ rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \ done if test "$(PACKAGE)" = "glib"; then \ rm -f $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \ fi check: all dvi info tags TAGS ID: mostlyclean: rm -f core core.* *.pox $(GETTEXT_PACKAGE).po *.old.po cat-id-tbl.tmp rm -fr *.o clean: mostlyclean distclean: clean rm -f Makefile Makefile.in POTFILES *.mo *.msg *.cat *.cat.m maintainer-clean: distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." rm -f $(GMOFILES) distdir = ../$(GETTEXT_PACKAGE)-$(VERSION)/$(subdir) dist distdir: update-po $(DISTFILES) dists="$(DISTFILES)"; \ for file in $$dists; do \ ln $(srcdir)/$$file $(distdir) 2> /dev/null \ || cp -p $(srcdir)/$$file $(distdir); \ done update-po: Makefile $(MAKE) $(GETTEXT_PACKAGE).pot tmpdir=`pwd`; \ cd $(srcdir); \ catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ echo "$$lang:"; \ if $(MSGMERGE) $$lang.po $(GETTEXT_PACKAGE).pot -o $$tmpdir/$$lang.new.po; then \ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ rm -f $$tmpdir/$$lang.new.po; \ else \ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ :; \ else \ echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ rm -f $$tmpdir/$$lang.new.po; \ exit 1; \ fi; \ fi; \ else \ echo "msgmerge for $$cat failed!"; \ rm -f $$tmpdir/$$lang.new.po; \ fi; \ done # POTFILES is created from POTFILES.in by stripping comments, empty lines # and Intltool tags (enclosed in square brackets), and appending a full # relative path to them POTFILES: POTFILES.in ( if test 'x$(srcdir)' != 'x.'; then \ posrcprefix='$(top_srcdir)/'; \ else \ posrcprefix="../"; \ fi; \ rm -f $@-t $@ \ && (sed -e '/^#/d' \ -e "s/^\[.*\] +//" \ -e '/^[ ]*$$/d' \ -e "s@.*@ $$posrcprefix& \\\\@" < $(srcdir)/$@.in \ | sed -e '$$s/\\$$//') > $@-t \ && chmod a-w $@-t \ && mv $@-t $@ ) Makefile: Makefile.in.in ../config.status POTFILES cd .. \ && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ $(SHELL) ./config.status # Tell versions [3.59,3.63) of GNU make not to export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: keytouch-editor-3.2.0-beta/po/nl.po0000644000175000017500000003250710767267151016530 0ustar marvinmarvin# translation of nl.po to # This file is distributed under the same license as the PACKAGE package. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER, 2006. # msgid "" msgstr "" "Project-Id-Version: nl\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-03-16 20:00+0100\n" "PO-Revision-Date: 2006-03-17 22:21+0100\n" "Last-Translator: Marvin Raaijmakers\n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.10.2\n" #: src/main.c:107 #, c-format msgid "" "Error while loading the evdev module: \n" "%s" msgstr "" "Fout tijdens het laden van de evdev module:\n" "%s" #: src/main.c:113 #, c-format msgid "No event devices are available in %s." msgstr "Geen event apparaten beschikbaar in %s." #: src/interface.c:50 msgid "Select keyboard" msgstr "Selecteer toetsenbord" #: src/interface.c:65 msgid "Please select your keyboard:" msgstr "Selecteer uw toetsenbord:" #: src/interface.c:98 msgid "" "Every input device has its own \"event device\". All event devices are " "listed above. You should select the event device of your keyboard.\n" "Click \"OK\" after selecting the keyboard and this program will test if you " "selected the right device.\n" "Note USB keyboards have two event devices. The first is for all \"normal\" " "keys and the second for the extra function keys. Choose the second device." msgstr "" "Ieder invoerapparaat heeft zijn eigen \"event apparaat\". Hierboven ziet u " "een lijst van alle event apparaten. Selecteer het event apparaat van uw " "toetsenbord.\n" "Klik \"OK\" na het selecteren van het toetsenbord en het programma zal " "testen of u het juiste apparaat heeft geselecteerd.\n" "Merk dat USB toetsenborden twee event apparaten hebben. Het eerste apparaat " "is voor alle \"normale\" toetsen en het tweede voor de extra functie " "toetsen. Kies het tweede apparaat." #: src/interface.c:108 src/interface.c:907 msgid "Help information:" msgstr "Help informatie:" #: src/interface.c:244 msgid "keyTouch-editor" msgstr "keyTouch-editor" #: src/interface.c:260 msgid "_File" msgstr "_Bestand" #: src/interface.c:292 msgid "_Edit" msgstr "Be_werken" #: src/interface.c:299 msgid "Change _keyboard..." msgstr "Wijzig _toetsenbord..." #: src/interface.c:306 msgid "_Help" msgstr "_Help" #: src/interface.c:313 msgid "_About" msgstr "_Over" #: src/interface.c:333 msgid "Manufacturer:" msgstr "Fabrikant:" #: src/interface.c:340 msgid "Model:" msgstr "Model:" #: src/interface.c:359 msgid "Keyboard" msgstr "Toetsenbord" #: src/interface.c:416 msgid "Name:" msgstr "Naam:" #: src/interface.c:423 src/callbacks.c:59 msgid "Scancode:" msgstr "Scancode:" #: src/interface.c:463 src/interface.c:602 msgid "_Change..." msgstr "Wijzi_g..." #: src/interface.c:475 msgid "_Program:" msgstr "_Programma:" #: src/interface.c:503 msgid "Plugin:" msgstr "Plugin: " #: src/interface.c:510 msgid "Function:" msgstr "Functie:" #: src/interface.c:541 msgid "Plugin" msgstr "Plugin" #: src/interface.c:546 msgid "Special _action:" msgstr "Speciale _actie:" #: src/interface.c:554 msgid "Default:" msgstr "Standaard:" #: src/interface.c:561 msgid "Keycode:" msgstr "Keycode:" #: src/interface.c:583 msgid "The keys code sent when the keyboard is connected via USB" msgstr "" "De code van de toets wanneer het toetsenbord op de USB poort is aangesloten." #: src/interface.c:606 msgid "USB code:" msgstr "USB code:" #: src/interface.c:613 msgid "Key settings" msgstr "Toets instellingen" #: src/interface.c:618 msgid "Keys" msgstr "Toetsen" #: src/interface.c:778 msgid "Press key" msgstr "Druk op de toets" #: src/interface.c:852 msgid "New key" msgstr "Nieuwe toets" #: src/interface.c:870 msgid "Please enter the name of the new key:" msgstr "Vul de naam van de nieuwe toets in:" #: src/interface.c:897 msgid "" "Choose an appropriate name for the key. Is there for example a text label on " "the key, use the label as the key's name." msgstr "" "Kies een passende naam voor de toets, Wanneer er bijvoorbeeld tekst op de " "toets staat, gebruik dan die tekst als naam." #: src/interface.c:965 src/interface.c:1025 msgid "Contact information" msgstr "Contact informatie" #: src/interface.c:983 msgid "" "Please fill in your real name and e-mail address. This information will be " "used for the administration of the keyboard files.\n" "The e-mail address must be real in order to send the keyboard file." msgstr "" "Vul uw echte naam en uw e-mail adres in. Deze informatie zal worden gebruikt " "voor de administratie van de toetsenbord bestanden.\n" "Het e-mail adres moet echt zijn om het toetsenbord bestand te kunnen " "versturen." #: src/interface.c:999 msgid "Your name:" msgstr "Uw naam:" #: src/interface.c:1006 msgid "E-mail address:" msgstr "E-mail adres:" #: src/interface.c:1094 msgid "About keyTouch-editor" msgstr "Over keyTouch-editor" #: src/interface.c:1123 msgid "Version:" msgstr "Versie:" #: src/interface.c:1137 msgid "Developer:" msgstr "Ontwikkelaar:" #: src/interface.c:1151 msgid "License:" msgstr "Licentie:" #: src/interface.c:1165 msgid "Website:" msgstr "Website:" #: src/interface.c:1172 msgid "http://keytouch.sf.net" msgstr "http://keytouch.sf.net" #: src/callbacks.c:58 msgid "Press the extra function key." msgstr "Druk op de extra functie toets." #: src/callbacks.c:60 msgid "Event description:" msgstr "Event beschrijving:" #: src/callbacks.c:104 msgid "" "Please press one of the extra function keys.\n" "Press \"Cancel\" and select another event device\n" "when this window does not disappear after\n" "pressing the key." msgstr "" "Druk op één van de extra functie toetsen.\n" "Klik op \"Annuleren\" en selecteer een ander event apparaat\n" "wanneer dit venster niet verdwijnt na het indrukken van de toets." #: src/callbacks.c:134 msgid "Please select the event device for your keyboard." msgstr "Selecteer het event apparaat van uw toetsenbord:" #: src/callbacks.c:267 msgid "" "Do you want to send this keyboard file to the developer of keyTouch?\n" "This will help other people with the same keyboard.\n" "Only say \"Yes\" when the keyboard file is finished." msgstr "" "Wilt u dit toetsenbord bestand verzenden naar de ontwikkelaar van keyTouch?\n" "Hiermee helpt u andere mensen met hetzelfde toetsenbord.\n" "Kies alleen \"Ja\" wanneer het toetsenbord bestand af is." #: src/callbacks.c:297 msgid "Save keyboard file" msgstr "Opslaan" #: src/callbacks.c:318 #, c-format msgid "" "A file named \"%s\" already exists. Are you sure you want to overwrite it?" msgstr "" "Een bestand genaamd \"%s\" bestaat al. Weet u zeker dat u het wilt " "overschrijven?" #: src/callbacks.c:329 #, c-format msgid "Failed to save \"%s\"." msgstr "Kan het bestand \"%s\" niet opslaan." #: src/callbacks.c:338 src/evdev.c:77 src/evdev.c:234 src/evdev.c:244 #: src/key_list.c:232 src/key_list.c:274 src/key_list.c:296 src/key_list.c:322 #: src/memory.c:46 src/memory.c:65 msgid "Could not allocate memory." msgstr "Kon geen geheugen reserveren." #: src/callbacks.c:343 msgid "Failed to send the keyboard file." msgstr "Het verzenden van het toetsenbord bestand is mislukt." #: src/callbacks.c:353 msgid "" "The keyboard file has been saved successfully, but cannot yet be imported in " "keyTouch because it is not a valid keyboard file." msgstr "" "Het toetsenbordbestand is succesvol opgeslagen, maar kan nog niet in " "keyTouch geïmporteerd worden omdat het geen geldig toetsenbordbestand is." #: src/callbacks.c:396 #, c-format msgid "" "The keyboard file \"%s\" has been modified.\n" "Do you want to save your changes?" msgstr "" "Het toetsenbord bestand \"%s\" is gewijzigd .\n" "Wilt u de wijzigingen opslaan?" #: src/callbacks.c:452 msgid "Open keyboard file" msgstr "Open" #: src/callbacks.c:657 msgid "Cannot add the key because the name is already in the list." msgstr "Kan de toets niet toevoegen, omdat de naam al in de lijst voor komt." #: src/support.c:90 src/support.c:114 #, c-format msgid "Couldn't find pixmap file: %s" msgstr "Afbeeldingsbestand %s is niet gevonden." #: src/config.c:132 msgid "The keyboard file contains an invalid action element." msgstr "Het toetsenbord bestand bevat een ongeldig action element. " #: src/config.c:146 msgid "The keyboard file contains an invalid action-type value." msgstr "Het toetsenbord bestand bevat een ongeldig action-type waarde." #: src/config.c:221 src/config.c:273 src/check_syntax.c:214 msgid "The keyboard file contains an incomplete key element." msgstr "Het toetsenbord bestand bevat een onvolledig key element. " #: src/config.c:431 #, c-format msgid "'%s' is an invalid keyboard file." msgstr "'%s' is een ongeldig toetsenbord bestand." #: src/config.c:439 #, c-format msgid "The keyboard file '%s' does not contain a keyboard element." msgstr "Het toetsenbord bestand '%s' bevat geen keyboard element. " #: src/config.c:449 #, c-format msgid "The keyboard file '%s' does not contain a key-list element." msgstr "Het toetsenbord bestand '%s' bevat geen key-list element. " #: src/config.c:459 #, c-format msgid "The keyboard file '%s' is invalid." msgstr "Het toetsenbord bestand '%s' is ongeldig." #: src/config.c:478 #, c-format msgid "Failed to read the keyboard name from %s." msgstr "Het lezen van de naam van het toetsenbord van '%s' is mislukt." #: src/config.c:886 #, c-format msgid "'%s' is not a valid XML document." msgstr "'%s' is geen geldig XML document." #: src/evdev.c:230 msgid "Unknown reason" msgstr "Onbekende reden" #: src/get_scancode.c:98 msgid "Failed to read events." msgstr "Het lezen van gebeurtenissen is mislukt." #: src/get_scancode.c:179 #, c-format msgid "Could not open event device '%s'." msgstr "Kon het event apparaat '%s' niet openen." #: src/get_scancode.c:272 #, c-format msgid "Could not open ACPI socket file '%s'." msgstr "Kon het ACPI socket bestand '%s' niet openen." #. *********** Create the view *********** #: src/set_data.c:379 msgid "Device" msgstr "Apparaat" #: src/set_data.c:380 msgid "Device name" msgstr "Apparaat naam" #: src/set_data.c:381 msgid "Bus" msgstr "Bus" #: src/check_syntax.c:106 msgid "" "The keyboard file contains an invalid action element (where the action is a " "plugin)." msgstr "" "Het toetsendbordbestand bevat een ongeldig 'action' element (waarvan de " "actie een plugin in)." #: src/check_syntax.c:114 #, c-format msgid "The keyboard file contains the invalid action-type value '%s'." msgstr "Het toetsenbordbestand bevat het ongeldige 'action-type' waarde '%s'." #: src/check_syntax.c:222 msgid "The keyboard file contains an empty key-name element." msgstr "Het toetsenbordbestand bevat een leeg 'key-name' element." #: src/check_syntax.c:231 #, c-format msgid "The keyboard file contains more than once a key named '%s'." msgstr "Het toetsenbordbestand bevat meer dan één keer een toets genaamd '%s'." #: src/check_syntax.c:254 #, c-format msgid "'%s' is an invalid scancode." msgstr "'%s' is een ongeldige scancode." #: src/check_syntax.c:268 #, c-format msgid "'%s' is an invalid USB code." msgstr "'%s' is een ongeldige USB code." #: src/check_syntax.c:284 #, c-format msgid "Keycode %s is used more than once." msgstr "Keycode %s wordt meer dan één keer gebruikt." #: src/check_syntax.c:296 msgid "The keyboard file contains an empty keycode." msgstr "Het toetsenbord bestand bevat een lege keycode." #: src/check_syntax.c:300 #, c-format msgid "'%s' is an invalid keycode." msgstr "'%s' is een ongeldige keycode." #: src/check_syntax.c:368 #, c-format msgid "The last-change-date \"%s\" of the keyboard file is not a valid date." msgstr "" "De last-change-date \"%s\" van het toetsenbordbesand is geen geldige datum." #: src/check_syntax.c:456 msgid "" "The keyboard file does not provide enough information about the keyboard " "model." msgstr "" "Het toetsenbordbestand bevat onvoldoende informatie over het " "toetsenbordmodel." #: src/check_syntax.c:467 src/check_syntax.c:474 #, c-format msgid "The 'usb-info' element does not contain a '%s' element." msgstr "Het 'usb-info' element bevat geen '%s' element." #: src/check_syntax.c:485 #, c-format msgid "'%s' is an invalid vendor ID." msgstr "'%s' is een ongeldig fabrikant ID." #: src/check_syntax.c:498 #, c-format msgid "'%s' is an invalid product ID." msgstr "'%s' is een ongeldig product ID." #: src/check_syntax.c:555 msgid "The keyboard file does not contain a keyboard element." msgstr "Het toetsenbordbestand bevat geen 'keyboard' element." #: src/check_syntax.c:567 msgid "The keyboard file does not contain a key-list element." msgstr "Het toetsenbordbestand bevat geen 'key-list' element." #: src/check_syntax.c:574 #, c-format msgid "" "The \"keyboard\" element in the keyboard file does not contain a %s element." msgstr "" "Het \"keyboard\" element in het toetsenbordbestand bevat geen '%s' element." #: src/check_syntax.c:579 msgid "" "The syntax version of the keyboard file is not compatible with this version " "of keyTouch." msgstr "" "The syntax versie van het toetsenbordbestand is niet bruikbaar in combinatie " "met deze versie van keyTouch." #: src/check_syntax.c:589 src/check_syntax.c:594 src/check_syntax.c:599 #: src/check_syntax.c:604 #, c-format msgid "The keyboard file does not contain any %s element." msgstr "Het toetsenbordbestand bevat geen enkel %s element." #~ msgid "No scancode. This key is identified by its keycode." #~ msgstr "Geen scancode. Deze toets is herkenbaar aan zijn keycode." #, fuzzy #~ msgid "The event device did not report a scancode or keycode." #~ msgstr "Het event apparaat rapporteerde geen scancode." keytouch-editor-3.2.0-beta/po/de.po0000644000175000017500000003242010767267152016502 0ustar marvinmarvin# translation of de.po to Deutsch # This file is distributed under the same license as the PACKAGE package. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER. # Simon Stroh , 2006. # msgid "" msgstr "" "Project-Id-Version: de\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-03-16 20:00+0100\n" "PO-Revision-Date: 2006-04-17 20:37+0200\n" "Last-Translator: Simon Stroh \n" "Language-Team: Deutsch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.10.2\n" #: src/main.c:107 #, c-format msgid "" "Error while loading the evdev module: \n" "%s" msgstr "" "Fehler beim laden des evdev modules:\n" "%s" #: src/main.c:113 #, c-format msgid "No event devices are available in %s." msgstr "keine Ereignisgeräte sin verfügbar in %s." #: src/interface.c:50 msgid "Select keyboard" msgstr "Tastatur Wählen" #: src/interface.c:65 msgid "Please select your keyboard:" msgstr "Bitte wählen sie ihre Tastatur." #: src/interface.c:98 msgid "" "Every input device has its own \"event device\". All event devices are " "listed above. You should select the event device of your keyboard.\n" "Click \"OK\" after selecting the keyboard and this program will test if you " "selected the right device.\n" "Note USB keyboards have two event devices. The first is for all \"normal\" " "keys and the second for the extra function keys. Choose the second device." msgstr "" "Jedes Eingabe Gerät hat sein eigenes \"Ereignis Gerät\". Alle Ereignis " "Geräte sind oben aufgelistet. Bitte selektieren sie das Ereignis Gerät ihrer " "Tastatur.\n" "Clicken sie \"OK\" wenn sie das richtige Gerät gewählt haben.\n" "(USB Tastaturen haben Zwei Geräte. Das Erste ist für alle \"Normalen\" " "Tasten, und dads Zweite für alle Spezialtasten. Wählen sie das Zweite.)" #: src/interface.c:108 src/interface.c:907 msgid "Help information:" msgstr "Informationen über Hilfe:" #: src/interface.c:244 msgid "keyTouch-editor" msgstr "keyTouch-Editor" #: src/interface.c:260 msgid "_File" msgstr "_Datei" #: src/interface.c:292 msgid "_Edit" msgstr "_Editieren" #: src/interface.c:299 msgid "Change _keyboard..." msgstr "_Tastatur Ändern..." #: src/interface.c:306 msgid "_Help" msgstr "_Hilfe" #: src/interface.c:313 msgid "_About" msgstr "_Über" #: src/interface.c:333 msgid "Manufacturer:" msgstr "Hersteller:" #: src/interface.c:340 msgid "Model:" msgstr "Modell:" #: src/interface.c:359 msgid "Keyboard" msgstr "Tastatur" #: src/interface.c:416 msgid "Name:" msgstr "Name:" #: src/interface.c:423 src/callbacks.c:59 msgid "Scancode:" msgstr "Scancode:" #: src/interface.c:463 src/interface.c:602 msgid "_Change..." msgstr "_Ändern..." #: src/interface.c:475 msgid "_Program:" msgstr "_Programm:" #: src/interface.c:503 msgid "Plugin:" msgstr "Plugin:" #: src/interface.c:510 msgid "Function:" msgstr "Funktion:" #: src/interface.c:541 msgid "Plugin" msgstr "Plugin" #: src/interface.c:546 msgid "Special _action:" msgstr "Spezial _Aktion:" #: src/interface.c:554 msgid "Default:" msgstr "Standard:" #: src/interface.c:561 msgid "Keycode:" msgstr "Keycode:" #: src/interface.c:583 msgid "The keys code sent when the keyboard is connected via USB" msgstr "" #: src/interface.c:606 #, fuzzy msgid "USB code:" msgstr "Scancode:" #: src/interface.c:613 msgid "Key settings" msgstr "Tasten Einstellungen" #: src/interface.c:618 msgid "Keys" msgstr "Tasten" #: src/interface.c:778 msgid "Press key" msgstr "Taste Drücken" #: src/interface.c:852 msgid "New key" msgstr "Neue Taste" #: src/interface.c:870 msgid "Please enter the name of the new key:" msgstr "Bitte den Namen der neuen Taste eingeben." #: src/interface.c:897 msgid "" "Choose an appropriate name for the key. Is there for example a text label on " "the key, use the label as the key's name." msgstr "" "Wählen sie einen passenden Namen für dee Taste. Ist z.B. auf der Taste Text, " "verwenden sie diesen als Namen." #: src/interface.c:965 src/interface.c:1025 msgid "Contact information" msgstr "" #: src/interface.c:983 msgid "" "Please fill in your real name and e-mail address. This information will be " "used for the administration of the keyboard files.\n" "The e-mail address must be real in order to send the keyboard file." msgstr "" "Bitte geben sie ihren echten Namen und E-mail Addresse ein. Diese " "Informationen werden zur Administration der Tastatur Datein verwendet.\n" "Die E-mail Addresse muss echt sein damit die Tastur Datei verschickt wird." #: src/interface.c:999 msgid "Your name:" msgstr "Ihr Name:" #: src/interface.c:1006 msgid "E-mail address:" msgstr "Ihre E-mail Addresse:" #: src/interface.c:1094 msgid "About keyTouch-editor" msgstr "Über keyTouch-editor" #: src/interface.c:1123 msgid "Version:" msgstr "Version:" #: src/interface.c:1137 msgid "Developer:" msgstr "Entwickler:" #: src/interface.c:1151 msgid "License:" msgstr "Lizens:" #: src/interface.c:1165 msgid "Website:" msgstr "Webseite:" #: src/interface.c:1172 msgid "http://keytouch.sf.net" msgstr "http://keytouch.sf.net" #: src/callbacks.c:58 msgid "Press the extra function key." msgstr "Drücken sie die Spezialtaste." #: src/callbacks.c:60 msgid "Event description:" msgstr "" #: src/callbacks.c:104 msgid "" "Please press one of the extra function keys.\n" "Press \"Cancel\" and select another event device\n" "when this window does not disappear after\n" "pressing the key." msgstr "" "Bitte drücken sie eine der Spezialtasten.\n" "Drücken sie \"Abbrechen\" und wählen sie ein anderes Gerät \n" "falls dieses Fenster nicht nach dem Drücken der Taste verschwindet." #: src/callbacks.c:134 msgid "Please select the event device for your keyboard." msgstr "Bitte wählen sie das Ereignis Gerät für ihre Tastatur." #: src/callbacks.c:267 msgid "" "Do you want to send this keyboard file to the developer of keyTouch?\n" "This will help other people with the same keyboard.\n" "Only say \"Yes\" when the keyboard file is finished." msgstr "" "Wollen sie diese Datei dem Entwickler von keyTouch schicken ?\n" "Das wird anderen Leuten mit der gleichen Tastatur helfen.\n" "Drücken sie nur dann \"Ja\" wenn die Tastatur Datei fertiggestellt wurde." #: src/callbacks.c:297 msgid "Save keyboard file" msgstr "Tastatur Datei speichern." #: src/callbacks.c:318 #, c-format msgid "" "A file named \"%s\" already exists. Are you sure you want to overwrite it?" msgstr "" "Die Datei \"%s\" existiert bereits. Sind Sie sicher, daß sie überschrieben " "werden soll?" #: src/callbacks.c:329 #, fuzzy, c-format msgid "Failed to save \"%s\"." msgstr "Ereignise lesen fehlgeschlage" #: src/callbacks.c:338 src/evdev.c:77 src/evdev.c:234 src/evdev.c:244 #: src/key_list.c:232 src/key_list.c:274 src/key_list.c:296 src/key_list.c:322 #: src/memory.c:46 src/memory.c:65 msgid "Could not allocate memory." msgstr "Konnte Speicherplatz nicht allozieren." #: src/callbacks.c:343 msgid "Failed to send the keyboard file." msgstr "Tastatur Datei konnte nicht gesendet werden." #: src/callbacks.c:353 msgid "" "The keyboard file has been saved successfully, but cannot yet be imported in " "keyTouch because it is not a valid keyboard file." msgstr "" #: src/callbacks.c:396 #, c-format msgid "" "The keyboard file \"%s\" has been modified.\n" "Do you want to save your changes?" msgstr "" "Die Tastatur Datei '%s' wurde verändert.\n" "Wollen sie ihre Änderungen speichern?" #: src/callbacks.c:452 msgid "Open keyboard file" msgstr "Öffne Tastatur Datei" #: src/callbacks.c:657 msgid "Cannot add the key because the name is already in the list." msgstr "" "Konnte die Taste nich hinzufügen weil der Name in der Liste schon vorhanden " "ist." #: src/support.c:90 src/support.c:114 #, c-format msgid "Couldn't find pixmap file: %s" msgstr "Konnte pixmap Datei micht finden: '%s'" #: src/config.c:132 #, fuzzy msgid "The keyboard file contains an invalid action element." msgstr "" "Die Tastatur Konfigurations Datei enthält ein ungültiges 'action' Element." #: src/config.c:146 #, fuzzy msgid "The keyboard file contains an invalid action-type value." msgstr "" "Die Tastatur Konfigurations Datei enthält einen ungültigen 'action-type' " "Wert." #: src/config.c:221 src/config.c:273 src/check_syntax.c:214 msgid "The keyboard file contains an incomplete key element." msgstr "Die Tastatur Datei enthält ein unvollständiges 'key' Element." #: src/config.c:431 #, c-format msgid "'%s' is an invalid keyboard file." msgstr "'%s' ist eine ungültige Tastatur Datei," #: src/config.c:439 #, c-format msgid "The keyboard file '%s' does not contain a keyboard element." msgstr "Die Tastatur Datei '%s' enthält kein 'keyboard' Element." #: src/config.c:449 #, c-format msgid "The keyboard file '%s' does not contain a key-list element." msgstr "Die Tastatur Datei '%s' enthält kein 'key-list' Element." #: src/config.c:459 #, c-format msgid "The keyboard file '%s' is invalid." msgstr "Die Tastatur Datei '%s ist ungültig." #: src/config.c:478 #, c-format msgid "Failed to read the keyboard name from %s." msgstr "Tastatur Name konnte nicht von %s gelesen werden." #: src/config.c:886 #, c-format msgid "'%s' is not a valid XML document." msgstr "" #: src/evdev.c:230 msgid "Unknown reason" msgstr "Unbekannter Grund" #: src/get_scancode.c:98 msgid "Failed to read events." msgstr "Ereignise lesen fehlgeschlage" #: src/get_scancode.c:179 #, c-format msgid "Could not open event device '%s'." msgstr "Konnte Ereignis Gerät nicht öffnen: '%s'" #: src/get_scancode.c:272 #, fuzzy, c-format msgid "Could not open ACPI socket file '%s'." msgstr "Konnte Ereignis Gerät nicht öffnen: '%s'" #. *********** Create the view *********** #: src/set_data.c:379 msgid "Device" msgstr "Gerät" #: src/set_data.c:380 msgid "Device name" msgstr "Geräte Name" #: src/set_data.c:381 msgid "Bus" msgstr "Bus" #: src/check_syntax.c:106 #, fuzzy msgid "" "The keyboard file contains an invalid action element (where the action is a " "plugin)." msgstr "" "Die Tastatur Konfigurations Datei enthält ein ungültiges 'action' Element." #: src/check_syntax.c:114 #, fuzzy, c-format msgid "The keyboard file contains the invalid action-type value '%s'." msgstr "" "Die Tastatur Konfigurations Datei enthält einen ungültigen 'action-type' " "Wert." #: src/check_syntax.c:222 #, fuzzy msgid "The keyboard file contains an empty key-name element." msgstr "Die Tastatur Datei enthält ein unvollständiges 'key' Element." #: src/check_syntax.c:231 #, fuzzy, c-format msgid "The keyboard file contains more than once a key named '%s'." msgstr "Die Tastatur Datei enthält ein unvollständiges 'key' Element." #: src/check_syntax.c:254 #, fuzzy, c-format msgid "'%s' is an invalid scancode." msgstr "'%s' ist eine ungültige Tastatur Datei," #: src/check_syntax.c:268 #, fuzzy, c-format msgid "'%s' is an invalid USB code." msgstr "'%s' ist eine ungültige Tastatur Datei," #: src/check_syntax.c:284 #, c-format msgid "Keycode %s is used more than once." msgstr "" #: src/check_syntax.c:296 #, fuzzy msgid "The keyboard file contains an empty keycode." msgstr "Die Tastatur Datei enthält ein unvollständiges 'key' Element." #: src/check_syntax.c:300 #, fuzzy, c-format msgid "'%s' is an invalid keycode." msgstr "'%s' ist eine ungültige Tastatur Datei," #: src/check_syntax.c:368 #, c-format msgid "The last-change-date \"%s\" of the keyboard file is not a valid date." msgstr "" #: src/check_syntax.c:456 #, fuzzy msgid "" "The keyboard file does not provide enough information about the keyboard " "model." msgstr "Die Tastatur Datei '%s' enthält kein 'keyboard' Element." #: src/check_syntax.c:467 src/check_syntax.c:474 #, fuzzy, c-format msgid "The 'usb-info' element does not contain a '%s' element." msgstr "Die Tastatur Datei '%s' enthält kein 'key-list' Element." #: src/check_syntax.c:485 #, fuzzy, c-format msgid "'%s' is an invalid vendor ID." msgstr "'%s' ist eine ungültige Tastatur Datei," #: src/check_syntax.c:498 #, fuzzy, c-format msgid "'%s' is an invalid product ID." msgstr "'%s' ist eine ungültige Tastatur Datei," #: src/check_syntax.c:555 #, fuzzy msgid "The keyboard file does not contain a keyboard element." msgstr "Die Tastatur Datei '%s' enthält kein 'keyboard' Element." #: src/check_syntax.c:567 #, fuzzy msgid "The keyboard file does not contain a key-list element." msgstr "Die Tastatur Datei '%s' enthält kein 'key-list' Element." #: src/check_syntax.c:574 #, fuzzy, c-format msgid "" "The \"keyboard\" element in the keyboard file does not contain a %s element." msgstr "Die Tastatur Datei '%s' enthält kein 'key-list' Element." #: src/check_syntax.c:579 msgid "" "The syntax version of the keyboard file is not compatible with this version " "of keyTouch." msgstr "" #: src/check_syntax.c:589 src/check_syntax.c:594 src/check_syntax.c:599 #: src/check_syntax.c:604 #, fuzzy, c-format msgid "The keyboard file does not contain any %s element." msgstr "Die Tastatur Datei '%s' enthält kein 'key-list' Element." #~ msgid "No scancode. This key is identified by its keycode." #~ msgstr "" #~ "Kein Scnacode. Diese Taste wird anhand ihres keycodes identifiziert." #~ msgid "" #~ "The keyboard (configuration) file contains an invalid action-type value." #~ msgstr "" #~ "Die Tastatur Konfigurations Datei enthält einen ungültigen 'action-type' " #~ "Wert." #~ msgid "The event device did not report a scancode or keycode." #~ msgstr "Das Ereignis Gerät hat keinen scan- oder keycode gemeldet." keytouch-editor-3.2.0-beta/po/sv.po0000644000175000017500000003262610767267152016552 0ustar marvinmarvin# Swedish translation of keytouch-editor. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the keytouch-editor package. # Daniel Nylander , 2006. # msgid "" msgstr "" "Project-Id-Version: keytouch-editor 3.1-b1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-03-16 20:00+0100\n" "PO-Revision-Date: 2006-11-19 20:38+0100\n" "Last-Translator: Daniel Nylander \n" "Language-Team: Swedish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" #: src/main.c:107 #, c-format msgid "" "Error while loading the evdev module: \n" "%s" msgstr "" "Fel vid inläsning av modulen endev: \n" "%s" #: src/main.c:113 #, c-format msgid "No event devices are available in %s." msgstr "Inga händelseenheter finns tillgängliga i %s." #: src/interface.c:50 msgid "Select keyboard" msgstr "Välj tangentbord" #: src/interface.c:65 msgid "Please select your keyboard:" msgstr "Välj ditt tangentbord:" #: src/interface.c:98 msgid "" "Every input device has its own \"event device\". All event devices are " "listed above. You should select the event device of your keyboard.\n" "Click \"OK\" after selecting the keyboard and this program will test if you " "selected the right device.\n" "Note USB keyboards have two event devices. The first is for all \"normal\" " "keys and the second for the extra function keys. Choose the second device." msgstr "" "Varje inmatningsenhet har sin egna \"händelseenhet\". Alla händelseenheter " "listas ovan. Du bör välja händelseenheten för ditt tangentbord.\n" "Klicka pÃ¥ \"OK\" efter tangentbordet har valts och detta program kommer att " "testa om du har valt rätt enhet.\n" "Notera att USB-tangentbord har tvÃ¥ händelseenheter. Den första är för alla " "\"normala\" och den andra för de extra funktionstangenterna. Välj den andra " "enheten." #: src/interface.c:108 src/interface.c:907 msgid "Help information:" msgstr "Hjälpinformation:" #: src/interface.c:244 msgid "keyTouch-editor" msgstr "keyTouch-redigerare" #: src/interface.c:260 msgid "_File" msgstr "_Arkiv" #: src/interface.c:292 msgid "_Edit" msgstr "R_edigera" #: src/interface.c:299 msgid "Change _keyboard..." msgstr "Byt _tangentbord..." #: src/interface.c:306 msgid "_Help" msgstr "_Hjälp" #: src/interface.c:313 msgid "_About" msgstr "_Om" #: src/interface.c:333 msgid "Manufacturer:" msgstr "Tillverkare:" #: src/interface.c:340 msgid "Model:" msgstr "Modell:" #: src/interface.c:359 msgid "Keyboard" msgstr "Tangentbord" #: src/interface.c:416 msgid "Name:" msgstr "Namn:" # Denna behöver en bättre översättning #: src/interface.c:423 src/callbacks.c:59 msgid "Scancode:" msgstr "Avläsningskod:" #: src/interface.c:463 src/interface.c:602 msgid "_Change..." msgstr "Ä_ndra..." #: src/interface.c:475 msgid "_Program:" msgstr "_Program:" #: src/interface.c:503 msgid "Plugin:" msgstr "Insticksmodul:" #: src/interface.c:510 msgid "Function:" msgstr "Funktion:" #: src/interface.c:541 msgid "Plugin" msgstr "Insticksmodul" #: src/interface.c:546 msgid "Special _action:" msgstr "Special_händelse:" #: src/interface.c:554 msgid "Default:" msgstr "Standard:" #: src/interface.c:561 msgid "Keycode:" msgstr "Tangentkod:" #: src/interface.c:583 msgid "The keys code sent when the keyboard is connected via USB" msgstr "" # Denna behöver en bättre översättning #: src/interface.c:606 #, fuzzy msgid "USB code:" msgstr "Avläsningskod:" #: src/interface.c:613 msgid "Key settings" msgstr "Tangentinställningar" #: src/interface.c:618 msgid "Keys" msgstr "Tangenter" #: src/interface.c:778 msgid "Press key" msgstr "Tryck tangent" #: src/interface.c:852 msgid "New key" msgstr "Ny tangent" #: src/interface.c:870 msgid "Please enter the name of the new key:" msgstr "Ange namnet pÃ¥ den nya tangenten:" #: src/interface.c:897 msgid "" "Choose an appropriate name for the key. Is there for example a text label on " "the key, use the label as the key's name." msgstr "" "Välj ett lämpligt namn för tangenten. Finns det till exempel en text pÃ¥ " "tangenten, använd texten som namn pÃ¥ tangenten." #: src/interface.c:965 src/interface.c:1025 msgid "Contact information" msgstr "Kontaktinformation" #: src/interface.c:983 msgid "" "Please fill in your real name and e-mail address. This information will be " "used for the administration of the keyboard files.\n" "The e-mail address must be real in order to send the keyboard file." msgstr "" "Fyll i ditt verkliga namn och e-postadress. Denna information kommer att " "användas för administration av tangentbordsfiler.\n" "E-postadressen mÃ¥ste vara riktig för att kunna skicka tangentbordsfilen." #: src/interface.c:999 msgid "Your name:" msgstr "Ditt namn:" #: src/interface.c:1006 msgid "E-mail address:" msgstr "E-postadress:" #: src/interface.c:1094 msgid "About keyTouch-editor" msgstr "Om keyTouch-editor" #: src/interface.c:1123 msgid "Version:" msgstr "Version:" #: src/interface.c:1137 msgid "Developer:" msgstr "Utvecklare:" #: src/interface.c:1151 msgid "License:" msgstr "Licens:" #: src/interface.c:1165 msgid "Website:" msgstr "Webbplats:" #: src/interface.c:1172 msgid "http://keytouch.sf.net" msgstr "http://keytouch.sf.net" #: src/callbacks.c:58 msgid "Press the extra function key." msgstr "Tryck ner den extra funktionstangenten." #: src/callbacks.c:60 msgid "Event description:" msgstr "Händelsebeskrivning:" #: src/callbacks.c:104 msgid "" "Please press one of the extra function keys.\n" "Press \"Cancel\" and select another event device\n" "when this window does not disappear after\n" "pressing the key." msgstr "" "Tryck ner en av de extra funktionstangenterna.\n" "Tryck \"Avbryt\" och välj en annan händelseenhet\n" "när detta fönster inte försvinner efter att\n" "tangenten har tryckts ner." #: src/callbacks.c:134 msgid "Please select the event device for your keyboard." msgstr "Välj händelseenhet för ditt tangentbord." #: src/callbacks.c:267 msgid "" "Do you want to send this keyboard file to the developer of keyTouch?\n" "This will help other people with the same keyboard.\n" "Only say \"Yes\" when the keyboard file is finished." msgstr "" "Vill du skicka denna tangentbordsfil till utvecklaren av keyTouch?\n" "Detta kan hjälpa andra personer med likadana tangentbord.\n" "Bara att säga \"Ja\" när tangentbordsfilen är färdig." #: src/callbacks.c:297 msgid "Save keyboard file" msgstr "Spara tangentbordsfil" #: src/callbacks.c:318 #, c-format msgid "" "A file named \"%s\" already exists. Are you sure you want to overwrite it?" msgstr "" "En fil med namnet \"%s\" finns redan. Är du säker pÃ¥ att du vill skriva över " "den?" #: src/callbacks.c:329 #, c-format msgid "Failed to save \"%s\"." msgstr "Misslyckades med att spara \"%s\"." #: src/callbacks.c:338 src/evdev.c:77 src/evdev.c:234 src/evdev.c:244 #: src/key_list.c:232 src/key_list.c:274 src/key_list.c:296 src/key_list.c:322 #: src/memory.c:46 src/memory.c:65 msgid "Could not allocate memory." msgstr "Kunde inte allokera minne." #: src/callbacks.c:343 msgid "Failed to send the keyboard file." msgstr "Misslyckades med att skicka tangentbordsfilen." #: src/callbacks.c:353 msgid "" "The keyboard file has been saved successfully, but cannot yet be imported in " "keyTouch because it is not a valid keyboard file." msgstr "" "Tangentbordsfilen har sparats men kan ännu inte importeras in i keyTouch " "därför att den inte är en giltig tangentbordsfil." #: src/callbacks.c:396 #, c-format msgid "" "The keyboard file \"%s\" has been modified.\n" "Do you want to save your changes?" msgstr "" "Tangentbordsfile \"%s\" har ändrats.\n" "Vill du spara dina ändringar?" #: src/callbacks.c:452 msgid "Open keyboard file" msgstr "Öppna tangentbordsfil" #: src/callbacks.c:657 msgid "Cannot add the key because the name is already in the list." msgstr "" "Kan inte lägga till tangenten pÃ¥ grund av att namnet redan finns i listan." #: src/support.c:90 src/support.c:114 #, c-format msgid "Couldn't find pixmap file: %s" msgstr "Kunde inte hitta bildfil: %s" #: src/config.c:132 msgid "The keyboard file contains an invalid action element." msgstr "Tangentbordsfilen innehÃ¥ller ett ogiltigt action-element." #: src/config.c:146 msgid "The keyboard file contains an invalid action-type value." msgstr "Tangentbordsfilen innehÃ¥ller ett ogiltigt action-type-värde." #: src/config.c:221 src/config.c:273 src/check_syntax.c:214 msgid "The keyboard file contains an incomplete key element." msgstr "Tangentbordsfilen innehÃ¥ller ett ej komplett key-element." #: src/config.c:431 #, c-format msgid "'%s' is an invalid keyboard file." msgstr "\"%s\" är en ogiltig tangentbordsfil." #: src/config.c:439 #, c-format msgid "The keyboard file '%s' does not contain a keyboard element." msgstr "Tangentbordsfilen \"%s\" innehÃ¥ller inte ett keyboard-element." #: src/config.c:449 #, c-format msgid "The keyboard file '%s' does not contain a key-list element." msgstr "Tangentbordsfilen \"%s\" innehÃ¥ller inte ett key-list-element." #: src/config.c:459 #, c-format msgid "The keyboard file '%s' is invalid." msgstr "Tangentbordsfilen \"%s\" är ogiltig." #: src/config.c:478 #, c-format msgid "Failed to read the keyboard name from %s." msgstr "Misslyckades med att läsa tangentbordsnamnet frÃ¥n %s." #: src/config.c:886 #, c-format msgid "'%s' is not a valid XML document." msgstr "\"%s\" är inte ett giltigt XML-dokument." #: src/evdev.c:230 msgid "Unknown reason" msgstr "Okänd anledning" #: src/get_scancode.c:98 msgid "Failed to read events." msgstr "Misslyckades med att läsa händelser." #: src/get_scancode.c:179 #, c-format msgid "Could not open event device '%s'." msgstr "Kunde inte öppna händelseenheten \"%s\"." #: src/get_scancode.c:272 #, c-format msgid "Could not open ACPI socket file '%s'." msgstr "Kunde inte öppna ACPI-uttagsfilen \"%s\"." #. *********** Create the view *********** #: src/set_data.c:379 msgid "Device" msgstr "Enhet" #: src/set_data.c:380 msgid "Device name" msgstr "Enhetsnamn" #: src/set_data.c:381 msgid "Bus" msgstr "Buss" #: src/check_syntax.c:106 msgid "" "The keyboard file contains an invalid action element (where the action is a " "plugin)." msgstr "" "Tangentbordsfilen innehÃ¥ller ett ogiltigt action-element (där Ã¥tgärden är en " "insticksmodul)." #: src/check_syntax.c:114 #, c-format msgid "The keyboard file contains the invalid action-type value '%s'." msgstr "Tangentbordsfilen innehÃ¥ller det ogiltiga action-type-värdet \"%s\"." #: src/check_syntax.c:222 msgid "The keyboard file contains an empty key-name element." msgstr "Tangentbordsfilen innehÃ¥ller ett tomt värde för elementet key-name." #: src/check_syntax.c:231 #, c-format msgid "The keyboard file contains more than once a key named '%s'." msgstr "" "Tangentbordsfilen innehÃ¥ller en nyckel med namnet \"%s\" som används fler än " "en gÃ¥ng." #: src/check_syntax.c:254 #, c-format msgid "'%s' is an invalid scancode." msgstr "\"%s\" är en ogiltig avläsningskod." #: src/check_syntax.c:268 #, fuzzy, c-format msgid "'%s' is an invalid USB code." msgstr "\"%s\" är en ogiltig tangentkod." #: src/check_syntax.c:284 #, c-format msgid "Keycode %s is used more than once." msgstr "Tangentkoden %s används fler än en gÃ¥ng." #: src/check_syntax.c:296 msgid "The keyboard file contains an empty keycode." msgstr "Tangentbordsfilen innehÃ¥ller en tom tangentkod." #: src/check_syntax.c:300 #, c-format msgid "'%s' is an invalid keycode." msgstr "\"%s\" är en ogiltig tangentkod." #: src/check_syntax.c:368 #, c-format msgid "The last-change-date \"%s\" of the keyboard file is not a valid date." msgstr "" "Värdet för last-change-date, \"%s\", i tangentbordsfilen är inte ett giltigt " "datum." #: src/check_syntax.c:456 #, fuzzy msgid "" "The keyboard file does not provide enough information about the keyboard " "model." msgstr "" "Tangentbordsfilen tillhandahÃ¥ller inte tillräckligt med information om " "tangentbordsmodellen." #: src/check_syntax.c:467 src/check_syntax.c:474 #, fuzzy, c-format msgid "The 'usb-info' element does not contain a '%s' element." msgstr "Tangentbordsfilen innehÃ¥ller inte ett %s-element." #: src/check_syntax.c:485 #, fuzzy, c-format msgid "'%s' is an invalid vendor ID." msgstr "\"%s\" är en ogiltig tangentkod." #: src/check_syntax.c:498 #, fuzzy, c-format msgid "'%s' is an invalid product ID." msgstr "\"%s\" är en ogiltig tangentkod." #: src/check_syntax.c:555 msgid "The keyboard file does not contain a keyboard element." msgstr "Tangentbordsfilen innehÃ¥ller inte ett keyboard-element." #: src/check_syntax.c:567 msgid "The keyboard file does not contain a key-list element." msgstr "Tangentbordsfilen innehÃ¥ller inte ett key-list-element." #: src/check_syntax.c:574 #, c-format msgid "" "The \"keyboard\" element in the keyboard file does not contain a %s element." msgstr "" "Elementet \"keyboard\" i tangentbordsfilen innehÃ¥ller inte ett %s-element." #: src/check_syntax.c:579 msgid "" "The syntax version of the keyboard file is not compatible with this version " "of keyTouch." msgstr "" "Syntaxversionen för tangentbordsfilen är inte kompatibel med denna version " "av keyTouch." #: src/check_syntax.c:589 src/check_syntax.c:594 src/check_syntax.c:599 #: src/check_syntax.c:604 #, c-format msgid "The keyboard file does not contain any %s element." msgstr "Tangentbordsfilen innehÃ¥ller inte ett %s-element." #~ msgid "No scancode. This key is identified by its keycode." #~ msgstr "" #~ "Ingen avläsningskod. Denna tangent identifieras efter sin tangentkod." keytouch-editor-3.2.0-beta/po/ga.po0000644000175000017500000003232610767267152016506 0ustar marvinmarvin# Irish translations for keytouch-editor. # Copyright (C) 2006 Free Software Foundation, Inc. # This file is distributed under the same license as the keytouch-editor package. # Kevin Patrick Scannell , 2006. # msgid "" msgstr "" "Project-Id-Version: keytouch-editor 3.1-b1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-03-16 20:00+0100\n" "PO-Revision-Date: 2006-11-16 16:16-0500\n" "Last-Translator: Kevin Scannell \n" "Language-Team: Irish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" #: src/main.c:107 #, c-format msgid "" "Error while loading the evdev module: \n" "%s" msgstr "" "Tharla earráid agus modúl evdev á luchtú: \n" "%s" #: src/main.c:113 #, c-format msgid "No event devices are available in %s." msgstr "Níl gléas teagmhais ar bith ar fáil i %s." #: src/interface.c:50 msgid "Select keyboard" msgstr "Roghnaigh méarchlár" #: src/interface.c:65 msgid "Please select your keyboard:" msgstr "Roghnaigh do mhéarchlár:" #: src/interface.c:98 msgid "" "Every input device has its own \"event device\". All event devices are " "listed above. You should select the event device of your keyboard.\n" "Click \"OK\" after selecting the keyboard and this program will test if you " "selected the right device.\n" "Note USB keyboards have two event devices. The first is for all \"normal\" " "keys and the second for the extra function keys. Choose the second device." msgstr "" "Tá \"gléas teagmhais\" ag gach uile ghléas ionchurtha. Tá gach gléas " "teagmhais sa liosta thuas. Ba chóir duit an gléas teagmhais a bhaineann le " "do mhéarchlár a roghnú.\n" "Cliceáil \"OK\" nuair a roghnaíonn tú an méarchlár agus seiceálfaidh an clár " "seo an bhfuil an gléas ceart roghnaithe agat.\n" "Tabhair faoi deara go bhfuil dhá ghléas teagmhais ag méarchláir USB. Is le " "haghaidh na \"gnátheochracha\" é an chéad cheann, agus is le haghaidh na " "feidhmeochracha é an dara ceann. Roghnaigh an dara gléas." #: src/interface.c:108 src/interface.c:907 msgid "Help information:" msgstr "Eolas cabhrach:" #: src/interface.c:244 msgid "keyTouch-editor" msgstr "keyTouch-editor" #: src/interface.c:260 msgid "_File" msgstr "_Comhad" #: src/interface.c:292 msgid "_Edit" msgstr "_Eagar" #: src/interface.c:299 msgid "Change _keyboard..." msgstr "Athraigh an _méarchlár..." #: src/interface.c:306 msgid "_Help" msgstr "_Cabhair" #: src/interface.c:313 msgid "_About" msgstr "_Eolas" #: src/interface.c:333 msgid "Manufacturer:" msgstr "Déantóir:" #: src/interface.c:340 msgid "Model:" msgstr "Samhail:" #: src/interface.c:359 msgid "Keyboard" msgstr "Méarchlár" #: src/interface.c:416 msgid "Name:" msgstr "Ainm:" #: src/interface.c:423 src/callbacks.c:59 msgid "Scancode:" msgstr "Scanchód:" #: src/interface.c:463 src/interface.c:602 msgid "_Change..." msgstr "_Athraigh..." #: src/interface.c:475 msgid "_Program:" msgstr "_Clár:" #: src/interface.c:503 msgid "Plugin:" msgstr "Breiseán:" #: src/interface.c:510 msgid "Function:" msgstr "Feidhm:" #: src/interface.c:541 msgid "Plugin" msgstr "Breiseán" #: src/interface.c:546 msgid "Special _action:" msgstr "_Gníomh speisialta:" #: src/interface.c:554 msgid "Default:" msgstr "Réamhshocrú:" #: src/interface.c:561 msgid "Keycode:" msgstr "Cód eochrach:" #: src/interface.c:583 msgid "The keys code sent when the keyboard is connected via USB" msgstr "" #: src/interface.c:606 #, fuzzy msgid "USB code:" msgstr "Scanchód:" #: src/interface.c:613 msgid "Key settings" msgstr "Socruithe eochrach" #: src/interface.c:618 msgid "Keys" msgstr "Eochracha" #: src/interface.c:778 msgid "Press key" msgstr "Brúigh eochair" #: src/interface.c:852 msgid "New key" msgstr "Eochair nua" #: src/interface.c:870 msgid "Please enter the name of the new key:" msgstr "Iontráil ainm ar an eochair nua:" #: src/interface.c:897 msgid "" "Choose an appropriate name for the key. Is there for example a text label on " "the key, use the label as the key's name." msgstr "" "Tabhair ainm oiriúnach ar an eochair. Má tá lipéad téacs ar an eochair, mar " "shampla, úsáid é sin mar ainm." #: src/interface.c:965 src/interface.c:1025 msgid "Contact information" msgstr "Eolas teagmhála" #: src/interface.c:983 msgid "" "Please fill in your real name and e-mail address. This information will be " "used for the administration of the keyboard files.\n" "The e-mail address must be real in order to send the keyboard file." msgstr "" "Líon isteach d'ainm agus do sheoladh ríomhphoist. Úsáidfear an fhaisnéis seo " "chun an comhad méarchláir a bhainistiú.\n" "Ní mór duit fíorsheoladh a thabhairt chun an comhad méarchlár a sheoladh." #: src/interface.c:999 msgid "Your name:" msgstr "D'ainm:" #: src/interface.c:1006 msgid "E-mail address:" msgstr "Seoladh ríomhphoist:" #: src/interface.c:1094 msgid "About keyTouch-editor" msgstr "Maidir le keyTouch-editor" #: src/interface.c:1123 msgid "Version:" msgstr "Leagan:" #: src/interface.c:1137 msgid "Developer:" msgstr "Forbróir:" #: src/interface.c:1151 msgid "License:" msgstr "Ceadúnas:" #: src/interface.c:1165 msgid "Website:" msgstr "Suíomh Gréasáin:" #: src/interface.c:1172 msgid "http://keytouch.sf.net" msgstr "http://keytouch.sf.net/" #: src/callbacks.c:58 msgid "Press the extra function key." msgstr "Brúigh an fheidhmeochair bhreise." #: src/callbacks.c:60 msgid "Event description:" msgstr "Cur síos ar an teagmhas:" #: src/callbacks.c:104 msgid "" "Please press one of the extra function keys.\n" "Press \"Cancel\" and select another event device\n" "when this window does not disappear after\n" "pressing the key." msgstr "" "Brúigh ceann de na feidhmeochracha breise.\n" "Brúigh \"Cealaigh\" agus roghnaigh gléas teagmhais eile\n" "má bhrúnn tú an eochair ach fanann an fhuinneog." #: src/callbacks.c:134 msgid "Please select the event device for your keyboard." msgstr "Roghnaigh an gléas teagmhais le haghaidh do mhéarchláir." #: src/callbacks.c:267 msgid "" "Do you want to send this keyboard file to the developer of keyTouch?\n" "This will help other people with the same keyboard.\n" "Only say \"Yes\" when the keyboard file is finished." msgstr "" "Ar mhaith leat an comhad méarchláir seo a sheoladh chuig forbróir keyTouch?\n" "Cabhróidh sé le daoine a bhfuil an méarchlár céanna acu.\n" "Ná habair \"Yes\" mura bhfuil an comhad curtha i gcrích." #: src/callbacks.c:297 msgid "Save keyboard file" msgstr "Sábháil an comhad méarchláir" #: src/callbacks.c:318 #, c-format msgid "" "A file named \"%s\" already exists. Are you sure you want to overwrite it?" msgstr "" "Tá comhad darb ainm \"%s\" ann cheana. An bhfuil tú cinnte gur mian leat " "scríobh air?" #: src/callbacks.c:329 #, c-format msgid "Failed to save \"%s\"." msgstr "Theip ar shábháil \"%s\"." #: src/callbacks.c:338 src/evdev.c:77 src/evdev.c:234 src/evdev.c:244 #: src/key_list.c:232 src/key_list.c:274 src/key_list.c:296 src/key_list.c:322 #: src/memory.c:46 src/memory.c:65 msgid "Could not allocate memory." msgstr "Níorbh fhéidir cuimhne a dháileadh." #: src/callbacks.c:343 msgid "Failed to send the keyboard file." msgstr "Theip ar sheoladh an chomhaid méarchláir." #: src/callbacks.c:353 msgid "" "The keyboard file has been saved successfully, but cannot yet be imported in " "keyTouch because it is not a valid keyboard file." msgstr "" "D'éirigh le sábháil an chomhaid mhéarchláir, ach ní féidir é a iompórtáil " "fós toisc nach bhfuil sé bailí mar chomhad méarchláir." #: src/callbacks.c:396 #, c-format msgid "" "The keyboard file \"%s\" has been modified.\n" "Do you want to save your changes?" msgstr "" "Athraíodh an comhad méarchláir \"%s\".\n" "Ar mhaith leat do chuid athruithe a shábháil?" #: src/callbacks.c:452 msgid "Open keyboard file" msgstr "Oscail comhad méarchláir" #: src/callbacks.c:657 msgid "Cannot add the key because the name is already in the list." msgstr "" "Ní féidir an eochair a chur leis toisc go bhfuil an t-ainm sa liosta cheana." #: src/support.c:90 src/support.c:114 #, c-format msgid "Couldn't find pixmap file: %s" msgstr "Níorbh fhéidir an mapa picteilíní a aimsiú: %s" #: src/config.c:132 msgid "The keyboard file contains an invalid action element." msgstr "Tá eilimint neamhbhailí ghnímh sa chomhad méarchláir." #: src/config.c:146 msgid "The keyboard file contains an invalid action-type value." msgstr "Tá luach neamhbhailí ghnímh sa chomhad méarchláir." #: src/config.c:221 src/config.c:273 src/check_syntax.c:214 msgid "The keyboard file contains an incomplete key element." msgstr "Tá eilimint neamhiomlán eochrach sa chomhad méarchláir." #: src/config.c:431 #, c-format msgid "'%s' is an invalid keyboard file." msgstr "Is comhad neamhbhailí méarchláir é '%s'." #: src/config.c:439 #, c-format msgid "The keyboard file '%s' does not contain a keyboard element." msgstr "Níl eilimint mhéarchláir i gcomhad méarchláir '%s'." #: src/config.c:449 #, c-format msgid "The keyboard file '%s' does not contain a key-list element." msgstr "Níl eilimint eochairliosta i gcomhad méarchláir '%s'." #: src/config.c:459 #, c-format msgid "The keyboard file '%s' is invalid." msgstr "Is neamhbhailí é comhad méarchláir '%s'." #: src/config.c:478 #, c-format msgid "Failed to read the keyboard name from %s." msgstr "Níorbh fhéidir ainm an mhéarchláir a léamh ó %s." #: src/config.c:886 #, c-format msgid "'%s' is not a valid XML document." msgstr "Níl '%s' bailí mar cháipéis XML." #: src/evdev.c:230 msgid "Unknown reason" msgstr "Ní fios cén fáth" #: src/get_scancode.c:98 msgid "Failed to read events." msgstr "Níorbh fhéidir teagmhais a léamh." #: src/get_scancode.c:179 #, c-format msgid "Could not open event device '%s'." msgstr "Níorbh fhéidir gléas teagmhais '%s' a oscailt." #: src/get_scancode.c:272 #, c-format msgid "Could not open ACPI socket file '%s'." msgstr "Níorbh fhéidir comhad soicéid ACPI '%s' a oscailt." #. *********** Create the view *********** #: src/set_data.c:379 msgid "Device" msgstr "Gléas" #: src/set_data.c:380 msgid "Device name" msgstr "Ainm an ghléis" #: src/set_data.c:381 msgid "Bus" msgstr "Bus" #: src/check_syntax.c:106 msgid "" "The keyboard file contains an invalid action element (where the action is a " "plugin)." msgstr "" "Tá eilimint neamhbhailí ghnímh sa chomhad méarchláir (agus is breiseán é an " "gníomh seo)." #: src/check_syntax.c:114 #, c-format msgid "The keyboard file contains the invalid action-type value '%s'." msgstr "Tá luach neamhbhailí ghnímh '%s' sa chomhad méarchláir." #: src/check_syntax.c:222 msgid "The keyboard file contains an empty key-name element." msgstr "Tá eilimint fholamh ainm-eochrach sa chomhad méarchláir." #: src/check_syntax.c:231 #, c-format msgid "The keyboard file contains more than once a key named '%s'." msgstr "Tá níos mó ná eochair amháin sa chomhad méarchláir darb ainm '%s'." #: src/check_syntax.c:254 #, c-format msgid "'%s' is an invalid scancode." msgstr "Is comhad neamhbhailí méarchláir é '%s'." #: src/check_syntax.c:268 #, fuzzy, c-format msgid "'%s' is an invalid USB code." msgstr "Is comhad neamhbhailí méarchláir é '%s'." #: src/check_syntax.c:284 #, c-format msgid "Keycode %s is used more than once." msgstr "Cód eochrach %s in úsáid níos mó ná uair amháin." #: src/check_syntax.c:296 msgid "The keyboard file contains an empty keycode." msgstr "Tá cód folamh eochrach sa chomhad méarchláir." #: src/check_syntax.c:300 #, c-format msgid "'%s' is an invalid keycode." msgstr "Is comhad neamhbhailí méarchláir é '%s'." #: src/check_syntax.c:368 #, c-format msgid "The last-change-date \"%s\" of the keyboard file is not a valid date." msgstr "Ní dáta bailí é an dáta athraithe \"%s\" sa chomhad méarchláir." #: src/check_syntax.c:456 #, fuzzy msgid "" "The keyboard file does not provide enough information about the keyboard " "model." msgstr "Níl go leor eolais faoin mhód méarchláir sa chomhad méarchláir." #: src/check_syntax.c:467 src/check_syntax.c:474 #, fuzzy, c-format msgid "The 'usb-info' element does not contain a '%s' element." msgstr "Níl eilimint eochairliosta i gcomhad méarchláir '%s'." #: src/check_syntax.c:485 #, fuzzy, c-format msgid "'%s' is an invalid vendor ID." msgstr "Is comhad neamhbhailí méarchláir é '%s'." #: src/check_syntax.c:498 #, fuzzy, c-format msgid "'%s' is an invalid product ID." msgstr "Is comhad neamhbhailí méarchláir é '%s'." #: src/check_syntax.c:555 msgid "The keyboard file does not contain a keyboard element." msgstr "Níl eilimint mhéarchláir sa chomhad méarchláir." #: src/check_syntax.c:567 msgid "The keyboard file does not contain a key-list element." msgstr "Níl eilimint eochairliosta sa chomhad méarchláir." #: src/check_syntax.c:574 #, c-format msgid "" "The \"keyboard\" element in the keyboard file does not contain a %s element." msgstr "Níl eilimint eochairliosta i gcomhad méarchláir '%s'." #: src/check_syntax.c:579 msgid "" "The syntax version of the keyboard file is not compatible with this version " "of keyTouch." msgstr "" "Níl an leagan comhréire den chomhad méarchláir comhoiriúnach leis an leagan " "seo de keyTouch." #: src/check_syntax.c:589 src/check_syntax.c:594 src/check_syntax.c:599 #: src/check_syntax.c:604 #, c-format msgid "The keyboard file does not contain any %s element." msgstr "Níl eilimint eochairliosta i gcomhad méarchláir '%s'." #~ msgid "No scancode. This key is identified by its keycode." #~ msgstr "Gan scanchód. Aithnítear an eochair seo lena cód eochrach." keytouch-editor-3.2.0-beta/po/keytouch-editor-bin.pot0000644000175000017500000002171610767267151022170 0ustar marvinmarvin# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-03-16 20:00+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #: src/main.c:107 #, c-format msgid "" "Error while loading the evdev module: \n" "%s" msgstr "" #: src/main.c:113 #, c-format msgid "No event devices are available in %s." msgstr "" #: src/interface.c:50 msgid "Select keyboard" msgstr "" #: src/interface.c:65 msgid "Please select your keyboard:" msgstr "" #: src/interface.c:98 msgid "" "Every input device has its own \"event device\". All event devices are " "listed above. You should select the event device of your keyboard.\n" "Click \"OK\" after selecting the keyboard and this program will test if you " "selected the right device.\n" "Note USB keyboards have two event devices. The first is for all \"normal\" " "keys and the second for the extra function keys. Choose the second device." msgstr "" #: src/interface.c:108 src/interface.c:907 msgid "Help information:" msgstr "" #: src/interface.c:244 msgid "keyTouch-editor" msgstr "" #: src/interface.c:260 msgid "_File" msgstr "" #: src/interface.c:292 msgid "_Edit" msgstr "" #: src/interface.c:299 msgid "Change _keyboard..." msgstr "" #: src/interface.c:306 msgid "_Help" msgstr "" #: src/interface.c:313 msgid "_About" msgstr "" #: src/interface.c:333 msgid "Manufacturer:" msgstr "" #: src/interface.c:340 msgid "Model:" msgstr "" #: src/interface.c:359 msgid "Keyboard" msgstr "" #: src/interface.c:416 msgid "Name:" msgstr "" #: src/interface.c:423 src/callbacks.c:59 msgid "Scancode:" msgstr "" #: src/interface.c:463 src/interface.c:602 msgid "_Change..." msgstr "" #: src/interface.c:475 msgid "_Program:" msgstr "" #: src/interface.c:503 msgid "Plugin:" msgstr "" #: src/interface.c:510 msgid "Function:" msgstr "" #: src/interface.c:541 msgid "Plugin" msgstr "" #: src/interface.c:546 msgid "Special _action:" msgstr "" #: src/interface.c:554 msgid "Default:" msgstr "" #: src/interface.c:561 msgid "Keycode:" msgstr "" #: src/interface.c:583 msgid "The keys code sent when the keyboard is connected via USB" msgstr "" #: src/interface.c:606 msgid "USB code:" msgstr "" #: src/interface.c:613 msgid "Key settings" msgstr "" #: src/interface.c:618 msgid "Keys" msgstr "" #: src/interface.c:778 msgid "Press key" msgstr "" #: src/interface.c:852 msgid "New key" msgstr "" #: src/interface.c:870 msgid "Please enter the name of the new key:" msgstr "" #: src/interface.c:897 msgid "" "Choose an appropriate name for the key. Is there for example a text label on " "the key, use the label as the key's name." msgstr "" #: src/interface.c:965 src/interface.c:1025 msgid "Contact information" msgstr "" #: src/interface.c:983 msgid "" "Please fill in your real name and e-mail address. This information will be " "used for the administration of the keyboard files.\n" "The e-mail address must be real in order to send the keyboard file." msgstr "" #: src/interface.c:999 msgid "Your name:" msgstr "" #: src/interface.c:1006 msgid "E-mail address:" msgstr "" #: src/interface.c:1094 msgid "About keyTouch-editor" msgstr "" #: src/interface.c:1123 msgid "Version:" msgstr "" #: src/interface.c:1137 msgid "Developer:" msgstr "" #: src/interface.c:1151 msgid "License:" msgstr "" #: src/interface.c:1165 msgid "Website:" msgstr "" #: src/interface.c:1172 msgid "http://keytouch.sf.net" msgstr "" #: src/callbacks.c:58 msgid "Press the extra function key." msgstr "" #: src/callbacks.c:60 msgid "Event description:" msgstr "" #: src/callbacks.c:104 msgid "" "Please press one of the extra function keys.\n" "Press \"Cancel\" and select another event device\n" "when this window does not disappear after\n" "pressing the key." msgstr "" #: src/callbacks.c:134 msgid "Please select the event device for your keyboard." msgstr "" #: src/callbacks.c:267 msgid "" "Do you want to send this keyboard file to the developer of keyTouch?\n" "This will help other people with the same keyboard.\n" "Only say \"Yes\" when the keyboard file is finished." msgstr "" #: src/callbacks.c:297 msgid "Save keyboard file" msgstr "" #: src/callbacks.c:318 #, c-format msgid "" "A file named \"%s\" already exists. Are you sure you want to overwrite it?" msgstr "" #: src/callbacks.c:329 #, c-format msgid "Failed to save \"%s\"." msgstr "" #: src/callbacks.c:338 src/evdev.c:77 src/evdev.c:234 src/evdev.c:244 #: src/key_list.c:232 src/key_list.c:274 src/key_list.c:296 src/key_list.c:322 #: src/memory.c:46 src/memory.c:65 msgid "Could not allocate memory." msgstr "" #: src/callbacks.c:343 msgid "Failed to send the keyboard file." msgstr "" #: src/callbacks.c:353 msgid "" "The keyboard file has been saved successfully, but cannot yet be imported in " "keyTouch because it is not a valid keyboard file." msgstr "" #: src/callbacks.c:396 #, c-format msgid "" "The keyboard file \"%s\" has been modified.\n" "Do you want to save your changes?" msgstr "" #: src/callbacks.c:452 msgid "Open keyboard file" msgstr "" #: src/callbacks.c:657 msgid "Cannot add the key because the name is already in the list." msgstr "" #: src/support.c:90 src/support.c:114 #, c-format msgid "Couldn't find pixmap file: %s" msgstr "" #: src/config.c:132 msgid "The keyboard file contains an invalid action element." msgstr "" #: src/config.c:146 msgid "The keyboard file contains an invalid action-type value." msgstr "" #: src/config.c:221 src/config.c:273 src/check_syntax.c:214 msgid "The keyboard file contains an incomplete key element." msgstr "" #: src/config.c:431 #, c-format msgid "'%s' is an invalid keyboard file." msgstr "" #: src/config.c:439 #, c-format msgid "The keyboard file '%s' does not contain a keyboard element." msgstr "" #: src/config.c:449 #, c-format msgid "The keyboard file '%s' does not contain a key-list element." msgstr "" #: src/config.c:459 #, c-format msgid "The keyboard file '%s' is invalid." msgstr "" #: src/config.c:478 #, c-format msgid "Failed to read the keyboard name from %s." msgstr "" #: src/config.c:886 #, c-format msgid "'%s' is not a valid XML document." msgstr "" #: src/evdev.c:230 msgid "Unknown reason" msgstr "" #: src/get_scancode.c:98 msgid "Failed to read events." msgstr "" #: src/get_scancode.c:179 #, c-format msgid "Could not open event device '%s'." msgstr "" #: src/get_scancode.c:272 #, c-format msgid "Could not open ACPI socket file '%s'." msgstr "" #. *********** Create the view *********** #: src/set_data.c:379 msgid "Device" msgstr "" #: src/set_data.c:380 msgid "Device name" msgstr "" #: src/set_data.c:381 msgid "Bus" msgstr "" #: src/check_syntax.c:106 msgid "" "The keyboard file contains an invalid action element (where the action is a " "plugin)." msgstr "" #: src/check_syntax.c:114 #, c-format msgid "The keyboard file contains the invalid action-type value '%s'." msgstr "" #: src/check_syntax.c:222 msgid "The keyboard file contains an empty key-name element." msgstr "" #: src/check_syntax.c:231 #, c-format msgid "The keyboard file contains more than once a key named '%s'." msgstr "" #: src/check_syntax.c:254 #, c-format msgid "'%s' is an invalid scancode." msgstr "" #: src/check_syntax.c:268 #, c-format msgid "'%s' is an invalid USB code." msgstr "" #: src/check_syntax.c:284 #, c-format msgid "Keycode %s is used more than once." msgstr "" #: src/check_syntax.c:296 msgid "The keyboard file contains an empty keycode." msgstr "" #: src/check_syntax.c:300 #, c-format msgid "'%s' is an invalid keycode." msgstr "" #: src/check_syntax.c:368 #, c-format msgid "The last-change-date \"%s\" of the keyboard file is not a valid date." msgstr "" #: src/check_syntax.c:456 msgid "" "The keyboard file does not provide enough information about the keyboard " "model." msgstr "" #: src/check_syntax.c:467 src/check_syntax.c:474 #, c-format msgid "The 'usb-info' element does not contain a '%s' element." msgstr "" #: src/check_syntax.c:485 #, c-format msgid "'%s' is an invalid vendor ID." msgstr "" #: src/check_syntax.c:498 #, c-format msgid "'%s' is an invalid product ID." msgstr "" #: src/check_syntax.c:555 msgid "The keyboard file does not contain a keyboard element." msgstr "" #: src/check_syntax.c:567 msgid "The keyboard file does not contain a key-list element." msgstr "" #: src/check_syntax.c:574 #, c-format msgid "" "The \"keyboard\" element in the keyboard file does not contain a %s element." msgstr "" #: src/check_syntax.c:579 msgid "" "The syntax version of the keyboard file is not compatible with this version " "of keyTouch." msgstr "" #: src/check_syntax.c:589 src/check_syntax.c:594 src/check_syntax.c:599 #: src/check_syntax.c:604 #, c-format msgid "The keyboard file does not contain any %s element." msgstr "" keytouch-editor-3.2.0-beta/po/it.po0000644000175000017500000003175710767267152016542 0ustar marvinmarvin# translation of it.po to ITALIAN # This file is distributed under the same license as the keyTouch package # Turocni Ivan , 2007. # msgid "" msgstr "" "Project-Id-Version: it\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-03-16 20:00+0100\n" "PO-Revision-Date: 2007-07-31 11:20+0100\n" "Last-Translator: Turconi Ivan \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: src/main.c:107 #, c-format msgid "" "Error while loading the evdev module: \n" "%s" msgstr "" "Errore nel caricamento del modulo: \n" "%s" #: src/main.c:113 #, c-format msgid "No event devices are available in %s." msgstr "Non ci sono dispositivi ad eventi disponibili in %s" #: src/interface.c:50 msgid "Select keyboard" msgstr "Seleziona la tastiera" #: src/interface.c:65 msgid "Please select your keyboard:" msgstr "Seleziona la tua tastiera:" #: src/interface.c:98 msgid "" "Every input device has its own \"event device\". All event devices are " "listed above. You should select the event device of your keyboard.\n" "Click \"OK\" after selecting the keyboard and this program will test if you " "selected the right device.\n" "Note USB keyboards have two event devices. The first is for all \"normal\" " "keys and the second for the extra function keys. Choose the second device." msgstr "" "Ogni dispositivo di input ha il suo \"dispositivo ad eventi\". Tutti i " "dispositivi ad eventi sono elencati qui sopra. Devi selezionare il " "dispositivo della tua tastiera.\n" "Premi \"OK\" dopo aver selezionato la tastiera ed il programma verificherà " "se hai selezionato il dispositivo corretto.\n" "NOTA: le tastiere USB hanno due dispositivi associati. Il primo è per i " "tasti \"normali\" ed il secondo è per i tasti speciali. Seleziona il secondo." #: src/interface.c:108 src/interface.c:907 msgid "Help information:" msgstr "Informazioni d'aiuto:" #: src/interface.c:244 msgid "keyTouch-editor" msgstr "keyTouch-editor" #: src/interface.c:260 msgid "_File" msgstr "_File" #: src/interface.c:292 msgid "_Edit" msgstr "_Modifica" #: src/interface.c:299 msgid "Change _keyboard..." msgstr "Cambia _tastiera..." #: src/interface.c:306 msgid "_Help" msgstr "_Aiuto" #: src/interface.c:313 msgid "_About" msgstr "_Informazioni" #: src/interface.c:333 msgid "Manufacturer:" msgstr "Marca:" #: src/interface.c:340 msgid "Model:" msgstr "Modello:" #: src/interface.c:359 msgid "Keyboard" msgstr "Tastiera" #: src/interface.c:416 msgid "Name:" msgstr "Nome:" #: src/interface.c:423 src/callbacks.c:59 msgid "Scancode:" msgstr "Scancode:" #: src/interface.c:463 src/interface.c:602 msgid "_Change..." msgstr "_Cambia..." #: src/interface.c:475 msgid "_Program:" msgstr "_Programma:" #: src/interface.c:503 msgid "Plugin:" msgstr "Aggiunta:" #: src/interface.c:510 msgid "Function:" msgstr "Funzione:" #: src/interface.c:541 msgid "Plugin" msgstr "Aggiunta" #: src/interface.c:546 msgid "Special _action:" msgstr "_Azione speciale:" #: src/interface.c:554 msgid "Default:" msgstr "Default:" #: src/interface.c:561 msgid "Keycode:" msgstr "Keycode:" #: src/interface.c:583 msgid "The keys code sent when the keyboard is connected via USB" msgstr "" #: src/interface.c:606 #, fuzzy msgid "USB code:" msgstr "Scancode:" #: src/interface.c:613 msgid "Key settings" msgstr "Impostazioni Tasti" #: src/interface.c:618 msgid "Keys" msgstr "Tasti" #: src/interface.c:778 msgid "Press key" msgstr "Premi un tasto" #: src/interface.c:852 msgid "New key" msgstr "Nuovo tasto" #: src/interface.c:870 msgid "Please enter the name of the new key:" msgstr "Inserisci il nome del nuovo tasto:" #: src/interface.c:897 msgid "" "Choose an appropriate name for the key. Is there for example a text label on " "the key, use the label as the key's name." msgstr "" "Seleziona un nome appropriato per il tasto. Se c'è ad esempio un'etichetta " "sul tasto, usa l'etichetta come nome per il tasto." #: src/interface.c:965 src/interface.c:1025 msgid "Contact information" msgstr "Info contatti" #: src/interface.c:983 msgid "" "Please fill in your real name and e-mail address. This information will be " "used for the administration of the keyboard files.\n" "The e-mail address must be real in order to send the keyboard file." msgstr "" "Inserisci il tuo vero nome ed indirizzo e-mail. Queste informazioni saranno " "usate per la gestione del file della tastiera.\n" "L'indirizzo e-mail deve esistere per poter inviare il file della tastiera." #: src/interface.c:999 msgid "Your name:" msgstr "Nome:" #: src/interface.c:1006 msgid "E-mail address:" msgstr "Indirizzo E-mail:" #: src/interface.c:1094 msgid "About keyTouch-editor" msgstr "Info keyTouch-editor" #: src/interface.c:1123 msgid "Version:" msgstr "Versione:" #: src/interface.c:1137 msgid "Developer:" msgstr "Sviluppatore:" #: src/interface.c:1151 msgid "License:" msgstr "Licenza:" #: src/interface.c:1165 msgid "Website:" msgstr "Sito Web:" #: src/interface.c:1172 msgid "http://keytouch.sf.net" msgstr "http://keytouch.sf.net" #: src/callbacks.c:58 msgid "Press the extra function key." msgstr "Premi il tasto speciale." #: src/callbacks.c:60 msgid "Event description:" msgstr "Descrizione evento:" #: src/callbacks.c:104 msgid "" "Please press one of the extra function keys.\n" "Press \"Cancel\" and select another event device\n" "when this window does not disappear after\n" "pressing the key." msgstr "" "Premi uno dei tasti speciali.\n" "Premi \"Annulla\" e seleziona un'altro dispositivo\n" "se questa finestra non scompare dopo aver premuto\n" "il tasto." #: src/callbacks.c:134 msgid "Please select the event device for your keyboard." msgstr "Seleziona il dispositivo ad eventi per la tua tastiera." #: src/callbacks.c:267 msgid "" "Do you want to send this keyboard file to the developer of keyTouch?\n" "This will help other people with the same keyboard.\n" "Only say \"Yes\" when the keyboard file is finished." msgstr "" "Vuoi inviare questo file della tastiera allo sviluppatore\n" "di KeyTouch?\n" "Sarà utile ad altre persone con la tua stessa tastiera.\n" "Rispondi semplicemente \"Si\" quando hai terminato il file." #: src/callbacks.c:297 msgid "Save keyboard file" msgstr "Salva il file della tastiera" #: src/callbacks.c:318 #, c-format msgid "" "A file named \"%s\" already exists. Are you sure you want to overwrite it?" msgstr "Il file \"%s\" esiste già. Sei sicuro di volerlo sovrascrivere?" #: src/callbacks.c:329 #, c-format msgid "Failed to save \"%s\"." msgstr "Fallito salvataggio di \"%s\"." #: src/callbacks.c:338 src/evdev.c:77 src/evdev.c:234 src/evdev.c:244 #: src/key_list.c:232 src/key_list.c:274 src/key_list.c:296 src/key_list.c:322 #: src/memory.c:46 src/memory.c:65 msgid "Could not allocate memory." msgstr "Non posso occupare memoria" #: src/callbacks.c:343 msgid "Failed to send the keyboard file." msgstr "Invio file della tastiera fallito." #: src/callbacks.c:353 msgid "" "The keyboard file has been saved successfully, but cannot yet be imported in " "keyTouch because it is not a valid keyboard file." msgstr "" "Il file è stato salvato correttamente, ma non può essere importato in " "keyTouch perchè non è un file di tastiera valido." #: src/callbacks.c:396 #, c-format msgid "" "The keyboard file \"%s\" has been modified.\n" "Do you want to save your changes?" msgstr "" "Il file della tastiera \"%s\" è stato modificato.\n" "Vuoi salvare le modifiche?" #: src/callbacks.c:452 msgid "Open keyboard file" msgstr "Apri file di tastiera" #: src/callbacks.c:657 msgid "Cannot add the key because the name is already in the list." msgstr "Non posso aggiungere il tasto perchè il nome è già nella lista." #: src/support.c:90 src/support.c:114 #, c-format msgid "Couldn't find pixmap file: %s" msgstr "Non trovo il file pixmap: %s" #: src/config.c:132 msgid "The keyboard file contains an invalid action element." msgstr "Il file della tastiera contiene un elemento di azione non valido." #: src/config.c:146 msgid "The keyboard file contains an invalid action-type value." msgstr "Il file della tastiera contiene un valore di tipo-azione non valido." #: src/config.c:221 src/config.c:273 src/check_syntax.c:214 msgid "The keyboard file contains an incomplete key element." msgstr "Il file della tastiera contiene un elemento key incompleto." #: src/config.c:431 #, c-format msgid "'%s' is an invalid keyboard file." msgstr "'%s' non è un file di tastiera valido." #: src/config.c:439 #, c-format msgid "The keyboard file '%s' does not contain a keyboard element." msgstr "Il file di tastiera '%s' non contiene un elemento keyboard." #: src/config.c:449 #, c-format msgid "The keyboard file '%s' does not contain a key-list element." msgstr "Il file di tastiera '%s' non contiene un elemento key-list." #: src/config.c:459 #, c-format msgid "The keyboard file '%s' is invalid." msgstr "Il file di tastiera '%s' non è valido." #: src/config.c:478 #, c-format msgid "Failed to read the keyboard name from %s." msgstr "Lettura del nome della tastiera da %s fallita." #: src/config.c:886 #, c-format msgid "'%s' is not a valid XML document." msgstr "'%s' non è un documento XML valido." #: src/evdev.c:230 msgid "Unknown reason" msgstr "Motivo sconosciuto" #: src/get_scancode.c:98 msgid "Failed to read events." msgstr "Lettura eventi fallita." #: src/get_scancode.c:179 #, c-format msgid "Could not open event device '%s'." msgstr "Non posso aprire il dispositivo ad eventi '%s'." #: src/get_scancode.c:272 #, c-format msgid "Could not open ACPI socket file '%s'." msgstr "Non posso aprire il socket ACPI '%s'." #. *********** Create the view *********** #: src/set_data.c:379 msgid "Device" msgstr "Dispositivo" #: src/set_data.c:380 msgid "Device name" msgstr "Nome dispositivo" #: src/set_data.c:381 msgid "Bus" msgstr "Bus" #: src/check_syntax.c:106 msgid "" "The keyboard file contains an invalid action element (where the action is a " "plugin)." msgstr "" "Il file di tastiera contiene un elemento azione non valido (dove l'azione è " "un'aggiunta)." #: src/check_syntax.c:114 #, c-format msgid "The keyboard file contains the invalid action-type value '%s'." msgstr "Il file di tastiera contiene il valore action-type '%s' non valido." #: src/check_syntax.c:222 msgid "The keyboard file contains an empty key-name element." msgstr "Il file di tastiera contiene un elemento key-name vuoto." #: src/check_syntax.c:231 #, c-format msgid "The keyboard file contains more than once a key named '%s'." msgstr "Il file di tastiera contiene più di un tasto con nome '%s'." #: src/check_syntax.c:254 #, c-format msgid "'%s' is an invalid scancode." msgstr "'%s' non è uno scancode valido." #: src/check_syntax.c:268 #, fuzzy, c-format msgid "'%s' is an invalid USB code." msgstr "'%s' è un keycode non valido." #: src/check_syntax.c:284 #, c-format msgid "Keycode %s is used more than once." msgstr "Il keycode %s è usato più di una volta." #: src/check_syntax.c:296 msgid "The keyboard file contains an empty keycode." msgstr "Il file di tastiera contiene un keycode vuoto." #: src/check_syntax.c:300 #, c-format msgid "'%s' is an invalid keycode." msgstr "'%s' è un keycode non valido." #: src/check_syntax.c:368 #, c-format msgid "The last-change-date \"%s\" of the keyboard file is not a valid date." msgstr "Il valore last-change-date \"%s\" del file di tastiera non è valido." #: src/check_syntax.c:456 #, fuzzy msgid "" "The keyboard file does not provide enough information about the keyboard " "model." msgstr "" "Il file di tastiera non fornisce sufficienti informazioni sul modello di " "tastiera." #: src/check_syntax.c:467 src/check_syntax.c:474 #, fuzzy, c-format msgid "The 'usb-info' element does not contain a '%s' element." msgstr "Il file di tastiera non contiene alcun elemento %s." #: src/check_syntax.c:485 #, fuzzy, c-format msgid "'%s' is an invalid vendor ID." msgstr "'%s' è un keycode non valido." #: src/check_syntax.c:498 #, fuzzy, c-format msgid "'%s' is an invalid product ID." msgstr "'%s' è un keycode non valido." #: src/check_syntax.c:555 msgid "The keyboard file does not contain a keyboard element." msgstr "Il file di tastiera non contiene un elemento keyboard." #: src/check_syntax.c:567 msgid "The keyboard file does not contain a key-list element." msgstr "Il file di tastiera non contiene un elemento key-list." #: src/check_syntax.c:574 #, c-format msgid "" "The \"keyboard\" element in the keyboard file does not contain a %s element." msgstr "" "L'elemento \"keyboard\" nel file di tastiera non contiene un elemento %s." #: src/check_syntax.c:579 msgid "" "The syntax version of the keyboard file is not compatible with this version " "of keyTouch." msgstr "" "La versione della sintassi del file di tastiera non è compatibile con la " "versione di keyTouch." #: src/check_syntax.c:589 src/check_syntax.c:594 src/check_syntax.c:599 #: src/check_syntax.c:604 #, c-format msgid "The keyboard file does not contain any %s element." msgstr "Il file di tastiera non contiene alcun elemento %s." #~ msgid "No scancode. This key is identified by its keycode." #~ msgstr "Scancode assente. Questo tasto è identificato dal suo keycode." keytouch-editor-3.2.0-beta/po/vi.po0000644000175000017500000003375710767267152016546 0ustar marvinmarvin# Vietnamese translation for Keytouch Editor. # Copyright © 2007 Free Software Foundation, Inc. # Clytie Siddall , 2007. # msgid "" msgstr "" "Project-Id-Version: keytouch-editor 3.1.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-03-16 20:00+0100\n" "PO-Revision-Date: 2007-08-20 17:30+0930\n" "Last-Translator: Clytie Siddall \n" "Language-Team: Vietnamese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: LocFactoryEditor 1.7b1\n" #: src/main.c:107 #, c-format msgid "" "Error while loading the evdev module: \n" "%s" msgstr "" "Gặp lá»—i khi nạp mô-Ä‘un evdev:\n" "%s" #: src/main.c:113 #, c-format msgid "No event devices are available in %s." msgstr "Trong %s, không có sẵn thiết bị dữ kiện." #: src/interface.c:50 msgid "Select keyboard" msgstr "Chá»n bàn phím" #: src/interface.c:65 msgid "Please select your keyboard:" msgstr "Hãy chá»n bàn phím:" #: src/interface.c:98 msgid "" "Every input device has its own \"event device\". All event devices are " "listed above. You should select the event device of your keyboard.\n" "Click \"OK\" after selecting the keyboard and this program will test if you " "selected the right device.\n" "Note USB keyboards have two event devices. The first is for all \"normal\" " "keys and the second for the extra function keys. Choose the second device." msgstr "" "Má»—i thiết bị nhập vào có « thiết bị dữ kiện » riêng.\n" "Tất cả các thiết bị dữ kiện được liệt kê bên trên.\n" "Bạn nên chá»n thiết bị dữ kiện cá»§a bàn phím Ä‘ang dùng.\n" "Chá»n bàn phím thì nhấn vào nút OK rồi chương trình này sẽ thá»­\n" "bạn đã chá»n thiết bị đúng chưa.\n" "Ghi chú rằng bàn phím kiểu USB có hai thiết bị dữ kiện.\n" "Cái thứ hai đại diện các phím « chuẩn », còn cái thứ hai đại diện\n" "các phím chức năng bổ trợ. Ở đây hãy chá»n thiết bị thứ hai." #: src/interface.c:108 src/interface.c:907 msgid "Help information:" msgstr "Thông tin trợ giúp:" #: src/interface.c:244 msgid "keyTouch-editor" msgstr "keyTouch-editor" #: src/interface.c:260 msgid "_File" msgstr "_Tập tin" #: src/interface.c:292 msgid "_Edit" msgstr "_Sá»­a" #: src/interface.c:299 msgid "Change _keyboard..." msgstr "Äổi _bàn phím..." #: src/interface.c:306 msgid "_Help" msgstr "Trợ g_iúp" #: src/interface.c:313 msgid "_About" msgstr "_Giá»›i thiệu" #: src/interface.c:333 msgid "Manufacturer:" msgstr "Hãng chế tạo :" #: src/interface.c:340 msgid "Model:" msgstr "Mô hình:" #: src/interface.c:359 msgid "Keyboard" msgstr "Bàn phím" #: src/interface.c:416 msgid "Name:" msgstr "Tên:" #: src/interface.c:423 src/callbacks.c:59 msgid "Scancode:" msgstr "Mã quét:" #: src/interface.c:463 src/interface.c:602 msgid "_Change..." msgstr "Äổ_i..." #: src/interface.c:475 msgid "_Program:" msgstr "_Chương trình:" #: src/interface.c:503 msgid "Plugin:" msgstr "Phần bổ sung:" #: src/interface.c:510 msgid "Function:" msgstr "Chức năng:" #: src/interface.c:541 msgid "Plugin" msgstr "Phần bổ sung" #: src/interface.c:546 msgid "Special _action:" msgstr "_Hành động đặc biệt:" #: src/interface.c:554 msgid "Default:" msgstr "Mặc định:" #: src/interface.c:561 msgid "Keycode:" msgstr "Mã phím:" #: src/interface.c:583 msgid "The keys code sent when the keyboard is connected via USB" msgstr "" #: src/interface.c:606 #, fuzzy msgid "USB code:" msgstr "Mã quét:" #: src/interface.c:613 msgid "Key settings" msgstr "Thiết lập phím" #: src/interface.c:618 msgid "Keys" msgstr "Phím" #: src/interface.c:778 msgid "Press key" msgstr "Bấm phím" #: src/interface.c:852 msgid "New key" msgstr "Phím má»›i" #: src/interface.c:870 msgid "Please enter the name of the new key:" msgstr "Hãy nhập chỉ tên cá»§a phím má»›i:" #: src/interface.c:897 msgid "" "Choose an appropriate name for the key. Is there for example a text label on " "the key, use the label as the key's name." msgstr "" "Hãy chá»n tên thích hợp vá»›i phím. Chẳng hạn, phím có nhãn văn bản thì dùng nó " "làm tên phím." #: src/interface.c:965 src/interface.c:1025 msgid "Contact information" msgstr "Thông tin liên lạc" #: src/interface.c:983 msgid "" "Please fill in your real name and e-mail address. This information will be " "used for the administration of the keyboard files.\n" "The e-mail address must be real in order to send the keyboard file." msgstr "" "Hãy Ä‘iá»n vào há» tên thật và địa chỉ thư Ä‘iện tá»­. Thông tin này sẽ được dùng " "để quản trị các tập tin bàn phím.\n" "Không thể gá»­i tập tin bàn phím cho địa chỉ thư sai." #: src/interface.c:999 msgid "Your name:" msgstr "Há» tên:" #: src/interface.c:1006 msgid "E-mail address:" msgstr "Äịa chỉ thư :" #: src/interface.c:1094 msgid "About keyTouch-editor" msgstr "Giá»›i thiệu keyTouch-editor" #: src/interface.c:1123 msgid "Version:" msgstr "Phiên bản:" #: src/interface.c:1137 msgid "Developer:" msgstr "Nhà phát triển:" #: src/interface.c:1151 msgid "License:" msgstr "Giấy phép:" #: src/interface.c:1165 msgid "Website:" msgstr "Chá»— trên Mạng:" #: src/interface.c:1172 msgid "http://keytouch.sf.net" msgstr "http://keytouch.sf.net" #: src/callbacks.c:58 msgid "Press the extra function key." msgstr "Bấm phím chức năng bổ trợ." #: src/callbacks.c:60 msgid "Event description:" msgstr "Mô tả dữ kiện:" #: src/callbacks.c:104 msgid "" "Please press one of the extra function keys.\n" "Press \"Cancel\" and select another event device\n" "when this window does not disappear after\n" "pressing the key." msgstr "" "Hãy bấm má»™t cá»§a những phím chức năng bổ trợ.\n" "Cá»­a sổ này không đóng sau khi bấm phím thì\n" "bấm « Thôi » rồi chá»n thiết bị dữ kiện khác." #: src/callbacks.c:134 msgid "Please select the event device for your keyboard." msgstr "Hãy chá»n thiết bị dữ kiện cho bàn phím Ä‘ang dùng." #: src/callbacks.c:267 msgid "" "Do you want to send this keyboard file to the developer of keyTouch?\n" "This will help other people with the same keyboard.\n" "Only say \"Yes\" when the keyboard file is finished." msgstr "" "Bạn có muốn gá»­i tập tin bàn phím này cho nhà phát triển keyTouch không?\n" "Nó sẽ giúp các ngưá»i khác dùng cùng bàn phím.\n" "Chỉ chấp nhận khi tập tin bàn phím hoàn tất." #: src/callbacks.c:297 msgid "Save keyboard file" msgstr "Lưu tập tin bàn phím" #: src/callbacks.c:318 #, c-format msgid "" "A file named \"%s\" already exists. Are you sure you want to overwrite it?" msgstr "Tập tin tên « %s » đã có. Bạn có chắc muốn ghi đè lên nó không?" #: src/callbacks.c:329 #, c-format msgid "Failed to save \"%s\"." msgstr "Lá»—i lưu « %s »." #: src/callbacks.c:338 src/evdev.c:77 src/evdev.c:234 src/evdev.c:244 #: src/key_list.c:232 src/key_list.c:274 src/key_list.c:296 src/key_list.c:322 #: src/memory.c:46 src/memory.c:65 msgid "Could not allocate memory." msgstr "Không thể cấp phát bá»™ nhá»›." #: src/callbacks.c:343 msgid "Failed to send the keyboard file." msgstr "Lá»—i gá»­i tập tin bàn phím." #: src/callbacks.c:353 msgid "" "The keyboard file has been saved successfully, but cannot yet be imported in " "keyTouch because it is not a valid keyboard file." msgstr "" "Tập tin bàn phím đã được lưu, nhưng chưa nhập khẩu được vào keyTouch vì nó " "không phải tập tin bàn phím hợp lệ." #: src/callbacks.c:396 #, c-format msgid "" "The keyboard file \"%s\" has been modified.\n" "Do you want to save your changes?" msgstr "" "Tập tin bàn phím « %s » bị sá»­a đổi.\n" "Bạn có muốn lưu các thay đổi không?" #: src/callbacks.c:452 msgid "Open keyboard file" msgstr "Mở tập tin bàn phím" #: src/callbacks.c:657 msgid "Cannot add the key because the name is already in the list." msgstr "Không thể thêm phím vì tên đó đã có trong danh sách." #: src/support.c:90 src/support.c:114 #, c-format msgid "Couldn't find pixmap file: %s" msgstr "Không tìm thấy tập tin sÆ¡ đồ Ä‘iểm ảnh: %s" #: src/config.c:132 msgid "The keyboard file contains an invalid action element." msgstr "Tập tin bàn phím chứa má»™t yếu tố hành động (action) không hợp lệ." #: src/config.c:146 msgid "The keyboard file contains an invalid action-type value." msgstr "" "Tập tin bàn phím chứa má»™t giá trị kiểu hành động (action-type) không hợp lệ." #: src/config.c:221 src/config.c:273 src/check_syntax.c:214 msgid "The keyboard file contains an incomplete key element." msgstr "Tập tin bàn phím chứa má»™t yếu tố phím (key) chưa hoàn tất." #: src/config.c:431 #, c-format msgid "'%s' is an invalid keyboard file." msgstr "« %s » là tập tin bàn phím không hợp lệ." #: src/config.c:439 #, c-format msgid "The keyboard file '%s' does not contain a keyboard element." msgstr "Tập tin bàn phím « %s » không chứa yếu tố bàn phím (keyboard)." #: src/config.c:449 #, c-format msgid "The keyboard file '%s' does not contain a key-list element." msgstr "Tập tin bàn phím « %s » không chứa yếu tố danh sách phím (key-list)." #: src/config.c:459 #, c-format msgid "The keyboard file '%s' is invalid." msgstr "Tập tin bàn phím « %s » không hợp lệ." #: src/config.c:478 #, c-format msgid "Failed to read the keyboard name from %s." msgstr "Lá»—i Ä‘á»c tên bàn phím từ %s." #: src/config.c:886 #, c-format msgid "'%s' is not a valid XML document." msgstr "« %s » không phải tài liệu XML hợp lệ." #: src/evdev.c:230 msgid "Unknown reason" msgstr "Không biết sao" #: src/get_scancode.c:98 msgid "Failed to read events." msgstr "Lá»—i Ä‘á»c dữ kiện." #: src/get_scancode.c:179 #, c-format msgid "Could not open event device '%s'." msgstr "Không thể mở thiết bị dữ kiện « %s »." #: src/get_scancode.c:272 #, c-format msgid "Could not open ACPI socket file '%s'." msgstr "Không thể mở tập tin ổ cắm ACPI « %s »." #. *********** Create the view *********** #: src/set_data.c:379 msgid "Device" msgstr "Thiết bị" #: src/set_data.c:380 msgid "Device name" msgstr "Tên thiết bị" #: src/set_data.c:381 msgid "Bus" msgstr "Mạch nối" #: src/check_syntax.c:106 msgid "" "The keyboard file contains an invalid action element (where the action is a " "plugin)." msgstr "" "Tập tin bàn phím chứa má»™t yếu tố hành động (action) không hợp lệ (mà hành " "động là phần bổ sung)." #: src/check_syntax.c:114 #, c-format msgid "The keyboard file contains the invalid action-type value '%s'." msgstr "" "Tập tin bàn phím chứa má»™t giá trị kiểu hành động (action-type) không hợp lệ « " "%s »." #: src/check_syntax.c:222 msgid "The keyboard file contains an empty key-name element." msgstr "Tập tin bàn phím chứa má»™t yếu tố ten phím (key-name) rá»—ng." #: src/check_syntax.c:231 #, c-format msgid "The keyboard file contains more than once a key named '%s'." msgstr "Tập tin bàn phím chứa nhiá»u lần phím tên « %s »." #: src/check_syntax.c:254 #, c-format msgid "'%s' is an invalid scancode." msgstr "« %s » là mà quét không hợp lệ." #: src/check_syntax.c:268 #, fuzzy, c-format msgid "'%s' is an invalid USB code." msgstr "« %s » là mã phím không hợp lệ." #: src/check_syntax.c:284 #, c-format msgid "Keycode %s is used more than once." msgstr "Mã phím %s dùng nhiá»u lần." #: src/check_syntax.c:296 msgid "The keyboard file contains an empty keycode." msgstr "Tập tin bàn phím chứa mã phím rá»—ng." #: src/check_syntax.c:300 #, c-format msgid "'%s' is an invalid keycode." msgstr "« %s » là mã phím không hợp lệ." #: src/check_syntax.c:368 #, c-format msgid "The last-change-date \"%s\" of the keyboard file is not a valid date." msgstr "" "Ngày thay đổi cuối (last-change-date) « %s » cá»§a tập tin bàn phím không phải " "ngày tháng hợp lệ." #: src/check_syntax.c:456 #, fuzzy msgid "" "The keyboard file does not provide enough information about the keyboard " "model." msgstr "Tập tin bàn phím không cung cấp đủ thông tin vá» mô hình bàn phím." #: src/check_syntax.c:467 src/check_syntax.c:474 #, fuzzy, c-format msgid "The 'usb-info' element does not contain a '%s' element." msgstr "Tập tin bàn phím không chứa yếu tố %s." #: src/check_syntax.c:485 #, fuzzy, c-format msgid "'%s' is an invalid vendor ID." msgstr "« %s » là mã phím không hợp lệ." #: src/check_syntax.c:498 #, fuzzy, c-format msgid "'%s' is an invalid product ID." msgstr "« %s » là mã phím không hợp lệ." #: src/check_syntax.c:555 msgid "The keyboard file does not contain a keyboard element." msgstr "Tập tin bàn phím không chứa yếu tố bàn phím (keyboard)." #: src/check_syntax.c:567 msgid "The keyboard file does not contain a key-list element." msgstr "Tập tin bàn phím không chứa yếu tố danh sách phím (key-list)." #: src/check_syntax.c:574 #, c-format msgid "" "The \"keyboard\" element in the keyboard file does not contain a %s element." msgstr "" "Tập tin bàn phím không chứa yếu tố \"keyboard\" lần lượt chứa yếu tố %s." #: src/check_syntax.c:579 msgid "" "The syntax version of the keyboard file is not compatible with this version " "of keyTouch." msgstr "" "Phiên bản cú pháp cá»§a tập tin bàn phím không tương thích vá»›i phiên bản " "keyTouch này." #: src/check_syntax.c:589 src/check_syntax.c:594 src/check_syntax.c:599 #: src/check_syntax.c:604 #, c-format msgid "The keyboard file does not contain any %s element." msgstr "Tập tin bàn phím không chứa yếu tố %s." #~ msgid "No scancode. This key is identified by its keycode." #~ msgstr "Không có mã quét. Phím này được nhận ra bằng mã phím." keytouch-editor-3.2.0-beta/po/hu.po0000644000175000017500000003330610767267152016532 0ustar marvinmarvin# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: keytouch-editor-bin\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-03-16 20:00+0100\n" "PO-Revision-Date: 2007-09-05 21:35+0100\n" "Last-Translator: Barcza Károly \n" "Language-Team: blackPanther Translator \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Hungarian\n" "X-Poedit-Country: HUNGARY\n" #: src/main.c:107 #, c-format msgid "" "Error while loading the evdev module: \n" "%s" msgstr "" "Hiba történt a evdev modul betöltése közben: \n" "%s" #: src/main.c:113 #, c-format msgid "No event devices are available in %s." msgstr "Nincs elérhetÅ‘ eszköz ebben: %s" #: src/interface.c:50 msgid "Select keyboard" msgstr "Válasszon billentyűzetet" #: src/interface.c:65 msgid "Please select your keyboard:" msgstr "Kérem válassza ki az Ön billentyűzetét:" #: src/interface.c:98 msgid "" "Every input device has its own \"event device\". All event devices are " "listed above. You should select the event device of your keyboard.\n" "Click \"OK\" after selecting the keyboard and this program will test if you " "selected the right device.\n" "Note USB keyboards have two event devices. The first is for all \"normal\" " "keys and the second for the extra function keys. Choose the second device." msgstr "" "Minden input eszköz mint saját \" esemény eszköz\" Minden ilyen eszköz " "látható a listában- Válassza ki az Ön billentyűzetének esemény eszközét.\n" " Kattintson az \"OK\" -ra miután kiválasztotta és ez a program tesztelni " "fogja, hogy jó eszközt választott-e ki.\n" "Megjegyzés: Az USB billentyűzeteknél két eszköz látszik. Az egyik az összes " "normál billentyűhöz a második az extra gombokhoz tartozik. Válassza a " "második eszközt." #: src/interface.c:108 src/interface.c:907 msgid "Help information:" msgstr "Súgó információk: " #: src/interface.c:244 msgid "keyTouch-editor" msgstr "keyTouch-szerkesztÅ‘" #: src/interface.c:260 msgid "_File" msgstr "_Fájl" #: src/interface.c:292 msgid "_Edit" msgstr "_Szerkesztés" #: src/interface.c:299 msgid "Change _keyboard..." msgstr "Billentyűzet megváltoztatása" #: src/interface.c:306 msgid "_Help" msgstr "_Súgó" #: src/interface.c:313 msgid "_About" msgstr "_Névjegy" #: src/interface.c:333 msgid "Manufacturer:" msgstr "Gyártó:" #: src/interface.c:340 msgid "Model:" msgstr "Modell:" #: src/interface.c:359 msgid "Keyboard" msgstr "Billentyűzet" #: src/interface.c:416 msgid "Name:" msgstr "Név:" #: src/interface.c:423 src/callbacks.c:59 msgid "Scancode:" msgstr "Scancode:" #: src/interface.c:463 src/interface.c:602 msgid "_Change..." msgstr "_Módosítás..." #: src/interface.c:475 msgid "_Program:" msgstr "_Program:" #: src/interface.c:503 msgid "Plugin:" msgstr "BÅ‘vítÅ‘modul:" #: src/interface.c:510 msgid "Function:" msgstr "Funkció:" #: src/interface.c:541 msgid "Plugin" msgstr "BÅ‘vítÅ‘modul" #: src/interface.c:546 msgid "Special _action:" msgstr "Speciális művelet:" #: src/interface.c:554 msgid "Default:" msgstr "Alapértelmezett:" #: src/interface.c:561 msgid "Keycode:" msgstr "Billentyűkód:" #: src/interface.c:583 msgid "The keys code sent when the keyboard is connected via USB" msgstr "" #: src/interface.c:606 #, fuzzy msgid "USB code:" msgstr "Scancode:" #: src/interface.c:613 msgid "Key settings" msgstr "Billentyűk beállítása" #: src/interface.c:618 msgid "Keys" msgstr "Billentyűk" #: src/interface.c:778 msgid "Press key" msgstr "Nyomjon meg egy billentyűt" #: src/interface.c:852 msgid "New key" msgstr "Új billentyű" #: src/interface.c:870 msgid "Please enter the name of the new key:" msgstr "Adjon nevet az új billentyűnek:" #: src/interface.c:897 msgid "" "Choose an appropriate name for the key. Is there for example a text label on " "the key, use the label as the key's name." msgstr "" "Válasszon egy alkalmas nevet a billentyűhöz. Is there for example a text " "label on the key, use the label as the key's name." #: src/interface.c:965 src/interface.c:1025 msgid "Contact information" msgstr "Kapcsolat információk" #: src/interface.c:983 msgid "" "Please fill in your real name and e-mail address. This information will be " "used for the administration of the keyboard files.\n" "The e-mail address must be real in order to send the keyboard file." msgstr "" "Kérem töltse ki az Ön valódi nevével és e-mail címével. Ez az információ " "csak adminisztratív célokat szolgál a billentyűzet fájlokhoz.\n" "Valódi e-mail cím szükséges a billentyűzet fájl elküldéséhez." #: src/interface.c:999 msgid "Your name:" msgstr "Az Ön neve:" #: src/interface.c:1006 msgid "E-mail address:" msgstr "E-mail cím:" #: src/interface.c:1094 msgid "About keyTouch-editor" msgstr "keyTouch-editor névjegye" #: src/interface.c:1123 msgid "Version:" msgstr "Verzió:" #: src/interface.c:1137 msgid "Developer:" msgstr "FejlesztÅ‘:" #: src/interface.c:1151 msgid "License:" msgstr "Licensz:" #: src/interface.c:1165 msgid "Website:" msgstr "Webhely:" #: src/interface.c:1172 msgid "http://keytouch.sf.net" msgstr "http://keytouch.sf.net" #: src/callbacks.c:58 msgid "Press the extra function key." msgstr "Nyomj meg egy extra billentyűt..." #: src/callbacks.c:60 msgid "Event description:" msgstr "Esemény leírása:" #: src/callbacks.c:104 msgid "" "Please press one of the extra function keys.\n" "Press \"Cancel\" and select another event device\n" "when this window does not disappear after\n" "pressing the key." msgstr "" "Kérem nyomjon le egy extra műveleti gombot.\n" "Nyomja meg a \"Mégsem\" gombot és válasszon \n" "egy működÅ‘ eszközt ha az ablak nem tűnik el miután\n" "megnyomta a gombot." #: src/callbacks.c:134 msgid "Please select the event device for your keyboard." msgstr "Kérem válasszon egy eszközt az Ön billentyűzetéhez." #: src/callbacks.c:267 msgid "" "Do you want to send this keyboard file to the developer of keyTouch?\n" "This will help other people with the same keyboard.\n" "Only say \"Yes\" when the keyboard file is finished." msgstr "" "El akarja küldeni ezt a billentyűzet fájlt a keyTouch fejlesztÅ‘knek?\n" "Ez nagy segítség lehet azoknak akik ilyen billentyűzetet használnak.\n" "Csak akkor kattintson az \"igen\" gombra. ha a billentyűzet fájl elkészült." #: src/callbacks.c:297 msgid "Save keyboard file" msgstr "Billentyűzet fájl mentése" #: src/callbacks.c:318 #, c-format msgid "" "A file named \"%s\" already exists. Are you sure you want to overwrite it?" msgstr "Már létezik \"%s\" nevű fájl. Felül szeretné írni?" #: src/callbacks.c:329 #, c-format msgid "Failed to save \"%s\"." msgstr "\"%s\" mentése sikertelen." #: src/callbacks.c:338 src/evdev.c:77 src/evdev.c:234 src/evdev.c:244 #: src/key_list.c:232 src/key_list.c:274 src/key_list.c:296 src/key_list.c:322 #: src/memory.c:46 src/memory.c:65 msgid "Could not allocate memory." msgstr "Nem sikerült memóriát foglalni." #: src/callbacks.c:343 msgid "Failed to send the keyboard file." msgstr "A(z) %s fájlt nem sikerült elküldeni." #: src/callbacks.c:353 msgid "" "The keyboard file has been saved successfully, but cannot yet be imported in " "keyTouch because it is not a valid keyboard file." msgstr "" "A billentyűzet fájl mentése elkészült, ha nem lehet a keyTouch-ba importálni " "akkor ez egy érvénytelen billentyűzet fájl." #: src/callbacks.c:396 #, c-format msgid "" "The keyboard file \"%s\" has been modified.\n" "Do you want to save your changes?" msgstr "" "A \"%s\" billentyűzet fájl módosítva lett.\n" "Akarja menteni az Ön módosításait?" #: src/callbacks.c:452 msgid "Open keyboard file" msgstr "Billentyűzet fájl megnyitása" #: src/callbacks.c:657 msgid "Cannot add the key because the name is already in the list." msgstr "Nem lehetett a billentyűt hozzáadni mert a név már szerepel a listán." #: src/support.c:90 src/support.c:114 #, c-format msgid "Couldn't find pixmap file: %s" msgstr "%s pixmap fájl nem található" #: src/config.c:132 msgid "The keyboard file contains an invalid action element." msgstr "" "A billentyűzet (konfigurációs) fájl tartalmaz egy érvénytelen műveleti " "elemet." #: src/config.c:146 msgid "The keyboard file contains an invalid action-type value." msgstr "" "A billentyűzet (konfigurációs) fájl tartalmaz egy érvénytelen művelet-típus " "értéket." #: src/config.c:221 src/config.c:273 src/check_syntax.c:214 msgid "The keyboard file contains an incomplete key element." msgstr "A billentyűzet fájl tartalmaz egy befejezetlen kulcsot." #: src/config.c:431 #, c-format msgid "'%s' is an invalid keyboard file." msgstr "'%s' egy érvénytelen billentyűzet-fájl" #: src/config.c:439 #, c-format msgid "The keyboard file '%s' does not contain a keyboard element." msgstr "A megadott '%s' billentyűzet-fájl nem tartalmaz billentyűzet elemet." #: src/config.c:449 #, c-format msgid "The keyboard file '%s' does not contain a key-list element." msgstr "A billentyűzet fájl '%s' nem tartalmaz billentyű-lista elemet." #: src/config.c:459 #, c-format msgid "The keyboard file '%s' is invalid." msgstr "A megadott '%s' billentyűzet-fájl érvénytelen." #: src/config.c:478 #, c-format msgid "Failed to read the keyboard name from %s." msgstr "Nem sikerült olvasni a billentyűzet nevet innen: %s" #: src/config.c:886 #, c-format msgid "'%s' is not a valid XML document." msgstr "'%s' nem egy valódi XML dokumentum." #: src/evdev.c:230 msgid "Unknown reason" msgstr "Ismeretlen válasz" #: src/get_scancode.c:98 msgid "Failed to read events." msgstr "A könyvtár beolvasása nem sikerült" #: src/get_scancode.c:179 #, c-format msgid "Could not open event device '%s'." msgstr "Nem sikerült megnyitni ezt az eszközt: %s." #: src/get_scancode.c:272 #, c-format msgid "Could not open ACPI socket file '%s'." msgstr "Nem sikerült megnyitni az ACPI socket fájlt:(%s) " #. *********** Create the view *********** #: src/set_data.c:379 msgid "Device" msgstr "Eszköz" #: src/set_data.c:380 msgid "Device name" msgstr "Az eszköz neve" #: src/set_data.c:381 msgid "Bus" msgstr "Busz" #: src/check_syntax.c:106 msgid "" "The keyboard file contains an invalid action element (where the action is a " "plugin)." msgstr "" "A billentyűzet fájl tartalmaz egy érvénytelen műveleti elemet (ahol a " "művelet egy modul)" #: src/check_syntax.c:114 #, c-format msgid "The keyboard file contains the invalid action-type value '%s'." msgstr "" "A billentyűzet (konfigurációs) fájl tartalmaz egy érvénytelen művelet-típus " "értéket ( '%s)." #: src/check_syntax.c:222 msgid "The keyboard file contains an empty key-name element." msgstr "A billentyűzet fájl tartalmaz egy üres billentyűnév elemet." #: src/check_syntax.c:231 #, c-format msgid "The keyboard file contains more than once a key named '%s'." msgstr "A billentyűzet fájl többször tartalmazza a '%s' billentyű nevet." #: src/check_syntax.c:254 #, c-format msgid "'%s' is an invalid scancode." msgstr "'%s' egy érvénytelen scancode." #: src/check_syntax.c:268 #, fuzzy, c-format msgid "'%s' is an invalid USB code." msgstr "'%s' egy érvénytelen billentyű kód." #: src/check_syntax.c:284 #, c-format msgid "Keycode %s is used more than once." msgstr "%s billentyűkód máshol már fel van használva." #: src/check_syntax.c:296 msgid "The keyboard file contains an empty keycode." msgstr "A billentyűzet fájl tartalmaz egy üres billentyű kódot." #: src/check_syntax.c:300 #, c-format msgid "'%s' is an invalid keycode." msgstr "'%s' egy érvénytelen billentyű kód." #: src/check_syntax.c:368 #, c-format msgid "The last-change-date \"%s\" of the keyboard file is not a valid date." msgstr "" "A billentyűzet fájl utolsó módosításának dátuma \"%s\" nem egy valódi dátum." #: src/check_syntax.c:456 #, fuzzy msgid "" "The keyboard file does not provide enough information about the keyboard " "model." msgstr "" "A billentyűzet fájl nem biztosít elegendÅ‘ információt a billentyűzet " "modellrÅ‘l." #: src/check_syntax.c:467 src/check_syntax.c:474 #, fuzzy, c-format msgid "The 'usb-info' element does not contain a '%s' element." msgstr "A billentyűzet fájl nem tartalmaz %s billentyű elemet." #: src/check_syntax.c:485 #, fuzzy, c-format msgid "'%s' is an invalid vendor ID." msgstr "'%s' egy érvénytelen billentyű kód." #: src/check_syntax.c:498 #, fuzzy, c-format msgid "'%s' is an invalid product ID." msgstr "'%s' egy érvénytelen billentyű kód." #: src/check_syntax.c:555 msgid "The keyboard file does not contain a keyboard element." msgstr "A megadott billentyűzet-fájl nem tartalmaz billentyűzet elemet." #: src/check_syntax.c:567 msgid "The keyboard file does not contain a key-list element." msgstr "A billentyűzet fájl nem tartalmaz billentyű lista elemet." #: src/check_syntax.c:574 #, c-format msgid "" "The \"keyboard\" element in the keyboard file does not contain a %s element." msgstr "" "A billentyűzet elemek a billentyűzet fájlban nem tartalmaznak %s elemet." #: src/check_syntax.c:579 msgid "" "The syntax version of the keyboard file is not compatible with this version " "of keyTouch." msgstr "" "A billentyűzet fájl szintaxisa nem kompatibilis ezzel a keyTouch verzióval." #: src/check_syntax.c:589 src/check_syntax.c:594 src/check_syntax.c:599 #: src/check_syntax.c:604 #, c-format msgid "The keyboard file does not contain any %s element." msgstr "A billentyűzet fájl nem tartalmaz %s billentyű elemet." #~ msgid "No scancode. This key is identified by its keycode." #~ msgstr "Nincs scancode. Ezt a billentyűt a billentyű-kód azonosította." keytouch-editor-3.2.0-beta/mxml/0000755000175000017500000000000010767267644016116 5ustar marvinmarvinkeytouch-editor-3.2.0-beta/mxml/mxml.h0000640000175000017500000001470410447301117017221 0ustar marvinmarvin/*------------------------------------------------------------------------------- Name : mxml.h Author : Marvin Raaijmakers Description : Main headerfile for the mxml library Date of last change: 24-Jun-2006 History : 24-Jun-2006 Added prototypes of XmlSetErrorMsg() and XmlGetErrorMsg() 01-Jan-2006 Added #ifndef INCLUDE_MXML_H stuff Copyright (C) 2005-2006 Marvin Raaijmakers 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; either version 2 of the License, or any later version. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA You can contact me at: marvinr(at)users(dot)sf(dot)net (replace (at) by @ and (dot) by .) ---------------------------------------------------------------------------------*/ #ifndef INCLUDE_MXML_H #define INCLUDE_MXML_H #define TRUE 1 #define FALSE 0 #define NUM_SPEC_CHARS 5 #define INDENT_SIZE 2 typedef char Boolean; typedef struct _XmlElementType { char *type; struct _XmlElementType *next; } XmlElementType; typedef struct _XmlAttributeName { char *name; struct _XmlAttributeName *next; } XmlAttributeName; typedef char XmlAttributeValue; typedef struct _XmlAttribute { XmlAttributeName *name; XmlAttributeValue *value; struct _XmlAttribute *next; } XmlAttribute; typedef struct { XmlAttribute *head, /* The head of the list */ *tail; /* The tail of the list */ } XmlAttributeList; typedef struct { Boolean is_empty; XmlElementType *type; XmlAttributeList *attributes; struct _XmlContentList *contents; } XmlContentElement; typedef char *XmlContentString; typedef enum { XmlCType_CDATA, XmlCType_Comment, XmlCType_Element, XmlCType_String, XmlCType_Unknown, XmlNumCType } XmlContentType; typedef union { XmlContentString string; /* Used for XmlCType_CDATA, XmlCType_Comment and XmlCType_String */ XmlContentElement element; } XmlContentData; /* A piece of content appearing of a XML document * or element. */ typedef struct _XmlContent { XmlContentType type; XmlContentData data; struct _XmlContent *next; } XmlContent; /* A list of contents of a XML document or element. * The contents are in order as they appear in the * XML document */ typedef struct _XmlContentList { XmlContent *head, /* The head of the list */ *tail; /* The tail of the list */ int num_elements; struct { int index; XmlContent *content; } prev_request; /* Contains information about the previous XmlGetContent() call */ } XmlContentList; /* A list of all element names appearing in the XML document */ typedef struct { XmlElementType *head, /* The head of the list */ *tail; /* The tail of the list */ } XmlElementTypeList; /* A list of all attribute names appearing in the XML document */ typedef struct { XmlAttributeName *head, /* The head of the list */ *tail; /* The tail of the list */ } XmlAttributeNameList; typedef struct { XmlElementTypeList element_types; XmlAttributeNameList attribute_names; XmlContentList contents; } XmlDocument; #define XmlGetContentType(_content) (((XmlContent *)_content)->type) #define XmlAttributeGetValue(_attribute) (((XmlAttribute *)_attribute)->value) #define XmlGetElementTypeString(_element) (((XmlContent *)_element)->data.element.type->type) #define XmlElementContentList(_element) (((XmlContent *)_element)->data.element.contents) #define XmlElementIsEmpty(_element) (((XmlContent *)_element)->data.element.is_empty) #define XmlStringString(_string) (((XmlContent *)_string)->data.string) #define XmlCommentString(_comment) (((XmlContent *)_comment)->data.string) #define XmlCDATAString(_cdata) (((XmlContent *)_cdata)->data.string) #define XmlDocumentContentList(_document) (&(((XmlDocument *)_document)->contents)) /**** Functions in parse.c ****/ extern XmlDocument *XmlParseDocument (char *filename); /**** Functions in memory.c ****/ extern void *XmlMalloc (size_t size); extern void *XmlRealloc (void *ptr, size_t size); extern void XmlFree (void *pointer); /**** Functions in error.c ****/ extern void XmlError (char *message); extern void XmlSetErrorMsg (char *msg); extern char *XmlGetErrorMsg (void); /**** Functions in content.c ****/ extern void XmlContentAppend (XmlContent *content, XmlContentList *content_list); extern void XmlContentRemove (XmlContent *content, XmlContentList *content_list); extern XmlContent *XmlGetContent (XmlContentList *content_list, int index); extern XmlContent *XmlGetContentOfType (XmlContentList *content_list, XmlContentType type, int index); extern XmlContent *XmlGetElementOfType (XmlContentList *content_list, XmlElementType *type, int index); extern XmlContentList *XmlCreateContentList (void); extern void XmlClearContentList (XmlContentList *content_list); extern XmlContent *XmlCreateContent (XmlContentType type); extern void XmlStringSetString (XmlContent *string, char *value); extern void XmlCommentSetString (XmlContent *comment, char *value); extern void XmlCDATASetString (XmlContent *cdata, char *value); /**** Functions in document.c ****/ extern XmlDocument *XmlCreateDocument (void); extern void XmlFreeDocument (XmlDocument *document); extern XmlElementType *XmlGetElementType (char *type_name, XmlDocument *document, Boolean create_new); extern XmlAttributeName *XmlGetAttributeName (char *attr_name, XmlDocument *document, Boolean create_new); /**** Functions in element.c ****/ extern void XmlClearAttributeList (XmlAttributeList *attribute_list); extern void XmlAttributeListAdd (XmlAttributeList *attribute_list, XmlAttribute *attribute); extern char *XmlGetAttributeValue (XmlAttributeName *attribute_name, XmlContent *content); extern char *XmlGetElementString (XmlContent *content, char *seperator); extern XmlContent *XmlCreateElement (XmlElementType *type, Boolean isempty); extern void XmlSetAttributeValue (XmlAttributeName *attribute_name, char *value, XmlContent *element); /**** Functions in write.c ****/ extern Boolean XmlWriteDocument (XmlDocument *document, char *file_name); #endif keytouch-editor-3.2.0-beta/mxml/content.c0000640000175000017500000002577610447301715017730 0ustar marvinmarvin/*------------------------------------------------------------------------------- Name : content.c Author : Marvin Raaijmakers Description : Provides functions for managing content lists and setting data to XmlContent of type XmlCType_String, XmlCType_Comment and XmlCType_CDATA Date of last change: 20-Dec-2005 History : 20-Dec-2005 Added code to free the attribute list of an element in XmlClearContent() Copyright (C) 2005-2006 Marvin Raaijmakers 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; either version 2 of the License, or any later version. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA You can contact me at: marvinr(at)users(dot)sf(dot)net (replace (at) by @ and (dot) by .) ---------------------------------------------------------------------------------*/ #include #include #include #include #include static void XmlClearContent (XmlContent *content); XmlContentList *XmlCreateContentList (void) /* Input: - Output: - Returns: A pointer to a new and initialized XmlContentList. Description: This function creates a new and initialized XmlContentList. */ { XmlContentList *content_list; /* Create the new XmlContentList */ content_list = XmlMalloc(sizeof(XmlContentList)); /* Initialize the new XmlContentListt: */ content_list->head = content_list->tail = NULL; content_list->num_elements = 0; content_list->prev_request.index = INT_MAX; return (content_list); } void XmlContentAppend ( XmlContent *content, XmlContentList *content_list ) /* Input: content - The content to append to content_list Output: content_list - Where the content was added to Returns: - Description: This function appends content to content_list. If content->type is equal to XmlCType_Unknown the memory pointed to by content will be freed. */ { if (content == NULL) { XmlError ("XmlContentAppend(): The value of parameter 'content' is equal to NULL."); return; } if (content->type == XmlCType_Unknown) { XmlFree (content); return; } content->next = NULL; /* If content_list is empty */ if (content_list->head == NULL) { content_list->head = content; } else { content_list->tail->next = content; } content_list->tail = content; content_list->num_elements++; } void XmlClearContent (XmlContent *content) /* Input: content - The content to clear Output: content - The cleared content Returns: - Description: This function frees the contents of 'content'. */ { switch (content->type) { case XmlCType_CDATA: XmlFree (content->data.string); break; case XmlCType_Comment: XmlFree (content->data.string); break; case XmlCType_Element: if (!content->data.element.is_empty) { XmlClearContentList (content->data.element.contents); XmlFree (content->data.element.contents); } XmlClearAttributeList (content->data.element.attributes); XmlFree (content->data.element.attributes); break; case XmlCType_String: XmlFree (content->data.string); break; } } void XmlClearContentList (XmlContentList *content_list) /* Input: content_list - A pointer to the XmlContentList to clear Output: content_list - A pointer to the cleared XmlContentList Returns: - Description: This function clears content_list. */ { XmlContent *content, *next; for (content = content_list->head; content != NULL; content = next) { next = content->next; XmlClearContent (content); XmlFree (content); } } void XmlContentRemove ( XmlContent *content, XmlContentList *content_list ) /* Input: content - The content to remove from content_list Output: content_list - Where the content was removed from Returns: - Description: This function removes the XmlContent content from content_list. content MUST appear in content_list. This function does not check if content appears in content_list, so the code that uses this function is reasponsible for that. */ { XmlContent *prev_content, *next_content; if (content == NULL) { XmlError ("XmlContentRemove(): The value of parameter 'content' is equal to NULL."); return; } XmlClearContent (content); /* If content is the last element of content_list */ if (content->next == NULL) { /* If content is the only element of content_list */ if (content_list->head == content) { content_list->head = NULL; } else { /* Bad luck, we have to search for the XmlContent that * appears before content. */ for (prev_content = content_list->head; prev_content != NULL && prev_content->next != content; prev_content = prev_content->next) ; /* NULL Statement */ if (prev_content == NULL) { XmlError ("XmlContentRemove(): content does not appear in content_list."); exit (EXIT_FAILURE); } content_list->tail = prev_content; prev_content->next = NULL; } XmlFree (content); } else { next_content = content->next; *content = *next_content; XmlFree (next_content); if (content->next == NULL) { content_list->tail = content; } } content_list->prev_request.index = INT_MAX; content_list->num_elements--; } XmlContent *XmlGetContent ( XmlContentList *content_list, int index ) /* Input: content_list - The list to get the XmlContent from index - The index of the XmlContent in content_list Output: - Returns: A pointer to the requested XmlContent. If index is larger or equal than the number of elements in content_list, NULL will be returned. Description: This function returns the index'th element of content_list. */ { XmlContent *content; int count; if (content_list == NULL || index >= content_list->num_elements) { return (NULL); } else if (index < 0) { XmlError ("Cannot get an element with index < 0 from a XmlContentList."); return NULL; } if (index >= content_list->prev_request.index) { /* Yeah, we are saving time ;) */ content = content_list->prev_request.content; count = content_list->prev_request.index; } else { content = content_list->head; count = 0; } /* Get the requested XmlContent */ for (/* count is already set */; count < index; count++) { content = content->next; } if (index < content_list->num_elements-1) { /* Save information about the current request */ content_list->prev_request.index = index; content_list->prev_request.content = content; } return content; } XmlContent *XmlGetContentOfType ( XmlContentList *content_list, XmlContentType type, int index ) /* Input: content_list - The list to get the XmlContent from type - The type of the XmlContent to get index - The index of the XmlContent of type 'type' in content_list Output: - Returns: A pointer to the requested XmlContent. If index is larger or equal than the number of elements, of type 'type', in content_list, NULL will be returned. Description: This function returns the index'th element of content_list which type is 'type'. */ { XmlContent *content; int count; if (content_list == NULL || index >= content_list->num_elements) { return (NULL); } else if (index < 0) { XmlError ("Cannot get an element with index < 0 from a XmlContentList."); return NULL; } content = content_list->head; count = -1; /* Get the requested XmlContent */ while (count < index && content != NULL) { if (content->type == type) { count++; } if (count < index) { content = content->next; } } return content; } XmlContent *XmlGetElementOfType ( XmlContentList *content_list, XmlElementType *type, int index ) /* Input: content_list - The list to get the XmlContent from type - The type of the XmlElement to get index - The index of the XmlContent, which contains a XmlElement of type 'type', in content_list. Output: - Returns: A pointer to the requested XmlContent. If index is larger or equal than the number of elements, of type 'type', in content_list, NULL will be returned. Description: This function returns the index'th XmlContent, which contains a XmlElement of type 'type', of content_list. */ { XmlContent *content; int count; if (content_list == NULL || index >= content_list->num_elements) { return (NULL); } else if (index < 0) { XmlError ("Cannot get an element with index < 0 from a XmlContentList."); return NULL; } content = content_list->head; count = -1; /* Get the requested XmlContent */ while (count < index && content != NULL) { if (content->type == XmlCType_Element && content->data.element.type == type) { count++; } if (count < index) { content = content->next; } } return content; } XmlContent *XmlCreateContent (XmlContentType type) /* Input: type - The type of the XmlContent to create Output: - Returns: A pointer to a new and initialized XmlContent. Description: This function returns a pointer to a new and initialized XmlContent of type 'type'. */ { XmlContent *new_content; new_content = XmlMalloc(sizeof(XmlContent)); new_content->type = type; if (type == XmlCType_Element) { new_content->data.element.type = NULL; new_content->data.element.type = NULL; new_content->data.element.attributes = XmlMalloc(sizeof(XmlAttributeList)); new_content->data.element.attributes->head = new_content->data.element.attributes->tail = NULL; new_content->data.element.contents = XmlCreateContentList(); } else if (type == XmlCType_CDATA || type == XmlCType_Comment || type == XmlCType_String) { new_content->data.string = NULL; } return (new_content); } void XmlStringSetString ( XmlContent *string, char *value ) /* Input: value - The value to set to the string Output: string - The XmlContent that is the string where the value was set to Returns: - Description: This function sets value to string. */ { /* If the string contains data */ if (string->data.string != NULL) { XmlFree (string->data.string); } string->data.string = XmlMalloc(strlen(value)+1); strcpy (string->data.string, value); } void XmlCommentSetString ( XmlContent *comment, char *value ) /* Input: value - The value to set to the comment Output: comment - The XmlContent that is the comment where the value was set to Returns: - Description: This function sets value to comment. */ { XmlStringSetString (comment, value); } void XmlCDATASetString ( XmlContent *cdata, char *value ) /* Input: value - The value to set to the cdata Output: comment - The XmlContent that is the cdata where the value was set to Returns: - Description: This function sets value to cdata. */ { XmlStringSetString (cdata, value); } keytouch-editor-3.2.0-beta/mxml/document.c0000600000175000017500000001302110356023355020044 0ustar marvinmarvin/*------------------------------------------------------------------------------- Name : document.c Author : Marvin Raaijmakers Description : Provides functions for XmlDocument Date of last change: ? History : ? Copyright (C) 2005-2006 Marvin Raaijmakers 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; either version 2 of the License, or any later version. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA You can contact me at: marvinr(at)users(dot)sf(dot)net (replace (at) by @ and (dot) by .) ---------------------------------------------------------------------------------*/ #include #include #include #include XmlAttributeName *XmlGetAttributeName ( char *attr_name, XmlDocument *document, Boolean create_new ) /* Input: attr_name - The name of the XmlAttributeName to get document - The document that contains the type create_new - Indicates whether the XmlAttributeName should be created if it doesn't exist. Output: - Returns: A pointer that points to the XmlAttributeName which name is attr_name. If the XmlAttributeName doesn't exist and create_new is FALSE, NULL will be returned. Description: This function returns a pointer to the XmlAttributeName, in document, whos name is attr_name. If no such XmlAttributeName exists and create_new is TRUE, it will be created. */ { XmlAttributeName *attr, *prev_attr, *next_attr; for (prev_attr = NULL, attr = document->attribute_names.head; attr != NULL && strcmp(attr->name, attr_name) < 0; prev_attr = attr, attr = attr->next) ; /* NULL Statement */ if (attr == NULL || strcmp(attr->name, attr_name) > 0) { if (create_new) { next_attr = attr; attr = XmlMalloc(sizeof(XmlAttributeName)); attr->name = XmlMalloc(strlen(attr_name)+1); strcpy (attr->name, attr_name); if (prev_attr == NULL) { document->attribute_names.head = attr; } else { prev_attr->next = attr; } attr->next = next_attr; if (next_attr == NULL) { document->attribute_names.tail = attr; } } else { attr = NULL; } } return (attr); } XmlElementType *XmlGetElementType ( char *type_name, XmlDocument *document, Boolean create_new ) /* Input: type_name - The name of the XmlElementType to get document - The document that contains the type create_new - Indicates whether the XmlElementType should be created if it doesn't exist. Output: - Returns: A pointer that points to the XmlElementType which name is type_name. If the XmlElementType doesn't exist and create_new is FALSE, NULL will be returned. Description: This function returns a pointer to the XmlElementType, in document, whos name is type_name. If no such XmlElementType exists and create_new is TRUE, it will be created. */ { XmlElementType *type, *prev_type, *next_type; for (prev_type = NULL, type = document->element_types.head; type != NULL && strcmp(type->type, type_name) < 0; prev_type = type, type = type->next) ; /* NULL Statement */ if (type == NULL || strcmp(type->type, type_name) > 0) { if (create_new) { next_type = type; type = XmlMalloc(sizeof(XmlElementType)); type->type = XmlMalloc(strlen(type_name)+1); strcpy (type->type, type_name); if (prev_type == NULL) { document->element_types.head = type; } else { prev_type->next = type; } type->next = next_type; if (next_type == NULL) { document->element_types.tail = type; } } else { type = NULL; } } return (type); } void XmlFreeDocument (XmlDocument *document) /* Input: document - A pointer to the XmlDocument to free Output: - Returns: - Description: This function frees the contents of document and document itself. */ { XmlAttributeName *attribute_name; XmlElementType *element_type; void *next; XmlClearContentList (&document->contents); /* Free the element types */ for (element_type = document->element_types.head; element_type != NULL; element_type = next) { next = element_type->next; XmlFree (element_type->type); XmlFree (element_type); } /* Free the attribute names */ for (attribute_name = document->attribute_names.head; attribute_name != NULL; attribute_name = next) { next = attribute_name->next; XmlFree (attribute_name->name); XmlFree (attribute_name); } XmlFree (document); } XmlDocument *XmlCreateDocument (void) /* Input: - Output: - Returns: A pointer to a new and initialized XmlDocument. Description: This function creates a new and initialized XmlDocument. */ { XmlDocument *document; /* Create the new document */ document = XmlMalloc(sizeof(XmlDocument)); /* Initialize the new document: */ document->contents.head = document->contents.tail = NULL; document->contents.num_elements = 0; document->contents.prev_request.index = INT_MAX; document->element_types.head = document->element_types.tail = NULL; document->attribute_names.head = document->attribute_names.tail = NULL; return (document); } keytouch-editor-3.2.0-beta/mxml/element.c0000600000175000017500000001667410356023456017702 0ustar marvinmarvin/*------------------------------------------------------------------------------- Name : element.c Author : Marvin Raaijmakers Description : Provides functions for XML elements Date of last change: ? History : ? Copyright (C) 2005-2006 Marvin Raaijmakers 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; either version 2 of the License, or any later version. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA You can contact me at: marvinr(at)users(dot)sf(dot)net (replace (at) by @ and (dot) by .) ---------------------------------------------------------------------------------*/ #include #include #include static void append_element_string ( XmlContent *element, char *string, char *seperator ); static int element_string_size ( XmlContent *element, int seperator_size ); void XmlAttributeListAdd ( XmlAttributeList *attribute_list, XmlAttribute *attribute ) /* Input: attribute - The attribute to add to attribute_list Output: attribute_list - The attribute list where attribute was added to. Returns: - Description: This function adds attribute to attribute_list. */ { if (attribute_list != NULL && attribute != NULL) { attribute->next = NULL; if (attribute_list->head == NULL) { attribute_list->head = attribute_list->tail = attribute; } else { attribute_list->tail->next = attribute; attribute_list->tail = attribute; } } } void XmlSetAttributeValue ( XmlAttributeName *attribute_name, char *value, XmlContent *element ) /* Input: attribute_name - The name of attribute to set the value to. value - The value to set to the attribute Output: element - The element to where the attribute was set to. Returns: - Description: This function sets the value 'value' to the attribute, named attribute_name, in element. */ { XmlAttribute *attribute; /* Search for the attribute that may already exist in element */ for (attribute = element->data.element.attributes->head; attribute != NULL && attribute->name != attribute_name; attribute = attribute->next) ; /* NULL Statement */ /* If the attribute already exists */ if (attribute != NULL && attribute->value) { XmlFree (attribute->value); } else if (attribute == NULL) { attribute = XmlMalloc(sizeof(XmlAttribute)); attribute->name = attribute_name; /* Add the attribute to the element */ XmlAttributeListAdd (element->data.element.attributes, attribute); } attribute->value = XmlMalloc(strlen(value)+1); strcpy (attribute->value, value); } void XmlClearAttributeList (XmlAttributeList *attribute_list) /* Input: - Output: attribute_list - The cleared XmlAttributeList. Returns: - Description: This function frees all attributes in attribute_list. */ { XmlAttribute *attribute, *tmp; if (attribute_list != NULL) { attribute = attribute_list->head; while (attribute != NULL) { tmp = attribute; attribute = attribute->next; if (tmp->value != NULL) { XmlFree (tmp->value); } XmlFree (tmp); } } attribute_list->head = attribute_list->tail = NULL; } char *XmlGetAttributeValue ( XmlAttributeName *attribute_name, XmlContent *content ) /* Input: content - The element to get the attribute from. attribute_name - The name of attribute to get the value from. Output: - Returns: The a pointer to a string which is the value of the attribute, named attribute_name, of the element content. If no such attribute exists NULL is returned. Description: This function returns a pointer to a string which is the value of the attribute, named attribute_name, of the element content. */ { XmlAttribute *attribute; if (content->type != XmlCType_Element) { XmlError ("Tried to get an attribute value from content that is not an element."); } /* Find the matching attribute */ for (attribute = content->data.element.attributes->head; attribute != NULL && attribute->name != attribute_name; attribute = attribute->next) ; /* NULL Statement */ if (attribute == NULL) { return (NULL); } return (attribute->value); } int element_string_size ( XmlContent *element, int seperator_size ) { XmlContent *content; int size; size = 0; for (content = element->data.element.contents->head; content != NULL; content = content->next) { if (content->type == XmlCType_Element) { size += element_string_size(content, seperator_size); } else if (content->type == XmlCType_String) { size += strlen(content->data.string)+seperator_size; } } return (size); } void append_element_string ( XmlContent *element, char *string, char *seperator ) { XmlContent *content; for (content = element->data.element.contents->head; content != NULL; content = content->next) { if (content->type == XmlCType_Element) { append_element_string (content, string, seperator); } else if (content->type == XmlCType_String) { strcat (string, content->data.string); strcat (string, seperator); } } } char *XmlGetElementString ( XmlContent *content, char *seperator ) /* Input: content - The element to get the string from. seperator - Strings of different tags will be seperated by this string. Output: - Returns: The a pointer to the string the element 'content' contains. Description: This function returns a pointer to a string the element 'content' contains. Strings of different tags will be seperated by seperator. If the string is no longer needed it should be free with XmlFree(). */ { int string_size, seperator_size; char *string; if (content == NULL || seperator == NULL) { return (NULL); } if (content->type != XmlCType_Element) { XmlError ("XmlGetElementString(): content is not XmlCType_Element."); return (NULL); } seperator_size = strlen(seperator); /* element_string_size() returns seperator_size too much */ string_size = element_string_size(content, seperator_size); /* We use the last seperator_size bytes as an anti-overflow buffer */ string = XmlMalloc(string_size+1); string[0] = '\0'; append_element_string (content, string, seperator); /* The anti-overflow buffer is now filled with seperator */ /* Remove the last seperator from the string */ string[string_size-seperator_size] = '\0'; /* Resize the allocated memory */ string = XmlRealloc(string, string_size+1-seperator_size); return (string); } XmlContent *XmlCreateElement ( XmlElementType *type, Boolean is_empty ) /* Input: type - The type of the XmlContent to create is_empty - Identifies if the element to create will be an empty element. Output: - Returns: A pointer to a new and initialized XmlContent which is an element. Description: This function returns a pointer to a new and initialized element of type 'type'. */ { XmlContent *new_element; new_element = XmlCreateContent(XmlCType_Element); new_element->data.element.type = type; new_element->data.element.is_empty = is_empty; return (new_element); } keytouch-editor-3.2.0-beta/mxml/error.c0000640000175000017500000000460110447302664017373 0ustar marvinmarvin/*------------------------------------------------------------------------------- Name : error.c Author : Marvin Raaijmakers Description : Error message handler Date of last change: 24-Jun-2006 History : 24-Jun-2006 Added XmlSetErrorMsg() and XmlGetErrorMsg() Copyright (C) 2005-2006 Marvin Raaijmakers 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; either version 2 of the License, or any later version. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA You can contact me at: marvinr(at)users(dot)sf(dot)net (replace (at) by @ and (dot) by .) ---------------------------------------------------------------------------------*/ #include #include #include #include static char *error_msg = NULL; void XmlError (char *message) /* Input: message - The error message to print. Output: - Returns: - Description: This function prints the error message 'message' to the stderr. */ { fprintf (stderr, "libMXml: %s\n", message); } void XmlSetErrorMsg (char *msg) /* Input: msg - The error message to store. Global output: error_msg - A copy of the string 'msg'. Description: This function lets 'error_msg' point to a copy of the string 'msg'. If 'error_msg' does not point to NULL, this function will free the memory pointed to by 'error_msg'. The value of 'error_msg' can be retrieved by calling XmlGetErrorMsg(). */ { if (error_msg) { free (error_msg); } error_msg = strdup (msg); if (error_msg == NULL) { fputs ("libMXml: Did not have enough memory for" "copying the following error message:", stderr); fputs (msg, stderr); error_msg = NULL; } } char *XmlGetErrorMsg (void) /* Global input: error_msg - This pointer will be returned Returns: The error message that was contructed by the latest XmlSetErrorMsg() call. */ { return error_msg; } keytouch-editor-3.2.0-beta/mxml/memory.c0000640000175000017500000000476710356023556017566 0ustar marvinmarvin/*------------------------------------------------------------------------------- Name : memory.c Author : Marvin Raaijmakers Description : Provides functions for allocating, resizing and freeing memory. Date of last change: ? History : ? Copyright (C) 2005-2006 Marvin Raaijmakers 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; either version 2 of the License, or any later version. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA You can contact me at: marvinr(at)users(dot)sf(dot)net (replace (at) by @ and (dot) by .) ---------------------------------------------------------------------------------*/ #include #include #include void *XmlMalloc (size_t size) /* Input: size - The number of bytes to allocate. Output: - Returns: A pointer to the allocated space. Description: This function allocates memory of size bytes. If allocating failed it will print an error message and exit the program. */ { void *memory; memory = malloc(size); if (memory == NULL) { XmlError ("Failed to allocate memory."); exit (1); } return (memory); } void *XmlRealloc ( void *ptr, size_t size ) /* Input: ptr - Pointer to the memory block to resize size - The number of bytes to allocate. Output: - Returns: A pointer to the newly allocated memory, which is suitably aligned for any kind of variable and may be different from ptr, or NULL if the request fails. Description: This function changes the size of the memory block pointed to by ptr to size bytes. The contents will be unchanged to the minimum of the old and new sizes; newly allocated memory will be uninitialized. */ { return (realloc(ptr, size)); } void XmlFree (void *pointer) /* Input: pointer - Pointer to the memory to free. Output: - Returns: - Description: This function frees the memory, pointed to by pointer, that was previously allocated by XmlMalloc. */ { free (pointer); } keytouch-editor-3.2.0-beta/mxml/parse.c0000640000175000017500000004240610447302462017355 0ustar marvinmarvin/*------------------------------------------------------------------------------- Name : parse.c Author : Marvin Raaijmakers Description : Provides functions for parsing an XML document Date of last change: 24-Jun-2006 History : 24-Jun-2006 Replaced every call to XmlError() by a call to XmlSetErrorMsg() Copyright (C) 2005-2006 Marvin Raaijmakers 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; either version 2 of the License, or any later version. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA You can contact me at: marvinr(at)users(dot)sf(dot)net (replace (at) by @ and (dot) by .) ---------------------------------------------------------------------------------*/ #include #include #include static char read_next_char (FILE *file); static Boolean file_string_appear (FILE *file, char *string); static char *read_string (FILE *file, Boolean (*stop)(char, FILE *)); static XmlContent *XmlParseString (FILE *file); static XmlContent *XmlParseTag (FILE *file, XmlDocument *document); static XmlContentList *XmlParseContents (FILE *file, XmlDocument *document, char *tag_name); static char read_special_character (FILE *file); static char attrval_surr; /* To store the character that surrounds the attribute * value (needed by end_attribute_value()). */ static struct { char *string, /* Every string should end with ';' (to speedup a little)*/ character; } spec_char[NUM_SPEC_CHARS] = {{"lt;", '<'}, {"gt;", '>'}, {"amp;", '&'}, {"apos;", '\''}, {"quot;", '"'}}; char read_next_char (FILE *file) /* Input: file - The file to read from. Output: - Returns: The first non-space character in file (this might be an EOF). Description: This function returns the first non-space character in file (this might be an EOF). */ { char c; do { c = getc(file); } while (isspace(c)); return (c); } Boolean file_string_appear ( FILE *file, char *string ) /* Input: file - The file to read the string from. string - The string to check. Output: - Returns: TRUE if string appears at the current position in file, otherwise FALSE. Description: This function checks if string appears at the current position in file. If string appears in file, the file position indicator will be set after the occurrence of string, otherwise it will have the same value as before calling this function. */ { fpos_t start_pos; fgetpos (file, &start_pos); while (*string != '\0') { if (*string != getc(file)) { /* Restore file position indicator */ fsetpos (file, &start_pos); return (FALSE); } string++; } return (TRUE); } Boolean end_string ( char *string, char c, FILE *file ) { return ((string[0] == c) && file_string_appear(file, &(string[1]))); } Boolean end_CDATA ( char c, FILE *file ) { return (end_string ("]]", c, file)); } Boolean end_comment ( char c, FILE *file ) { return (end_string ("-->", c, file)); } Boolean end_element_type ( char c, FILE *file ) { if (c == '>' || c == '/' || isspace(c)) { fseek (file, -1, SEEK_CUR); return (TRUE); } return (FALSE); } Boolean end_attribute_name ( char c, FILE *file ) { if (c == '>' || c == '/' || c == '=' || isspace(c)) { fseek (file, -1, SEEK_CUR); return (TRUE); } return (FALSE); } Boolean end_attribute_value ( char c, FILE *file ) { if (c == attrval_surr || c == '<' || c == '>') { fseek (file, -1, SEEK_CUR); return (TRUE); } return (FALSE); } char *read_string ( FILE *file, Boolean (*stop)(char, FILE *) ) /* Input: file - The file to read the string from. stop - function that indicates if it is time to stop reading Output: - Returns: A pointer to the string read from file. Description: This function reads a string from file. It stops reading AFTER an EOF or the function stop returns TRUE. The EOF will not be included with the returned string. Note that when the function stop returns FALSE, it must restore the file position indicator. When stop returns TRUE and when it reads from file the file position indicator may not be restored. */ { fpos_t string_pos, end_pos; int string_size, count; char *string, c; fgetpos (file, &string_pos); string_size = 0; /* Get the size of the string */ do { c = getc (file); string_size++; } while (c != EOF && !(*stop)(c, file)); /* Because, when counting string_size, we increased string_size one time * too much, string_size is now equal to the size of the string plus the * '\0' character. */ string = XmlMalloc(string_size); fgetpos (file, &end_pos); fsetpos (file, &string_pos); string_size--; /* Read the string */ for (count = 0; count < string_size; count++) { string[count] = getc(file); } string[count] = '\0'; fsetpos (file, &end_pos); return (string); } char read_special_character (FILE *file) /* Input: file - The file to read from Output: - Returns: If a special character was read it will be returned otherwise '\0' is returned. Description: This function reads a special character, if there is one, from file and returns it. If no special character was read, the file position indicator of file will be restored. An special character begins with the '&' character which should be read before calling this function. */ { int count; for (count = 0; count < NUM_SPEC_CHARS; count++) { if (file_string_appear(file, spec_char[count].string)) { return (spec_char[count].character); } } return ('\0'); } XmlContent *XmlParseString (FILE *file) /* Input: file - The file to read from Output: - Returns: When no errors occured a pointer to a new XmlContent containing the readenc string. Otherwise NULL is returned. Description: This function reads a string from file. */ { fpos_t string_pos; int string_size, count; XmlContent *content; char c, prev_c; fgetpos (file, &string_pos); string_size = 0; prev_c = ' '; /* Get the size of the string */ do { c = getc (file); if (c == '>') { XmlSetErrorMsg ("'>' appearing without '<'."); return (NULL); } if (c == '&') { read_special_character(file); } /* Do not read double spaces */ if (!(isspace(prev_c) && isspace(c))) { string_size++; } prev_c = c; } while (c != EOF && c != '<'); content = XmlMalloc(sizeof(XmlContent)); content->type = XmlCType_String; /* Because, when counting string_size, we increased string_size one time * too much, string_size is now equal to the size of the string plus the * '\0' character. */ content->data.string = XmlMalloc(string_size); fsetpos (file, &string_pos); string_size--; prev_c = ' '; count = 0; /* Read the string */ while (count < string_size) { c = getc(file); if (c == '&') { c = read_special_character(file); if (c == '\0') { c = '&'; } } if (isspace(c)) { c = ' '; } /* Do not read double spaces */ if (!(isspace(prev_c) && c == ' ')) { content->data.string[count] = c; count++; } prev_c = c; } content->data.string[count] = '\0'; return (content); } XmlAttributeList *XmlParseAttributes ( FILE *file, XmlDocument *document ) /* Input: file - The file to read from. Output: document - If the new content contains new attribute names they are added to their list. Returns: When no errors occured a pointer to a new XmlAttributeList. Otherwise NULL is returned. Description: This function reads all attributes and their values of the current tag from file. */ { XmlAttributeList *attributes; XmlAttribute *attribute; char *name, c; Boolean finished; attributes = XmlMalloc(sizeof(XmlAttributeList)); attributes->head = attributes->tail = NULL; finished = FALSE; while (!finished) { attribute = XmlMalloc(sizeof(XmlAttribute)); c = read_next_char(file); if (c == EOF) { XmlSetErrorMsg ("Tag is not closed."); XmlClearAttributeList (attributes); XmlFree (attributes); XmlFree (attribute); return (NULL); } fseek (file, -1, SEEK_CUR); name = read_string(file, end_attribute_name); if (name[0] == '\0') { finished = TRUE; XmlFree (attribute); } else if (read_next_char(file) != '=' || feof(file)) { XmlSetErrorMsg ("Tag contains attribute without a value."); XmlClearAttributeList (attributes); XmlFree (attributes); XmlFree (attribute); XmlFree (name); return (NULL); } else if ((attrval_surr = read_next_char(file)) != '\'' && attrval_surr != '"') { XmlSetErrorMsg ("Attribute value is not surrounded by \"'\" or '\"'."); XmlClearAttributeList (attributes); XmlFree (attributes); XmlFree (attribute); XmlFree (name); return (NULL); } else { attribute->value = read_string(file, end_attribute_value); if (read_next_char(file) != attrval_surr) { XmlSetErrorMsg ("Attribute value is not surrounded by \"'\" or '\"'."); XmlClearAttributeList (attributes); XmlFree (attributes); XmlFree (attribute->value); XmlFree (attribute); XmlFree (name); return (NULL); } attribute->name = XmlGetAttributeName(name, document, TRUE); XmlAttributeListAdd (attributes, attribute); } XmlFree (name); } return (attributes); } XmlContent *XmlParseElement ( FILE *file, XmlDocument *document ) /* Input: file - The file to read from. Output: document - If the new content contains new attribute names or element types, they are added to their list. Returns: When no errors occurred a pointer to a new XmlContent containing the readen element. Otherwise NULL is returned. Description: This function reads an element from file. If the tag is the start-tag of a non-empty element, the contents and the end-tag of this element will be read. The '<' of the tag should already been read from file before calling this function. */ { XmlContent *content; char *tag_name, c; content = XmlMalloc(sizeof(XmlContent)); content->type = XmlCType_Element; tag_name = read_string(file, end_element_type); content->data.element.type = XmlGetElementType(tag_name, document, TRUE); /* Read the attributes of the element */ content->data.element.attributes = XmlParseAttributes(file, document); /* If an error occured */ if (content->data.element.attributes == NULL) { XmlFree (tag_name); XmlFree (content); return (NULL); } c = read_next_char(file); if (c == '/') { if (getc(file) != '>') { XmlSetErrorMsg ("Expected '>' after '/'."); XmlFree (content); content = NULL; } else { content->data.element.is_empty = TRUE; content->data.element.contents = NULL; } } else if (c == '>') { content->data.element.is_empty = FALSE; content->data.element.contents = XmlParseContents(file, document, tag_name); if (content->data.element.contents == NULL) { XmlFree (content); content = NULL; } } XmlFree (tag_name); return (content); } XmlContent *XmlParseTag ( FILE *file, XmlDocument *document ) /* Input: file - The file to read from. Output: document - If the new content contains new attribute names or element types, they are added to their list. Returns: When no errors occured a pointer to a new XmlContent containing the readen tag. Otherwise NULL is returned. Description: This function reads a tag from file. If the tag is the start-tag of a non-empty element, the contents and the end-tag of this element will be read. The '<' of the tag should already been read from file before calling this function. */ { char c; XmlContent *content; c = getc(file); if (c == EOF || c == '<') { XmlSetErrorMsg ("Document contains an unclosed-tag."); return (NULL); } else if (c == '!' || c == '?') { content = XmlMalloc(sizeof(XmlContent)); /* If it is a CDATA section */ if (c == '!' && file_string_appear(file, "[CDATA[")) { content->data.string = read_string(file, end_CDATA); if (feof(file) || getc(file) != '>') { XmlSetErrorMsg ("Document contains an unclosed-tag."); XmlFree (content->data.string); XmlFree (content); return (NULL); } content->type = XmlCType_CDATA; } /* If it is a comment */ else if (c == '!' && file_string_appear(file, "--")) { content->data.string = read_string(file, end_comment); /* Because we want to check what character was read the last time */ fseek (file, -1, SEEK_CUR); /* If the last character read was a '>' */ if (getc(file) != '>') { XmlSetErrorMsg ("Document contains an unclosed-tag."); XmlFree (content->data.string); XmlFree (content); return (NULL); } content->type = XmlCType_Comment; } else { /* The type of tag is not supported. * Therefore we read until we reach a '>'. */ do { c = getc(file); if (c == EOF) { XmlSetErrorMsg ("Document contains an unclosed-tag."); XmlFree (content); return (NULL); } } while (c != '>'); content->type = XmlCType_Unknown; } } else if (!isalpha(c)) { XmlSetErrorMsg ("Document contains a tag with an invalid name."); return (NULL); } else { /* Because we already read one character of the tag */ fseek (file, -1, SEEK_CUR); content = XmlParseElement(file, document); } return (content); } XmlContentList *XmlParseContents ( FILE *file, XmlDocument *document, char *tag_name ) /* Input: file - The file to read from tag_name - The name of the current tag. It should be NULL if we are going to read a root element. Output: document - If the new content contains new attribute names or element types, they are added to their list. Returns: A pointer to a the new XmlContentList when no errors occured. Otherwise NULL is returned. Description: This function reads the content of the current tag or document from file. */ { XmlContentList *contents; XmlContent *new_content; Boolean end_tag_found; char c; int count; contents = XmlCreateContentList(); end_tag_found = FALSE; while (!feof(file) && !end_tag_found) { c = read_next_char(file); if (c != EOF) { if (c == '<') { c = getc(file); if (c == '/') { end_tag_found = TRUE; } else if (c == EOF) { XmlSetErrorMsg ("Document contains an end tag that is not closed."); XmlClearContentList (contents); XmlFree (contents); return (NULL); } else { /* Because we already read one character of the tag */ fseek (file, -1, SEEK_CUR); new_content = XmlParseTag(file, document); } } else { /* Because we already read one character of the string */ fseek (file, -1, SEEK_CUR); new_content = XmlParseString(file); } if (end_tag_found) { if (tag_name == NULL) { XmlSetErrorMsg ("Document contains an end tag without having a start tag."); XmlClearContentList (contents); XmlFree (contents); return (NULL); } /* Compare the type of the start tag with the type of the end tag */ for (count = 0; tag_name[count] != '\0'; count++) { if (getc(file) != tag_name[count]) { XmlSetErrorMsg ("Type of end tag does not match start tag."); XmlClearContentList (contents); XmlFree (contents); return (NULL); } } c = getc(file); if (!isspace(c) && c != '>') { XmlSetErrorMsg ("Type of end tag does not match start tag."); XmlClearContentList (contents); XmlFree (contents); return (NULL); } /* Read until '>' */ while (c != '>') { if (!isspace(c)) { XmlSetErrorMsg ("Document contains an end tag that is not closed."); XmlClearContentList (contents); XmlFree (contents); return (NULL); } c = getc(file); } } else { /* If an error occured */ if (new_content == NULL) { XmlClearContentList (contents); XmlFree (contents); return (NULL); } XmlContentAppend (new_content, contents); } } } if (!end_tag_found && tag_name != NULL) { XmlSetErrorMsg ("End tag missing."); XmlClearContentList (contents); XmlFree (contents); return (NULL); } return (contents); } XmlDocument *XmlParseDocument (char *filename) /* Input: filename - The filename of the XML document to parse Output: - Returns: A XmlDocument pointer to the parsed XML document after succesfully parsing the document. Otherwise NULL is returned. Description: This function parses the XML document whose name is the string pointed to by filename. If it fails to parse the file an error message describing why it failed can be retrieved by calling XmlGetErrorMsg(). */ { FILE *file; XmlDocument *document; XmlContentList *contents; file = fopen(filename, "r"); if (file == NULL) { XmlSetErrorMsg ("Could not open the XML document."); return (NULL); } document = XmlCreateDocument(); contents = XmlParseContents (file, document, NULL); if (contents == NULL) { XmlFree (document); return (NULL); } document->contents = *contents; XmlFree (contents); fclose (file); return (document); } keytouch-editor-3.2.0-beta/mxml/Makefile.in0000640000175000017500000000103610306635631020137 0ustar marvinmarvinTARGET_SLIB = libmxml.so TARGET_LIB = $(TARGET_SLIB:.so=.a) SOURCES = error.c \ parse.c \ memory.c \ content.c \ document.c \ element.c \ write.c SHAREDOPT = -shared CFLAGS=-I. -O2 -Wall -g -fpic CC= @CC@ EXTRA_LIBS = OBJECTS=$(SOURCES:.c=.o) all: $(TARGET_SLIB) $(TARGET_LIB): $(OBJECTS) $(AR) rc $(TARGET_LIB) $(OBJECTS) $(TARGET_SLIB): $(TARGET_LIB) $(CC) $(SHAREDOPT) -o $(TARGET_SLIB) $(OBJECTS) $(EXTRA_LIBS) cc: $(MAKE) CC=cc \ all clean: $(RM) $(TARGET_SLIB) $(TARGET_LIB) $(OBJECTS) install: all uninstall:keytouch-editor-3.2.0-beta/mxml/write.c0000640000175000017500000002052210447302606017370 0ustar marvinmarvin/*------------------------------------------------------------------------------- Name : write.c Author : Marvin Raaijmakers Description : Provides functions for writing an XML document Date of last change: 24-Jun-2006 History : 24-Jun-2006 Replaced every call to XmlError() by a call to XmlSetErrorMsg() Copyright (C) 2005-2006 Marvin Raaijmakers 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; either version 2 of the License, or any later version. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA You can contact me at: marvinr(at)users(dot)sf(dot)net (replace (at) by @ and (dot) by .) ---------------------------------------------------------------------------------*/ #include #include #include static char *get_special_char (char c); static void indent ( FILE *file, int level ); static Boolean XmlWriteContentList ( FILE *file, XmlContentList *content_list, XmlDocument *document ); static Boolean XmlWriteCDATA ( FILE *file, XmlContent *content, XmlDocument *document ); static Boolean XmlWriteComment ( FILE *file, XmlContent *content, XmlDocument *document ); static Boolean XmlWriteElement ( FILE *file, XmlContent *content, XmlDocument *document ); static Boolean XmlWriteUnknown ( FILE *file, XmlContent *content, XmlDocument *document ); static int level; /* Indicates the depht of the recursion * tree of XmlWriteElement() */ char *get_special_char (char c) /* Input: c - The character to check Output: - Returns: The string that replaces the special character. If c is not a special character NULL is returned. Description: This function returns the string that replaces c. */ { int count; static struct { char *string, /* Every string should end with ';' (to speedup a little)*/ character; } spec_char[NUM_SPEC_CHARS] = {{"lt;", '<'}, {"gt;", '>'}, {"amp;", '&'}, {"apos;", '\''}, {"quot;", '"'}}; for (count = 0; count < NUM_SPEC_CHARS; count++) { if (c == spec_char[count].character) { return (spec_char[count].string); } } return (NULL); } void indent ( FILE *file, int level ) /* Input: level - The indent level Output: file - The spaces where written to this file Returns: - Description: This function writes INDENT_SIZE*level number of spaces to file. */ { level *= INDENT_SIZE; while (level) { putc (' ', file); level--; } } Boolean XmlWriteCDATA ( FILE *file, XmlContent *content, XmlDocument *document ) /* Input: content - The CDATA to write to file document - The document to where content appears in Output: file - The CDATA was written to this file Returns: TRUE on succes, otherwise FALSE. Description: This function writes the contents of CDATA to file. */ { fprintf (file, "", content->data.string); return (TRUE); } Boolean XmlWriteComment ( FILE *file, XmlContent *content, XmlDocument *document ) /* Input: content - The comment to write to file document - The document to where content appears in Output: file - The comment was written to this file Returns: TRUE on succes, otherwise FALSE. Description: This function writes the contents of comment to file. */ { fprintf (file, "", content->data.string); return (TRUE); } Boolean XmlWriteString ( FILE *file, XmlContent *content, XmlDocument *document ) /* Input: content - The string to write to file document - The document to where content appears in Output: file - The string was written to this file Returns: TRUE on succes, otherwise FALSE. Description: This function writes the contents of string to file. */ { int count, string_len; char *alias; string_len = strlen(content->data.string); for (count = 0; count < string_len; count++) { alias = get_special_char(content->data.string[count]); /* If we do not have to replace the character by an alias */ if (alias == NULL) { putc (content->data.string[count], file); } else { /* Replace the character by an alias */ fprintf (file, "&%s", alias); } if (content->data.string[count] == '\n' && count+1 < string_len) { indent (file, level); } } return (TRUE); } Boolean XmlWriteUnknown ( FILE *file, XmlContent *content, XmlDocument *document ) /* Input: - Output: - Returns: TRUE Description: - */ { return (TRUE); } Boolean XmlWriteElement ( FILE *file, XmlContent *content, XmlDocument *document ) /* Input: content - The element to write to file document - The document to where content appears in Output: file - The element was written to this file Returns: TRUE on succes, otherwise FALSE. Description: This function writes the contents of element to file. */ { XmlAttribute *attribute; XmlContentElement *element; char attrval_surr; element = &(content->data.element); fprintf (file, "<%s", element->type->type); for (attribute = element->attributes->head; attribute != NULL; attribute = attribute->next) { /* Print the name of the attribute */ fprintf (file, " %s=", attribute->name->name); /*** Decide what character will surround the value of the attribute : ***/ if (strchr(attribute->value, '"')) { if (strchr(attribute->value, '\'')) { XmlSetErrorMsg ("Attribute value contains both \" and ' " "character, which is not allowed."); return (FALSE); } attrval_surr = '\''; } else { attrval_surr = '"'; } /* Print the value of the attribute */ fprintf (file, "%c%s%c", attrval_surr, attribute->value, attrval_surr); } if (element->is_empty) { fputs (" />", file); } else { putc ('>', file); level++; /* If the element contains only 1 XmlContent which is a string */ if (element->contents->num_elements == 1 && element->contents->head->type == XmlCType_String) { XmlWriteString (file, element->contents->head, document); } else { putc ('\n', file); if (!XmlWriteContentList(file, element->contents, document)) { return (FALSE); } indent (file, level-1); } level--; fprintf (file, "", element->type->type); } return (TRUE); } Boolean XmlWriteContentList ( FILE *file, XmlContentList *content_list, XmlDocument *document ) /* Input: content_list - The content list to write to file document - The document to where content_list appears in Output: file - The contents where written to this file Returns: TRUE on succes, otherwise FALSE. Description: This function writes the contents of content_list to file. */ { XmlContent *content; Boolean (*write_content[XmlNumCType])(FILE *, XmlContent *, XmlDocument *) = { [XmlCType_CDATA] = XmlWriteCDATA, [XmlCType_Comment] = XmlWriteComment, [XmlCType_Element] = XmlWriteElement, [XmlCType_String] = XmlWriteString, [XmlCType_Unknown] = XmlWriteUnknown }; for (content = content_list->head; content != NULL; content = content->next) { indent (file, level); /* If writing the content failed */ if (!(*write_content[content->type])(file, content, document)) { return (FALSE); } putc ('\n', file); } return (TRUE); } Boolean XmlWriteDocument ( XmlDocument *document, char *file_name ) /* Input: document - The document to write file_name - The name of the file to write to Output: - Returns: TRUE on succes, otherwise FALSE. Description: This function writes document to the file named file_name. If it fails to write the file an error message describing why it failed can be retrieved by calling XmlGetErrorMsg(). */ { FILE *file; Boolean return_val; file = fopen(file_name, "w"); if (file == NULL) { XmlSetErrorMsg ("Could not open the file for writing."); return (FALSE); } level = 0; return_val = XmlWriteContentList (file, &(document->contents), document); fclose (file); return (return_val); } keytouch-editor-3.2.0-beta/pixmaps/0000755000175000017500000000000010414755652016610 5ustar marvinmarvinkeytouch-editor-3.2.0-beta/pixmaps/logo.png0000644000175000017500000006033010405050610020236 0ustar marvinmarvin‰PNG  IHDRe[«‚”ÒbKGDÿÿÿ ½§“ pHYs  šœtIMEÖ 3÷R‚ÇtEXtCommentCreated with The GIMPïd%n IDATx^ìw˜$Iyæ‘™•åÚû™žžîñ;;kp»¬X€“–=²Ñw7¡“gn*Õ½LÝ ìɼ!õƒ…šû¥T¤7•(L ÷ÿëFelçÎÛç8Îþ0 LÓü#­u€Rêl†,¥œ5 ãàðððÑʺPœ9sæÇ]×WJýVWi­R"¥D)å)¥¾¨µþˆa÷ Ø È‹ÂÑÓg¬P©M†ù±rÝ¥æ‡x¡&Є„)JaŠ”©È&­ õK“¦ºmj¸÷l§r/“òe\F¦§§?P¯×ÓÀRÊ+…Zq ¸Ë²¬9˲þïààà‘ʉqæÌ™_¬ÕjÏB\¯µžÐZ·ÉA)åæi~dddä‹•ÕŽŽžœ¬{þ[j~øŸknqB´@H‰©$¶eM˜Ëé„ù唥^¿}¸f£2×ÂÙ³g?Y­V¯ð}ÿ@†@d Æ×bJ©P)u¯išÿ4<<üG¹)ÌÎÎöº®ûîz½þtÏóƒ ê[ëVJ¡”Š_‡†aÜeÆG‡††þjƒâ/Ó3³‰šë}h¹\»±TwÆ*n@=и¡ ЂP´«Úf)EÂØ–"›0I›ê[Ã]ɯ÷dÞØ^þeR¾ŒËh`vvö™Õjõ_ªÕªêôà70Ë •RÃ[·nÍmP$ÓÓÓ¯)•Jéyžè`Ù5÷¦i†ÉdòÝCCC¯Ú È&ÎÎÎ>9·¸c±âÈ’RÀG"JEš’¤,EWÂd8›¯Þ>¢6*·Ž?~O¥R¹Æó<Â0DѼ7­×o†ahÓ4ŽŽîÚ¨ìpüøq¿T*)×u‰ïa<ÒhíÖhÃW‡††þÓU\>zŸ[*ªåªKÙ p |¥–rô;J’0¶¡HšŠl 7ièþ”õÉmƒ=/k-?&å·Õ{ ?zh¿ƒÛ€3ô#‚­À“[ÞO·¯qî÷ §Nzv­Vû|¥R!‚U¤ÓJ<ñkÃ0°mûæiþöààà\{yóóóµZí®¥¥¥þ˜L:•׺7 ƒD"q¯RêEÃÃÃÇ;µ`v~¡§T­ýíÙÜò æ‹5 nH%W |¡P¹2lNš’Œ©è± ÓÖ©„!oºfrôÐZå·âÈ‘#Yß÷ß[­VÖu]b ¹ÝB]ƒQJ}Fñб±±¥ ª:GŽÙéûþçËåòÞÖº[;ƒö­CÃ0>$„ø­ááá nC+î{ðЄ„ÿ˜/U¿Tu(»U_ã„àjI€$’P* ©$R) ©0¨ƒL4~´¥è² úS&=Iëϧ†{~;®Çhìÿ¾­þE ºý\ ~†ÍŽ­žÌê{{ ÑýùÁ“r¹Ü§ŠÅ"¾ï+–Xl™ÅÐZ£µŽ âg|ßÿ*ðáö2———_Q*•zêõz“LbÒ0 !¢G,ÞÇeW[–õkù|þ÷ûúú¼ör– ; •ê Î-•Xªù”|¨…‰/4Zj„40˜!i„àk@01’I|êЙù›÷nê¨i¶Bññr¹üìZ­Fëè!&½ø}üY<ß4M€¬uB'?~¼×qœO‹Å½qÝ­[§ßf (àå¦ižÞ¼ÑÉkáÁC‡u×ýdn¹üø|¹FÑñ©øÑèÄÑ_Kü!k¡Aj¤R¨†Ñl†ËPxZhE¨AG¿JŠ7ç‘òe\Æ,þK©TJÕëõU~ŒØj‚¥a¢µÆu][ñ·§OŸþçmÛ¶-Äç;vì)•Jå÷+•Šl%y­5†at$°˜ì£SÅo…aø.àôy'¾ïÝ>·X`¹âPp4åêZâƒ@€– ”À#RöbB”€„W¥,ã `CR. Ï.—Ëxž·êÞ´bkÇÒ Bˆççr¹— |jÝ[ „Ø[,W*•šuJÈ!RÊ7q¤l™fé좙/–Y®y”½€ªŽ8J aƒQ 2hü_C ‰™Èò•L‡Îæê{· Øp™”/ãGÓÓÓ7.//¿´^¯ãº.°òàÃjÂQJRÊæq×uU6›½˜ŒÏ›™™¹QJ)ÇY5Üo/¯õuüyƒø¤eYß¶Ó†Û¾sÇ3sù‚Q¨Ö)Õ<Êž¦JjZâ "RV Â)kßUL¡)‚Çû ŒˆïºçÞƒåbz½Þ´TcÙâIÇqþtiiéÓ½½½îFç/..Žœ>}úÛ¥RiUÝ­B§ú×ë„rvvöΑ‘‘'¬yÒxèÐ#×ÏÎ/˜ËÅ2ÅJrÃJ®à„²9B £­4"$²”51‘1€$ú=”„„ë~b:WøÐø@÷/^ R~«5÷ÑY3¼ïp|-¬¥=¶—s!úízúæzrÃ…ê¢Ómï_Ì…_+naõu>V÷`£s/kµézÖ–ŠÖjË…\ßayy9Y©TºÇiZ°í¤cƒƒƒ Â0Äó"U!‘HP¯×··–Y*•þ8‘HЪ%Ç$CAOOår¹iy{¾ešø¾ã8tÀüBî}¾‘¤Zw¨º5j¡¤ŽÄH ©%=ÝÝÔêu/D†Ð$¤¢êúk.§æß21Üÿ{ê9uêÔó¿üÝûÇ·e \×mÞ›X‚i‡ištuuQ,ÏûLïû®ë¾øÄy'´aiiéfffð}ß÷Wiɱ•ÜNÊRJR©žçu‰4}O.—{ÂÀÀÀç°ªµÚ›–K%ÊÕ•Æ}¯úP "-Ù_„+¤€P C0 ôwáºN£ÓDšŠ’‘•\SPq%ËUç’YÊOfõ$Ù-¬OJj75FÍSTïÙ@GRþÊí÷^õð\¡gx¢›x’MA†«:˜XÚI§ÓLLLpðàÁ&‰ú¾Ïüü5·H_6Ý”ÚïG'hMdÆçT«UªÕjÓÒît=íð}ÿùAì«×ëØ¶Ý¼wp~gÙŠ¸Î†^óxn¹D©T¢V«³Ë1:2Òñû0¿³æs¹ç›£Z­2Ò?D¾âà!ñ|ðCßГ}¡ etÿEƒ”U£­Ë¥2–¡HŠ ñ- Aà!ž\ùb-t"ÒÛÛFCЭ\:+ûû‰­ŽÝüe‡ãí¸žï½ÕÚ©½ðèF)íºzŒÍ^ÿÅêð›B*•jNðÅÄQ«Õšz±Öº©©†¡&™J’J¥°,‹®®.‚ `aaýû÷7%¡˜*• –e« %&y?0”ãºØv‚ºã`'ȵëÐNÝ!ð]ªå2B˜ˆD(‰¦Žˆf’tDÊѦY(<—Àwɘ‘¿¬D£Ö™æÈØøn­ÙÅ„·½SÓz,¾oŽã¬©wBÔjµF'å­ºo­òÅfÊÒZS.—š#›R¹ÂÈ&¾ÃqÝ„â¹ÕZR©L03ƒ•î"@øÑh$Њ ¡'‡Q :þ54B€‘¬Ư¥F7:Ï0hBËu],)oåÂ,âŸaó6k‘òm¬¶˜^ÇæIã’[Z “äp›Ã-D„ô½ls{{_ÏæôBp†Íý^·ý­Eî—ýýý9×u§ …¸ëº,//³¼¼L*•¢«««©'‡aH2™ÄlXb¶m7‰!N344ô×q™Édò;ÅbñºééiFFFñ|ßóH&“¤Óé&Ùz~´H¥¯¯;‘À¶m’¶Ý´®GGG¯koo*i£Ã€Ó§NîFÙ´çá‚@š#>eÏ'Ôš„ŒvgP‹.S²e KBƶڋobwš¹%Ÿ|>Ïüâ]Ý=t¥ÍÎ"Ôšv~‹ Õu]z{{ ‚€T*Åàà Zëu½#bÄ’ÅÒò2s¹<ÝC vg0 ÓØ˜ÜãN£áM>·@†Ø¶Íø–±Mµ!F†èP‹À|r©DJšT1ÐÒ@‡ Ñh$ZF®nÑMÑ+¢áqÑè%uc"–P@yɈP‚QBcH±&)of!ÅZ3ók=pñ úÅZ€·µ½2Ñuoô w"·ïµ5ÞÞötltOkl¶Ô½ûðáÃ_¶mûWÇ!‘HP©¬è»£££!H$†±jq‰Ö:&ž×¶–¹k×®ß.•J_?xð 4ä€D"ã8tuua¦i`hïû†Ñ$äØRoÇ O¾ž3çæ° ÉRnLä–*,ûm%I¥3èÆr_¤BØÒ7@OÊ¢ËJÑ“4IHMÊ’¤mk•^ÝŠçÞø¾vû]d2I:ÂÙb]cC¤Ì†ýÝhc*Lb> ‚HêH¥RŒŒŒ†!½½½ÍÎm#(¥¾’ÉdŽeÒé†iqrnR©Looƒ])L½"'µË!a6½/²Ù,Ùl–žžnB Ý]]ÀŠëáf`†VJ¹†aXB‡HBNḬ̈@Šñž4¡a"T!dS²Ð ë@ˆ–- ŠQF^²aMK$’°”Ä65IùÑZgëMÂÄØÅZ·‘z;¡^h™­^"ß+<æ$s‰ñÃÖÞG…d2ù›ƒƒƒ/v]·; CÆÆÆ˜mº¾Åºs¼ü:¾Ç}†a¬ò(°,ë[†a¼÷†nøµcÇŽ‘N§9sæ ¥R‰Ø.Ö>¥”ÍrcÂh,0¹òü–ÂĶmWy~Pºîš«øêmwâUËÔJËÔ‰'k„¾Çp?Ùt Ã0°Lƒ”›„ IIȘ’þ´ÍÈ@ß§;Õ024ø§7>᪗ÌÍÎ^164À#gæ˜Í)pkd3‘µo'“x¾Oàû¤’6²ÁF±®l–e¡”BqZF 8ÖÅÖ­[¼óÎ;ç*•ÊŽD"”’‡Oã!¢ºÓ©æH#Ñ]¤R)ªÕ*B<ÏkNL¦R)F‡‡¢+›EJYµm{3'RÊJ±Tzí¶mÛþúì¹s¤2YYÇræææHf»Hfº†…lXġքAˆ25R dØØt´WZ u€ Jk BL¡1%è0ü´¡äg.V¾hÅëùÞYVIdu¾ ÷J¸¨—zX~?¤¯=wÜqÇBˆÇ !èíím“c«8&g)%¦i’J¥ò–eýÒž={æ[Ë;pà@püøñƒRJHÔj5 Ã`ii©iÇq»fjY™Læp*•j®lÅèÈpùÈÑã·J¥ëŸúÄkÈWêd³YÏ,PplíÑg Jc(%5I’Vš¬YKÒŸ±ñƒàŠNåǘœœt|ðÁoV+•+vNMF’€•@É4󹆔ø «´·»›l&ƒiš€Ù츄±ÜóõÑÑÑúzuÆÈf³wìÚµë†ÙÙY†˜[XÀ©Up ï:M‹Û²,\×¥Z­"¥Ä¶m‚ ˆã’4-i;‘@)…eYõ_¯îVŒ éûx°¾el”ëŸt¹|žT¹ÊéùEN+6ƒ]MwWW¶SHP†a‚ÄJ%1T´ªÏÐÑbS bŠKh R¦$›´¼±^ïR’rL—ÔeiÜΊ>Û:!ÔÞ¶¶ç1[„p?üH&“ÏûD>Ÿ¿±\.7.ÄÄÒx°I&“ôöö"¥üÅ={ö|¡SYSSSýðÔRŸŸG)ÕÖÇäÞJò1‘d³ÙBˆ­"úVÔúsú{{>â¹ÞMZk¤$-ƒbÝÃÀ¶2&e’† c zƒ™ý™äç²é乵ʱÿþWÞ{ソV«Õ˜Ú>A¼BÑ2 rùE4`HI*i7å„ÖIÀØ5­áÃü ë×¶‚={ö¼îî»ï~m¹\ÆqöîÚI¡X"iÛxžK¡PhxÂDB&“¡¿¿¿Ùᙦ¹Jó;;˲^·^½`'ßN$¬R)ûJ»š Qwêíbûp?¹R SX¡Oqi”I(%ZF#¤LeIL‹K„$„&!ÁV‚”¡ÈÚ–ÎØ‰÷ÁÚ‹G6K¬íúp™L‚`·ÖšR©Ôì à»»­5–ea+4ÖÞ)$ ÒéôYÛ¶ïX§ºu±ßÞ›ï¾ï ®;¾ç!PCJAÝט¡€L¡CŠ5‡0ôÚ&]¦ )#ÉVT2S‘µ º“ ú2Éû‡ûûÞ×ÿãµû˜lÞo$’ :-ù}1½8-ylÖº¾˜kY í×Ò¾4y=´·g½X­èäÝ_Kû=‡Íß×vßßÖk9Í¥ó ^ëÿàBî\àïyäÈ‘/9Žó¬Ö€è²±Ê+~Xã­R©púôifff¾¾¼¼ü¬7¾ñµµÊý»¿û»—]wÝu7V*•WÆ CZ%¥±KÝÁƒÏõ÷÷¶»»ûwnºé¦UÁ Μ9sƒã8WAk°¯´žó×ïÿà‹vîÞûÌîÁa”RO–R^-Zßþ/w>tïÝ÷?DñÌÑÏüÛ‡ßõåÅ|Þž[È==—Ëm³íä»+Õ~à#„IJL²™ õºóë]ÙÌw÷ïÝ}‡zq?77G©TjJñµÇd[ý===‡,Ëú?SSSߨìµpâĉµZíÓsss;–––V3¬ü®qÝñÄb"‘hºöõõU,ËzÖøøø77¨n]?yê5ó o?7;ÇâÒ2ÅR™JµFÍp¯#—rÝ%ôH¥’$¬¦i0-lË$i[¤íÝ)›ÞlšîÌÉDâ%{¦¶뺔šòfñXY‹?,x´±6Â¥¸¯·óØ´í{‚£GN—J¥­±%«ÄCÜø}*•b÷îÝ„aø´z½~èïTî©S§žZ«Õ>P¯×m)%µZm•E&¥l ­CCC<íiO=}úô+ï»ï¾Ÿi/së֭߾ݩ€÷~ð# ;÷HÂLÎkx!„(©®ß¿sûõ“[Gùü][áÙ}CÕþ¾¾AàK‡û%%žï;aÑÝ•eòÀþ 3¤Ä8—˳\söºAÈéé³=~œÅÜŸúôçyã^ÇØØgÏž¥5‚Ðj‡ÝÝÝoÕZÿÑÖ­[ÏNt˜œœ¼ÿäɓ߹sç·Ïœ9sE2™¤R©Ð£ºUjèÆ¤R)2™ ‰Dâ¶mcË–-ù ªÚ¾ïÿUwWW µ~‡ht–ibÕj¸^Mò!"ßo©R! ÃX¦"a)ì„AÚ6Ȧ,z³IFú»C„xúž©m«äªÇ’”7k¹ýÿŽi. ѵ.¢ˆ-ÐKö…9?Èçó*ŸÏ¸P(l£½Å¤Ùi¡AL¢ñgûöí#“Éô}þóŸ¿ú9ÏyÎ}­çžò­ÞÑ-KuŸª_Çiæ|“ $J…Jb›6/}êãRƒ?SÊí;¼\©=óŽ?ûÍÓ»wîØ4ù¶âßÿå'ýÒ5£ß)û’‡Ï,àš@ƒNõ0uÕØ£$…¥%Þÿ™/SZZúh¹TøÀkùe·Öjµ_ñ<ï%†a||Ë–-³Q]›Å=÷Ü“˜}òw¿û]LÓüÑÑÑõôô¼*îX-Ëjv²­Ú|2™œ³mûážžžÏnݺõ3ëÕq!ؽs‡ÞyìÄÉ-¦a¾pÛm·ý¥”ò5õz]ÄåÆj\VëëÖ­îz>r”+¯ØKwWWÉ4Í]£££çåòx߇>–Ù¾£7_õ(ºQðôº–xH|ZJ„lL¤)­ü2T4soIº-əӧ_ù¼§t*-Üü?ß•û›®ï¯y/Œâ7€Fyæ$²Q¯ÙÈ/—2)SVËÁ©Cw>ãæŸ|ÆÕµÌÌÌ|tqqñf¥Tw†M&n•‰â{mš&žç1;;[ÏårÅç>÷¹Ãë•}©1}æ¬],•»‰Ä+þü=|KA›X™n0-†ììâWï$•L‘I%ÿ©\­þú–Ñgp` °^Ùµ¥|—ñ˜Ã¶íÏ …UÑÛ-Y!¦iÒ××G>ŸoÙ)Uªd²Y|߆¬ÂE IDATalŸŸŸW<ðÀOh­_ë8퓆­ˆËn…Öš„iàx>ßùî]<í)7d ø8Ï::|ìøô‰s¹Þ¹b•B= ìkª N£×ÄëqQa´Á £ôN¡Žb7Ÿ.-ó„]ÛûŸËÝ=5:ð¸ö:Úñö÷¼âŽ3K_ÅÍ×÷ç*E'JZ­s!ÑB£¥B*¢Å !8¡ÆÕŠ®TV=î)?>”µŒë€‹"å|ä#[K¥Ò¿œýÔ¯þÇ×n*×ßÛ¶m¿ú³/¤·+¬t ¹ŠK¾æ1]u(ä–°õ\×È@ßÞk¾±Añ—Iù2~øQ¯×ÏËRÑúàBD”±ÿjÍ•`®ëEËpߤ”¯ñ}ÿ­¥R©YV{\äv!èïïo.jRR¯×éÉfXÌ», ¤R©ƒ­ß{ã›þ× 9z¢§ª¥šKÙ (‚š8:Š»¢¨è”Z4ó¼XZsÿñiª¥"Ý7\»õôÜâOnî_sh `(õŠ=åq¹b…åºGÉÓÔ‚(¨‡ŒrÍ5: T¦®^é ‚ äÜì<{LJÞd&7¶klàÿ¬WçZxÏ{ÞÓ«”úľ}ûöÇ#—­Öq«o7¬LÖÆÛäädÊó¼Wåóùw>VÄ|êÔ©ë<Ï{y½^õ“msT4WÆ[·%éK&‘i”D ùÌBµ~c.—{ñÀÀÀçשæ2)_Æ?‚ hn1‘çh­VãìÙ³Í×µZ ÏóÈdÒ„a¢²R©d…Ò÷}\×mêÃëéÔRJFFF¨T*8ŽCµV£Z­Q-¹æª+I$xžwž´°ïŠý7j)3•²CÕñ¨¹šz(¨‡Gh!A…£AŠZG´a*º{z¸ïèq~âñ‹5÷ t°Èc<|øÈÞÓgϽ~©æRpꔜ€J#¶ƒÄ2Êó×è d PF´<Ø! ÐÌ-—øú·oã ¿ô’_)/æó‡&&&†âŽ,¾Ï±LÔªßwêããavUjµ7ö÷—€ww<ñ"0333S(’®ëöı5ZÛÚ._)¥šs±uß“´,Ïó>6??ÿ7J©·ô÷÷wœ˜½”¤ß±Ö±\§c—q—±“rü>~ [7)åª%ºqÖ‘0 ›a'³Ù,¦iþkìÅ“r+A´ãž{îiv±X¤Z­a'S()›QàZñ­oß–=uff¬îxÔ<Çóq|D)†T#“ˆˆ‚ÖkÁþí#è¦gç‘h ¹Zùå}}}Ô\Ç7Fæ— ‰¡Þû-¸ïèôÏåò™Þî,•ºKÕÕT¶‹ÄC5³— ¤ 0r ¤€d¦‹e7äî‡ÙùÐôÜ[®î˜ZªN:µåƒúðWöîÙ3GÏkõýŽïulç-iÝk`fnÁ¾ïþ‡þznnîÃÃÃr pìØ±¡r¹üÙ/|ñK£{vïjFòƒÕ UÚ5ï¸í­Š”RY­õ«µÖÛ~kppðT{—’”7‹ËD}—¶m7 1vu‹-­˜ŒÃ0Ê"¥ÄuÝæòàd2Ù  S(N§ÓA½^GH…eFa¼µ[ní„ïy>ŽãRod"‰åŒv2_Z^> µ~‰ãyxžëûø¾Æ ¾–xDé‚‚†e*¥ _\FI ?ð…f±V¥\,"¤bïŽí¸A€©ä/»žÿv ¹¡ç å;Ôê5×§îEADÊ OD¡~C%¢P“²‰BJœ DQ&f?„t:ÃýÇNqÝ•{ž1=Ÿß:>Ô·©Ø2‡~iÉ»»û¼lÙí¿]ŒV"n• 5ôööqïCGøÚ­ßþôâââMýýýïÁfqôèÑĹsç>zâĉë'¶£µ¦^_YÞ®ww’ÌÚ5:xSkýÓ†alËår¿>00pwk½çÅ.-—É÷2cÔëõ_VJ5ÚB©Ä¹\ž¥R·‘ÏÎq ……B¡é¦”Íf›ìÃ0ŒÏ{["‘(Ývç=?;;?ß”5â}¼Åvliû¾ß$— ÐzeèÚ*©Ä˜9wŽB±@àû„¾Oè~£ì ¢˜Aø>~àsú\žéÙ‚  æ¸Ì/ȋԽ( v¥Ê8^°b^¶áÛÇç);.u×Ãu}×Çñ|Üxó}\?hîý äúÉ~~ìÀ.`v¹H"“e 7ŸXuý¡µêmÅ©S§¶ä*îÿLX êõ:ñdªïûÍüƒí÷¶uß.WÅûî´ÍäÔ$>üÈ”ïû¿¼Q;6cwÜqÇÊf³!Vµµ½­í]«í¯}ßRïÎår{[+}¬Iù2.ã1‡mÛG“ÉäBlý EÎ;ÇÌÜs‹K͇%¶ºbK«ÕÊ=uêÙl¶ÍfO éþîl®·«‹ï>EÅñšS¯7~=Ï£R©P*•Ëë()I%S ôw$d%%¾ç7,û ÚBøè hì}tØö:ôñ\Ïuq—šã4އDÑÎËìÜüÊ5|ÏÅó|¼6BñVí¼ Àõ=¾úðYþõÎñ?²ÒƒÙÅ<år™jµÊÞÝ;q<Ÿº»qbT€£'N^vu§VÜz„ÜJj‰D¢ù¶C®Ý5A*Û­þã›·þX.—ݨ-káÌ™3oxßûÞ·%‘HH¬tñïßþЩÍk‘qbþÃÖº[Iù瀯Ë€Þ ô°“Àg€2°H”Á·›ÎhÿiÝþyø]à^¢ 0ÕÆë7&«· x/0lî¿âÒb€µž‚^L-N)p7ð‚¶stÛVþ hµ–4ÑýyLqÅWÜšÍfÿ9™LFq,“j¹L>7Ïòò2ÕZ4äL§Ó$“ÉæƒÑ*uôööÒ××wÇÞ½{? pí5W3<<Äôô4÷œ^ æú ‰CJúþŠ^, Ã0ÊÝ—ÍÒßHñÔ"¥|«µÍ󮂱,ƒGŽc®TG†!" :D†2ôa€}DàCè#‚øÔj5|×Ab’1 $Ä”‚„ÑÙP>uöÜõžëBà>ac¿jó[¬ô¹Tªu*µZtß‚ÇsYXZf±PD A„QÒÏ`µ¤°¬dê_úÎ}̪MRÞÈòŒ_LNN’Íf;ã8<ý)×31>~½ïûS4¥#Ξ=û¤xà¿9ŽC:nZÇ­[;1··óBˆ9‚çÎÏÏÿ|\¿$’>|xÁZÀ¢Ud·±BÌýÀ7€çi xEãû‹ðUà-ÀÕ@²±] üÑŒr§|2þ+‘»ÑšÃ¶Ç5àO7:éQà À}D¤øð”uÎþpãâˆp¸•ˆØ |Š(¨Ð³ÛνÆ€#úßiæªû^"Nÿ÷áááz*•bËè({wï$™° 0ácnÕ*㉿ÑÑQR©ÔÏÅåõööÞÚ××÷ñ<ãFò¹ÅšC.—c~~ž\.G¡P`i)ŠÜk‹‰D¢õAk²iš(¥~¥µ½CCCw~ðÝÛÇ©.ÌP«”P„¨0@éÆú¨ÐG†>*ðqëUŠÅ~½Žö=z&©;GHZ KBÝõþÜPê>Fè¢BÂ0²ÆÃ a•„aDÖ:ôW¬ó–- âĦ5ªµ¾ç¡uHœüs3PRýêb=¤ê¬–,Ö"æV¢s‡C‡‘Ïçñ}¹•J%Nœ8ÁÝ÷ÞËÈÐ`Ò÷ýóOu@±X>NçòzV}ë{Ã0سgÃÃÃh­×%fß÷Ó¾ïÿ:¬2DDøYV†¬w5ŽÁÊÐõ¹ýî ²Ì¾Óx±xicÿJ"«¬D$‘|øÆg/ëð½_þƒ¨Ííø"ðG-$ŽxX“&"¼"™ý+)¸™H¢y&Ñ=x¤ñýcD£8_¾è>JÔöe"i%ÙøL?MDbE"Y¦2À>"ùh™ÈúÜFTv'<ˆ8Ï5öÏ_ã¼ ˆbu¼ó%™·¯9ï«òýñèi"›Í>«··÷wFFFÜîîî8(=±6hÛ6¶m“N§ééé!NÿN&“yÞ¾}ûÊíeŽŽ¾¥»»ûõ““ÛÙ26Æøø8“““d2™hÉs#]+ÊåÜ ý“Bˆß:/bÚU|¡¯·§°wÇvÜJ ¯VA…>Ë‹9ŠKy*…ej¥¦öI`!½¶Ùxb‹[Aʤ-c&c'þ½½žÉdòWö w³¥7ËüÜ,…å%ð½FθX6‰¤“X>‘a€|ÜzZµÊÜÂ"ô±„¦Ç¶ØÚ߇!4–$ŒÍMQ›G{.Âï¬!oDÔñg1±ÅDY.—)—Ëäóù¸Ó|âFmiGµZMù¾ÿ<øPS3¯×ëëêÈÚ·«X,6Gc›°˜Ÿ–Ëåú ¢!(D$»¶5ö“}{lÒopñØÕØ©ÃgŸkìwwøl½º?EdÅÆ–þOYÿ±«Ì_YØ»‰,ÒO9"‚È2‘|pš¨Sø*Qçô>¢N¬ï *ë "ü#À°BÀ7ÛŸ"Ò`ßE¤Ç¶¢Ì ¹™Dí>FDäíH#À¡ÆûCDr‚ l*»D ²DeÝßr,I$ ¹ÀÃDÄv†¨A¤%¿•HFù¾arròðg?üðßg³Ù§‡aøJ¥‚ïGÆcœ Ã4Íß ‚à–}ûö­ë6µgÏžwŸgË–- †aÓ­®ÝW5NíÔÝÝRêÇ&''WYÉ1¦¶OüûÑã'JËÅb÷U{v⠃嚋òëä+ElÏ!vaw¥1 ‹loCIR …-B’*$¥4CÐe t¥ç&·Ž®«»¿¯wæß¾ÓgÎòÍ;î¦î—f¾TÁ@ãø>AÂL L Œ¬_Çs(Vë 5¶ôõ0šF;uvŒ‚´eдתzvm'õí{±X\\$›Í6¥ž0 Wù&ožçEÑÚKâ}ßGkÙè{í¨Õj,,,P.—@G‰ Ãhº\Æ¿uÜÎXkwy„h•߉'ÎûßhEnQæò¸³é”)%”RCA ÀƒDúñ•×ëáÁÝÈ꥜Oí|zGhV´äÖ+9 \E$´ÇbŽe“G¸0€&"´×ÿ¹ñY–ˆ¸ÚšV«&&:ð“Àï íïÞD4!ÖŠ I¶Z_Lj&Ãb,7ö›™ñ‰ˆù%D!?KD~­ˆIØn¼NµoÅ+YY‚úYΗ9ŠDÔ5¬dG‰5â$ç—ÙJЗ§gæþh¾P–‹¥êsÝ ¼"Ží+„Àðn ùÚ·¾ýçøûÏÏ|ê ?12pÏFe^ ìØ±ã-À[<ø»¾ï?ßuÝëZÃyÆút†œN§Ú»wï…L~?c ¯÷“ÀST¡„e Ó“IQq|,;‰a)¥¦åÝK%$Ù¤A_:AoÚþr†?»Q%žç½´¯§ç`©Tf÷ÄV–j.¶‚…Ùs”|À´H¸.Úó°U/¶m3˜²È‚ÞLŠþ¤I&R“T‚”!ÉXÆb:a~y£ºcôvwó„=ÛQ„õ*³óódÓiº»»›ñI Zx³b­7–¤ÑÊˤmÓÛÛK6›%‚O®YÀˆµ_­5µZD"ïûç‘r«•£µ³èô¾11ǤÜ: mé•K¤¿¾‰HŸ=GdÅMM°ý2QŒÝÏ‘ò»€—Mî<®ñ~³Èyqü8‘ ^|eŸ$"åwöûç°Rþ£I-óI"+µBdõÅQþËDd;ÌŠ,ÐרbÄÿ§<—ˆ$_JTÖª3¬”9EÔÉÐxÝ1dã:HI// ÒÊÿ‘h¢/KÔÑ´¢œ%’`îvu,R½‡õãßj¢ëúMÎOYõ\CÌåòÏÈ—*ï˜Î-ï+Ö=ª^H=Ð@ˆ!PB`)Éð¶o8yì(o}ïùÌ|î¶ ¼j£ò/®ºêª?9uêÔÊårw­á&QÐõL&ƒeY'&&&6çÖÀwíÙ;ï¹÷ã[ÆZVnt¹P"™0qý J„ª(‰R¦aLD)…z2Izº µþÙ'\¹wÝ$®1lÛ~ÄqÝwööt¿jß®)r…U/䊉-úé/^™I%_ðüŸzúºÄô¾÷½o|`` Ë–-7är¹wÅ™mÛtuu1??m>ŸG)uÿË^ö²5‰ubbb¸ €òá ×^“Æ=vÏ|.7V*•‡ªu×4 ¢ é–e’¶m2é乡¾Þ¹];&¯Ý¨ìV윚tóKË âÙžçm×€Q©¡dJlåÌBO R)‹þ”…©¢°¦)H4SÒ•Pô$-²©GvnߺjEÚFBÍf³‹Åb±?N322ÂÌÌ ‹ù|,;P,•A*LË"‘ððÒI²©$B<Ï£X,6‰-îûûû›)¡ Ã8—H$Ö[Ü †aÐ××GOOŽãP¯;J\×¥«»)UÓÅr=í{3Vs|,Ö¨&)CôÀ}ŽÈ“áÉD“6>Ñðý¬õ"‘TñvàDÚègˆ2kÄÃòð"þ  —Ó!òrxð³D8BDLo§3n„ ‘~{Q‡ÐŠß$)"òüC·×8÷cDaMgï6¼šÈÚ˜•2sׂ~ø¢ë¾Hˆ»ä¿!ºï1)¿‰¨ƒ)Md^LÖ3DãÛˆ¬eM4ùú,:ëè¡=Öî·hñ¹~øØÉ—”ªõO̪QI7ʺá„AˆD B¢dˆ!%– ° “¡ñI eÏäžvý=wòÜÂOoìØqÜqÇèºî³µÖW÷ôôÐÕ9²Äd/„ÀuÝ{*• 333ñªW¿úÁw¾ãìTÖc‰Ý;w\{âÔégRÅë׳L뿺žg!°,‹ZÝy[*™Èg3™ÿ˜Ú>±f®¿õÐ×ÛsfúÌÙ?QJ¾GJ‰¡–±ªulËd¤¿šç#M„B*‰2$–)±MƒTB‘Išôelz3ɯ£Ã—rèïïŸs]÷½ÙlöÔj5£g¬»ž9GÍq0MÓ²°íÈãAFV5å˲èíí]EjñdšRê3ÃÃÛҸ[û&OMM!¥Ä²,fff˜Ï-’¯ºQ2Öl Û<ßÉ(¶‚;kµ”cÉ+ WÇR¨ý›™ä»ŒËxLpìÔôMK¥Êߟ͗²ùZ”u£âCM‹F E(¢uBH”R`Jm´[çÞûîå¦'\EX^"aˆÔ/=ÿ¦ód›éé黋Åâµ­CÅV+%&e!"]òôéÓ9r¤šÉd¦‡‡‡¯{ÎsžsÁ×¥ÀìܼíyÞ¶ºãÛN`(ãøèÈ𣱜‡ÓgÎüØr¡øWssó[*£ìÌžåè©$†aFšyÂ"“´éɤìë>„ú‰×\±çQy䑾r¹üïóóóWçóùU™ª+• 3³sx¾‚T:C6“f°¿Ÿžî®f 8Ykœ45ÎbÝÕÕµdÛö¾±±± • ™M‹Åïœ>}úÊ8sw©Tâ艓Ì-•ÈöôÑß“e´'ÓÔ–c÷Èx¿ÖÖésÓ4['ˆ ¶mÿÌ÷Õ§ô2~´‘[.íÏ—«ÙåªC±Pò5Õ°±LK|B¡…Fˆ%%†Sj-©”jô säÜ7ØÍ¶ÞT••‘GÍj­?²¼¼|­çy«&Žb"ŽõËØbVJ±cÇz{{SGÝ333³ü¥/}iêæ›onõ4Ùï|ç;ÇvíÚÕŸL&¯u]÷Cétš‰‰‰œâŽCGOüám÷,NdÂ<ô[¿ùIvdx¨ÎÊÜÄ%Ƕ­[¿<þ‘#G?Nç÷Wªµ]•JÇóðI@•’(ÃĶ,Ò)›l:=?<Ð771¾õªÊ_{öìÉŸ={öÁ ®Ž-ß89m6›eÐ(‹Ñ$S)ìD´@OÑ$9 ù»µ¸"þdÿ2ÀÈÈHõ¡‡z{*•z*•Âq,Ëbû¶q— V)³„¦Ë6IÛ Â0Š>(„XE°°ÚJŽ·÷·UÞ #áËÃÃÃ_¹LÊ—ñ}ƒo-VÊN4±Wõ£`ëu­qÑøHB!¢Ø¾B¢tØÈ¼éÌe×çô|k¸²ã³Tq8|zæå»·} ‚÷Öjµçűz[É·u¢Vt½xßÓÓÃîÝ»9|øžç}4ŸÏ?«¯¯¯“ŸøyxÛÛÞöæ©©©›º»»Ÿ”N§›åry@q³0oÞ¹}G¦Ïqxnñí¯ý½7=øö·üÁû7(ö1Þ];_pôø‰Áºãüz¡P$•J¾Ùu]‚0DI…eY%ß÷?˜JÚ‹Ý]]ßܺe¬]|TزeËË=: ¼>þ]ªÕ*¾ï348@oo¤ë*¥È4îc+Áµ’±išñÊÊö÷÷ß¹QÝë!NßíºîÑT*µ³uáÈÄ–Qò…"¶Ø´ÖäòKrer0öÖˆ%Šøÿ)ÞÖ"d¥–e‚ïóê«ËøÑF±R£êxÔ]Ÿš§q¢¬D“>‚P„è C"¸AˆÖ¡5õB¡¨ššPu}j®ÿRàcïúÜ×ï¬V«SEu"äVK9~@âÇ BNœ™aÿþ+H¥R«V«Ïa1^n¹å–oLLLÜhYVÓ2j}@¥”ôveééÊ2<2BòØÙ×;qªö7ŸøÇ×]w`ï3¯ºrÿ¹êx,°sjrh‘§Ïœù‡zÝiZu©dÒO$'‡͜κRþn¿oÆo[–ÕHPmº»eÒé&iµ’pLıK\6›¥»»ûBˆWoTçF˜˜˜¸çôÿkï̃#¹ê<ÿ}ïå]‡T¥*­³»%µ…Û›Ëæ\` ‚€Ü-µZêÖU*IuæõÞþ‘ùJY¥RKn·Ý`ò‘‘))+3Õêüæ/¿ï÷~¿éé§ëõúh´Š]oO72A>!\ÇF%ô¿e¤îºncr‘¢¬×ãŽþ?“ÈßM×u¡(ÊßWj ” IDATˆ=å˜óÇwv¿˜/×±\óPrÊœ„‘2 :9 N@)ÞòªK"eüè7S`B€ûæñŠ]ý`nCÙº úÒæî?2[xÓHÇëÕJãÐ$Œò&o]dfÛ¦¦Ob©PÀ›^9LÓ¬+ŠÒß××·Üîwyüñǯõ}ÿ6Ùe¹uð¦Ýyäu<µŒÇ=nMà‚]C»Þôú×=#«äL,,, ..RßýɽXäÔÊ"P¯âÝW^qêòW¿j»ƒóÏ9Åb±{ffæþR©4V*•ÂÀ“þ­ô ÃÑñÔÄÄÄÎ-NñŒ9|øðSóóó ¬­­¡\.£õ!¿¼¼Ü°]!Ðu–e!•J!—ËÁ²¬Æ$ê!Ë,Ó4‘L&ùèèh#•#Ž”cβn¯Ïý`pÉ|AƒÆœð!Ài&ô‹Gžc Žã¢^¯Áwl0ÁQ«×Ñ“4À9‡Ï9Êugܱíj­V…ë8"Õ¯-Go~!@ <Îa;ÖJe0Æ MÓ^ »‰ùùùfffnះ¢((—ËB4„7ÌYo:^kP * ÃøfÓ~ˆ‰9OÜñ£{ÅB¹Ž•º5O ìÔE0ÐDÊ >¡¡ 4Ⱦp]µzPOX>†:“íÉ"c0ôX*lŸ£R^ÃxŠÀ±íÆà^42m”å QÔâð}§æpjî4vaxp‰D¢000°¡,êÝwß}ª¯¯¯sÞ¸Y£7àv¢óÙÙYTªUŒï©v¤SÚ××·Õœ¶\ñ¿ÿác£;G®{ß‹.Ò …XF0ðD)@Pw\œ*–ðä‰9œœ[˜_š=±pÇ—>ÿ¬îÎ%óóó+++™J¥‚®®®›|ß|°*ŠrW¡P¸)‘H “É,wwwÏnu¼gÓO>™áœee嵫««MEŠäßZ.ÒŠ‘pk„,£ci¹X–…t:ýcJéÕ Ÿ8RŽ9o!áƒp"HÐ N „°` ”‘ôƒ“ á0U êûðOX`¾Ï]¯Ì%o˜V?Äz``¹\ûöí ëÔá86ûúÐ×ÓÎ9<ÏëŠ~ö¿ø…Å9ÿj2™ì“íŒ6DÜ-çŠnG÷Õ §Š%Àâœß<77÷ï½½½m µã¿êó»r¹®cùƒxÕî^°Æ©D£7¡\t•a´¯ ãýyÌ­ÕzþsrgOߎ1šKÞ*¿ñ†ë>Ô¶éêóEOOÏ ‚|y (‘p޸袋Š.?tèÐMÓÆ¤¨ÖjµF'ùwŽ>|[Óߢ¶EX¥°ÜÑÑqr``àŠÖsÆ¢sÞPB&˜ g } „s0P˜AÁY•"kÈ& 0·±º£«še€×«ðýF¥0Í‚ØÊéÓ§Q,"qÚ:uww7jZk18Žó UU? oÎèÏÛÙ2Ú“v ¥ë“ÏGi¹€ƒ‡ã%íí5 ã_À6øìþþV*ýíááa ç:à»|¬Û'òÑzMBô¦M¼ý’QíÍ`~~þzƒ Ž`¢TLÓ4÷2Æ>mÆUåry´R©4ºŸËq !DÓÛW»ÉÐv9H$>?00жlD,Ê1ç CU 1 *áPd\ø‚èØ‡x…Q¤’tj"¥3èD@ó˜T •Já‘}ctx¨!°Q·]¤  ñJJã8×SàÜçëiLQt]ÿª,Ù: }ÈE~E ³eYÐt ‹KX[+AUÕÏ`¢|âĉ‰ã“Sߤ”t©Š‚z½¾Á>á|ër˜ý&;¡¡Á.//-›Í>qÆ< N/.ÿºT«'gçð•»ãi†j5x®‹H þïÿêM®v|êèÑ£ÿ ;“É<(‹íË·¤èC9šª'=ðT*×u/1M³888xb³sÅ¢sÞH[&Ö*5ÔÇ#ð(<˜I¾1C€€Cƒ*4…ÀT(, ˜L@-žFGoº2Ç4JLSc;„ï5¥"E£Eé·nhjŽ)£Ûv‚ ³³³£™LFZM¯±’VVU(•JÍ׿9Ð4 DUà¸<Ï3ºº»»›ê„´²¸¸x°´¶ŠL&Û¶›Q»•ÖëR‹‹ Èf:‘°¬»æææ^ÑÛÛ»­"GÛáë?øÙ莾¾ëNNÿÄ­·}#»vcG?>tå[ P«Û(®¬ V­¢Z.ã/¿ôUáVK0Tåê]ƒý\{Õ{ÏYFʳallì8‚*d~~þ“¥RéC2bBt`½_é"c¬fcxétúÝÙlv[bQŽ9o$“Öw;ªµ÷Ôž 2(8AÂ/är¹‡Ñ\=ó¬ˆE9æ¼ñÒ—\\<=7˜Ñ™½”>…Ö Ùj.‡í ¸"t– %€Â4F`¨ CEŠzèîêCw>÷µ‰=㟀©©©j±X,U*•¥´F#åèµ/¤Èvtt4ÄYŠ›çyXZZj¤ÃýèG?ZXZZjl'Ê­È…ŒÌkµä QÝvÐÕUjÔnf£ÜsÏ÷n.•J»³Ù,ì0õ/%·ž¿ÕÛ–ß‹ž#‘H ŸËáĉiÌÌÌtìܹóOq–ƒ~GŽMöÿË]?˜™ru\qÉPÁQª{p8+L¡'4È¥¬Ñ]Ea€êš/`* Ëë^ñð3…ÕO2J'ú2©3Ú:¿ËÄ¢s^éëíùh¡°ü%25õEËÐß],UQuÔ].à£Pƒ®0Xº†Ž„KS~Øß“?°kdøòx###÷>ùä“wkšöA9¬ e«—ýYTL¥€K‘SUõ§š¦5*Ð)Šòœó›„M©wÛEîë8Ç j5ðîW½ 広ªÇƒÙ‚À…N¡  Þ,Êž ’ûèïÉCØUÜûè>tu¾îmuןÀÆî8ϳ³³;v 'Nœï„®ë`t½ûˆð¥”â¶Ûn{_8¨ûñ·¿ýí¿ÜâðMÄ¢ó[ÁÄøXÀ£ØRay¼\©|¹R©Œ:nPÕRa ’ÉÄ|²nèÎç=Ó±ÆÆÆ&O:5åºîR,£qi#Èí¨+sM Ãc웣££Úh¥R©¦h¶)›""ÐQZ…[Z Š¢ •J5>KAooïцÅÅEÃuݬ¦i Q>Ó`$!¤I´çææ°²²Òy-•j ¦•@¥RE¿|`\æŽ=gdy¥xé¾§Oü±0R (ÕÜF'[°$+‡OX0O(Ì;§ `‚@žàðÀÃ Èærxøø$¾ýÓûøƒ7#0xD4D2 €Ñ '£N¬à D™ oÇœ˜™Áûà¥/Ïž^^»±/›þÛ­®m»LOO'fgg¿÷ÄOìÒuù|»wï!ÁÄ" ù.ù†Ý–6U8íúå¾ï}iié–\.';Ê·%å˜,»víZp%8pàäêêj¦^¯'Z#æA.¦R©Êž={7;®Ä0ŒÇÓét¹R©$£iqr‰Z"­¾¶ÜŽF\@p-º®¯B6µh¤XÊcÈE~¯õ¡Ón; çv½Ûq`×ëPNËÃk;,Woøá‡‘ïBÝq`{€ír8¾¢dAƒæ„ED™Ìà …hšN‡û >ÀÀ£@RUqáž=8zè *ާ®Öì‘-.kÛLNNæŠÅââO~òttt ›ÍBÓ´&1n'ÈòAËùúk뛑BBL!n]XX袔þm.—k×q>å˜ß.¼ðÂÁcÇŽ]]©T^éºn^Q”wrÎÓad:oÛö·Í ˜û·FGGÜêx022òàÑ£GoM§Ó÷àq.<øà2J@@¦©xë%£Xó=<´o.üP”•²™ .œ¸uׇãñ—œ\, æ3ÏÊ[ž™™Ù»´´ô»îº –e5j!Ûözm¦VAnM§l÷ÔæÁF„Æë,‹ŸÍd22HbQŽù½a÷îÝw¸caa!áºîß»®k€®ëeEQžÌçó›'oB:¾ÀŸ¸®›•Â(#ñÖ2=Iä ®„B˜H$†qÎÀÄÄ133³!åO³uÒ ˆJ;‘fŒ$ø¹®iH§’`4ÄReÛ©]O:„ZÝ«VA4žø¾€ï xœÀ,¨“M†x¡uA…ºãàðÌ"ˆÊàù> ¯u<7Ö«Ê¥Ré²GydÏêÚFGG‘L&åÔi› r;!n¥ÍJÀõ®ëö‹Åe2™¦éì±(ÇüÞÑÝÝ]ð[í·zzzft:th‰Òµ¶¶ÖÈŽFÌòf–7w¡7ŠÖ„]˜vîÜyáæg øÇ{ì¯MÓüD­VkÜôR@|ßc¬IŒ£ëv¾²œI¨**úwôÄ:ŸÏoÙ NÏÍÿ¯ïÿð‡—ºž‹j­ ƒið}À÷y°æ¾ðÁà“°[¶¸ "¼68.ÁcÇNBe *c >ËÏN‹¨•VQ\ZÀ5W¼ Žç£î¶·e¶ËôôôØÊÊÊW=ßÇ)WÇŪÙô÷kg[HA~¦OÃó¼k<µ¸¸ø7ù|¾ñ´ŒE9&æ`Æe½½½ÿ¤iÚJ¥‹¶ B4 që b"‘¨¤R©«ªú'[GÒÙÙ‰z½ŽR©Çq63çë¥A¥·Š±B–…ŽtŠ¢4HUÕƒØ&Aúœ„¿"ŒÜ9‡ð¸ˆ/ë%³¹„²+ˆ/…•@Žÿ1B‚Ï’ÀêàX,® ZZ…É*Õ*¶è¨XÈWðÖý#×xŸiš[æÔJ4MÛ—J&—˜Âr ¥ a¹U"x3Eˆ0—Ñåz„ J‚ïÛ uÀ ÊÕ ìºZÝAZªµ¤´Ÿ-SSS?Åä\Ð(VjH©ëÿnчÍ3õ‘[ÅX>å6ø¾O¼Ìó¼¿(‹–Édx,Ê11Ͻ½½Ÿð¹­ö{6ôõõ½òÀw:Žó‡rO¦æEE¸­ƒŽR|ÂYŒEJés¹ÜBÛ·!Ÿëú·ß<öŸÓ‹…BNÑ Ô=€B€ ¹ X‡váÂH™â€?ئ4ø¹ïºÜ¸†  µül©V«˜_ZÆT¡Å0Á(m)Á3!´¤´™ GÅV~Íf‘L&±¼¼Ü”ÁÁÛÙ‡Ÿ¿ÀwÜ‹rLÌï0BˆëR©”çûþ€àf´¾JK¢³|-—–Š¢(0<<üHÛžÃ406:Š¥å"ܵ2Á&&|0ÐÀG暊0&<˜B9@)å~P¤H@°¹••!mêêëBÚ<£r»‹EkzzZßt+Uš‰ší j«0”æé÷í¬ Iôß– ÝÑ0 ôôôÀ¶íFá§Íþ¡ïŸ „ü!bQމùÝfïÞ½¥B¡ð)UU_ÌÛ»ºº 9ÈÈ¢]¢=ä,˪&‰wž @G:µ’J¥P.W 3 ¨„@! ð ;Éð`p/è' „ƒ&x(Þ$\8¨¶CUS@©Áî.X†M¡0Ô³“±z½~ ¥ôuóÅU¬V* Œ!Åp]*aHY gk¤¼Ù[LMM¡P(l(µÙç¿ÏÛ/>»ß&&&æ·†®®®Iíß¿ÿÛ†a¼ouuµZmCÄâÖþqÉd²È»vxxøÞ­Î·ƒýýo~lßbÅ4¡W«ÐšÇáò°–…"|D ÐT( ȧ“H0ìꄟ‘ý ]Ýv×ï(Ò‡wÜ÷à{„¯"HãÖ#åÍl‹Ömie8ŽƒÕÕÕF¶M;¤ØË5ç|€s>‹rLÌ ˲>L)ý§d2yÛÚÚZ¿ì'…¹U” ÀeY ”~IJ¬ƒÃÃÃϺ¦¢(×&“‰Û«Õ*ê¶ ×óás Ÿ128@„%>8x0ê<4@@Á¡€C $hªK(L…!×CBcH™L•Beô¾Þ\æèV×u&t…ÀR(¨ïr*mNs‹úÉ­ÖEÔ“®åv»ì ù³ègBQ¶„Æ¢óa×®]%?0pòäɽŽãüªR©ÀqÂ97„*¥´®(Š]zjppð5[÷™ kÚ¯3µjµjÖ®ïÃ\Äçë9È:• " G É Œp(„B#AT¬!XëÐ)`© ¦BajÊüøÐŽnuM›¡(ŠC)õºÓ ev±YÏV‘or½›ýL~¿u0*ȃ‰¡ÝôšX”cb^€ î€ååeÝó¼+…0Æ~œËåÎÉlÆvì:täèM™LçÍŽëùÓ\ð@\J_/`ωTš *À(Àh0 §R ÄØ`¦B`© )CCÊо¾ÅåœMÓîäœèÅ/Úó†Ù…%Ø®‡\ÊldkfJiSlµ–ûÊu«€·fw!†bQމy“Ífmwmµß¹"J}‹q]wŒó O™(õÁ<ÅAãTÍSeø,[B)4èÓ§1@S1¶T K¥Hh iSE.ÀèPÿŸou-g"›ÍÖ<èvvtàâ=»±¸T@g*Ñ(ïÍUÞ̆´Úíüævs‹§‹rLL̹gG_ï$€ñ§) $!¡—]«Cñ<8ž€FËœPP€FÀÀ¢h ®P˜*…¥2$u¦Ž®TÂQ}ãV×±,Ëru]ÇÀŽ>$-kkk°ÁÂhgQ´‹€Û­7‹˜£¢ý³Ì%‰‰‰‰ÙÆØ®î\Â^®( j¹½VG]–õ\pj5e ”*` ƒª0h*ƒ®1˜ºŠ„¡¡#¡£«#Q35õº‘¾¶:ÿvH$7›¦ùv]סi4Mƒ+mÑ<ÁF (Ð,¶ažq“u!÷NeoýY«uw:嘘˜ç„ñÑÝ‹“S'®N$¬¯ºþ¦âÊ*Êå jõ:lÇ…Ë|.ÀA!e4"Ê tM…¡k° é„…îl'TE¹rd°ÿ¬ÓöZÉçó¿>~ü8ÖÂÎ+š¦5Z‡É6j]ÈÜïh´»™§,÷‹ s;AŽ"„øe,Ê111Ï;G†xóñÉ©áT2y ¸²b–+UZ«×ç<œPBpÖœÂ4M…®i°L)˪$æ—ÇvÿÅVç;ªÕjg"‘X©V«¨7®«9Ç;5Kk£ q¦µâè×QÑ¿_,Ê111Ï9»vŽœœœ:ñéµRyÜ÷ý×ÚŽ=l;|ƒ t³¦r†¡]Óêšúèž±ÑmuügC:vkµÚÕjõÕ¶mÃu݆(˵Œ|£€Rœ[Åv³u4Jn8 ¿_Q¥‹rLLÌóÆÎ‘áÏ–‹JµZ½¸\©ôÕmžç‡‚0Ê j*,Ó„eš“;úzluÌgËÐÐPõäÉ“ŸN§Óß°m»G ±´*Z˯JZ£çV‘ŽF­6ˆDŠt¸<@)}0嘘˜ç•®lÆÃ9êür®üùôôô#Žã¼SN¿ŽúÇÑ¿¨0£çV±nݧ9ËRÓ´‡»»»‹±(ÇÄÄÄz×Ñ£Gïàœ_%Å“RŠjµ Y³Z"½d¹ÝJT|£ÛÑϲÞô@Ó´‡zzzþˆ‹ÜÇÄÄÄ4BüQ*•ZpƒNJ)¢uD$Ñ>V“k'ÐÑýä¾Ñ4†aÀ4Í«åþ±(ÇÄÄÄ„Œ{>zôèÑJé•R<EmÛ°m»‘•lð„ clÓïG{4š¦ÉEy_WW× y e=&&&&SSSw®­­½cuu5Q.—Q«ÕP¯×í‰lf)ºQAWUµ±èºÓ4‘H$„¦iÿc``à–èycQމ‰‰iÃüü<«×ëÿ¥V«}¾T*]Z©TÂÍeš…YFÉ­‚,g Z–…D"ñ°ªª7÷÷÷ßÓzÞX”cbbb¶àرc ÏóVK¥­V«$šÏ,£æèà]«M!½c˲|Ó4ï¼f³sÅ¢³M¦§§?Q.—/õdÆôÈÈÈÕØ‚X”cbbbž!333ã¶m¿¸V«1¶KÓ´ÿ)„è•3cìH©+çbÿIDATTúd8˜',Ëz$ŸÏŸÜê¸ðÿ–%ÙÄø¿iêIEND®B`‚keytouch-editor-3.2.0-beta/pixmaps/icon.png0000640000175000017500000001023610163327612020234 0ustar marvinmarvin‰PNG  IHDR szzôbKGDÿÿÿ ½§“ pHYs  d_‘tIMEÔ :Zšxt+IDATx ßï ! NNN’’’l ‹‹‹PÁÁÁÅyyyJ0ŽÁ×5¬ìÿ+vŸ¡²²²B¦¦¦fddd ÏÏϸ”””R)h‹ 2¤ãè/‹¼žÖÖÖÏÿÿÿÿ¡¡¡l+++æææóÿÿÿÿÍÍÍÚ-tši2µüÿ2µüÿ3±õÿ$H[<ŸŸŸCCC°äää¤111'(((Gòòò¬ €øó =)))0ddd9 ÿ ,@2¸¥Ä:::i ÖÖÖ¥]ôôôø¶¶¶µ Bþé߸ûûû¿¿¿ÃßßßùÿÿÿìììÓÿúÔÀÏÿþÿÿúÝÌçµµµ¢Â†¾¾¾é²²²g.‡·É/Àº KKK&ÈÈÈò¦¦¦œ¬¬¬ÎÉÉÉñggg?,u³6§äÿ-x Ê $¶¶¶k¥¥¥‹ªªªv’’’l'Xr+-vž$H[.,g‡w >>>=8882ÿþþþ÷ÿ¬¬¬5ùùùü×××¢­­­MûûûÿÓÓÓ´#) 1¢ßß2µüÿ*_{G.71¡Ýé2µüÿ,m‘mxxxWîîîþåååüVVV?{{{”ÓÓÓþ§§§Ô ààà¬ÿÿÿÿ½½½XàààÅÿÿÿÿÏÏÏ‹/‡·`2µüÿ2µüÿ,n’F.…³q2µüÿ2µüÿ/À™ÉÉÉÏÿÿÿÿÿÿÿÿ³³³¦'æææþÿÿÿÿÿÿÿÿ¤¤¤¹Gããã×UUU¼8ùùùÿ»»»¦D÷òýòéÏ;ô -'WWW4EEEE(¾¾¾Í¢¢¢VÿÿÿûûûÀÀÀžvvvÏÿüûýäÖ°âÏÅëÿýûüÙÆÇûûûúVVV8888G(bt.…´Ñ :H.{¥“2µüÿ0‘ÆÜÊÊÊêÿÿÿÿÿÿÿÿ   •888;øøøÿÿÿÿÿÿÿÿÿÿÿÿÿ{{{r1; -q–‘ +b€‘+3(~~~ŠøøøÿÏÏÏ÷---,¾¾¾äÿÿÿÿÿÿÿÿúúúÿ>>>W0—Ϩ3´úÿ #vvv.¾¾¾æVVVD /===h :UUU\áááýÿÿÿÿ§§§ì,|¨;2³ùÿ2§çôØØØÑÿÿÿÿ£££g¥¥¥©ÚÚÚý5552%%%I%111V```Ÿ;0žÚ§2µüÿ0Ùª¦¦¦Oÿÿÿÿÿÿÿÿ“““L………Húúúÿÿÿÿÿcwwwfìììÿ¬¬¬Ý31¥äñ2²øÿ+sš>ÔÔÔ¨ÿÿÿÿðððû///ÏÏϱÿÿÿÿÿÿÿÿ™™™`ÓÓÓéÿÿÿÿöööÿ)))41€«æ7žÖþ#H[n  ýÝ˪ÕfÂ=ÞÞÞ¸ÒÒÒôCÒÒÒÜsssB+++ EEE`„u5Qû&Ij GGGžaaa¨ & *[u‹ ÙÙÙûñññývvv9---)üüüÿÿÿÿÿàààõ µµµƒÿÿÿÿÿÿÿÿÿÿÿÿuuuQ/Åà2µüÿ2µüÿ3´úÿ$>LM]]]‘öööÿþþþÿ£££ä÷Ö¥‹uëæäóý¯¯¯Õ’’’~ŠŠŠÇÖÖÖ¯øøø÷ !ýýýÌÌÌåÿ0F0UUUZ [[[www‰#âââþÚÚÚöAAA)¹¹¹ªÿÿÿÿÿÿÿÿ×××ø %6±ôÿ2µüÿ2µüÿ2µüÿ-|¦“ ÞÞÞÿÿÿÿÿÿÿÿÿÿÿÿÿÓÓÓû !üòòòÞjjj†```U¿¿¿×åååêÑÑѺÿÿÿôýýýýüÿÿÿ +++]]]Vÿ´´´|ÆÆÆµŸŸŸ¾ëëëÔÔÔü‹‹‹ˆùùùêüîæþþëàêûûûúýýý:::AÃÃòIIIððð×ÝÝÝÆñüêßÝ&%üøñëÎ÷÷÷éæææþ-üÍÍÍ‚ÝÝÝ«û͵­ÿþüÏ·ìã×ÐÁíàààæØ®—Žú«Ûâûê¦yõÿ×××Àüüü((((Jêêêÿÿÿÿÿÿÿÿÿÿÿÿÿ£££ððØØØØºœœœÐÍÍÍØú:   õøøøÿ¾¾¾ÿl C000»“ ­)ÉJA¬ÑIEND®B`‚keytouch-editor-3.2.0-beta/string_to_keycode/0000755000175000017500000000000010767267655020656 5ustar marvinmarvinkeytouch-editor-3.2.0-beta/string_to_keycode/string_to_keycode.c0000640000175000017500000001640010536571121024506 0ustar marvinmarvin/*--------------------------------------------------------------------------------- Name : string_to_keycode.c Author : Marvin Raaijmakers Description : Converts a string to a kernel- or X keycode. Date of last change: 09-Dec-2006 Changes : 09-Dec-2006 Removed "BASSBOOST" from key_name, because the corresponding kernel keycode does not produce a keycode under X 05-May-2006 Added to key_name: "NEW", "REDO", "SEND", "REPLY", "FORWARDMAIL", "SAVE", "DOCUMENTS" 16-Nov-2005 Changed element 126 of keycode_table[] to 133 Copyright (C) 2005-2006 Marvin Raaijmakers 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; either version 2 of the License, or any later version. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. You can contact me at: marvinr(at)users(dot)sf(dot)net (replace (at) by @ and (dot) by .) -----------------------------------------------------------------------------------*/ #include #include #include #include /* The names that belong to the kernel keycodes of extra function keys */ const char *key_name[KEY_MAX + 1] = { [0 ... KEY_MAX] = NULL, [KEY_MUTE] = "MUTE", [KEY_VOLUMEDOWN] = "VOLUMEDOWN", [KEY_VOLUMEUP] = "VOLUMEUP", [KEY_POWER] = "POWER", [KEY_KPEQUAL] = "KPEQUAL", [KEY_KPPLUSMINUS] = "KPPLUSMINUS", [KEY_PAUSE] = "PAUSE", [KEY_KPCOMMA] = "KPCOMMA", [KEY_HANGUEL] = "HANGUEL", [KEY_HANJA] = "HANJA", [KEY_YEN] = "YEN", [KEY_LEFTMETA] = "LEFTMETA", [KEY_RIGHTMETA] = "RIGHTMETA", [KEY_COMPOSE] = "COMPOSE", [KEY_STOP] = "STOP", [KEY_AGAIN] = "AGAIN", [KEY_PROPS] = "PROPS", [KEY_UNDO] = "UNDO", [KEY_FRONT] = "FRONT", [KEY_COPY] = "COPY", [KEY_OPEN] = "OPEN", [KEY_PASTE] = "PASTE", [KEY_FIND] = "FIND", [KEY_CUT] = "CUT", [KEY_HELP] = "HELP", [KEY_MENU] = "MENU", [KEY_CALC] = "CALC", [KEY_SETUP] = "SETUP", [KEY_SLEEP] = "SLEEP", [KEY_WAKEUP] = "WAKEUP", [KEY_FILE] = "FILE", [KEY_SENDFILE] = "SENDFILE", [KEY_DELETEFILE] = "DELETEFILE", [KEY_XFER] = "XFER", [KEY_PROG1] = "PROG1", [KEY_PROG2] = "PROG2", [KEY_WWW] = "WWW", [KEY_MSDOS] = "MSDOS", [KEY_COFFEE] = "COFFEE", [KEY_DIRECTION] = "DIRECTION", [KEY_CYCLEWINDOWS] = "CYCLEWINDOWS", [KEY_MAIL] = "MAIL", [KEY_BOOKMARKS] = "BOOKMARKS", [KEY_COMPUTER] = "COMPUTER", [KEY_BACK] = "BACK", [KEY_FORWARD] = "FORWARD", [KEY_CLOSECD] = "CLOSECD", [KEY_EJECTCD] = "EJECTCD", [KEY_EJECTCLOSECD] = "EJECTCLOSECD", [KEY_NEXTSONG] = "NEXTSONG", [KEY_PLAYPAUSE] = "PLAYPAUSE", [KEY_PREVIOUSSONG] = "PREVIOUSSONG", [KEY_STOPCD] = "STOPCD", [KEY_RECORD] = "RECORD", [KEY_REWIND] = "REWIND", [KEY_PHONE] = "PHONE", [KEY_ISO] = "ISO", [KEY_CONFIG] = "CONFIG", [KEY_HOMEPAGE] = "HOMEPAGE", [KEY_REFRESH] = "REFRESH", [KEY_EXIT] = "EXIT", [KEY_MOVE] = "MOVE", [KEY_EDIT] = "EDIT", [KEY_SCROLLUP] = "SCROLLUP", [KEY_SCROLLDOWN] = "SCROLLDOWN", [KEY_KPLEFTPAREN] = "KPLEFTPAREN", [KEY_KPRIGHTPAREN] = "KPRIGHTPAREN", [KEY_PLAYCD] = "PLAYCD", [KEY_PAUSECD] = "PAUSECD", [KEY_PROG3] = "PROG3", [KEY_PROG4] = "PROG4", [KEY_SUSPEND] = "SUSPEND", [KEY_CLOSE] = "CLOSE", [KEY_PLAY] = "PLAY", [KEY_FASTFORWARD] = "FASTFORWARD", [KEY_DOCUMENTS] = "DOCUMENTS", [KEY_PRINT] = "PRINT", [KEY_HP] = "HP", [KEY_CAMERA] = "CAMERA", [KEY_SOUND] = "SOUND", [KEY_QUESTION] = "QUESTION", [KEY_EMAIL] = "EMAIL", [KEY_CHAT] = "CHAT", [KEY_SEARCH] = "SEARCH", [KEY_CONNECT] = "CONNECT", [KEY_FINANCE] = "FINANCE", [KEY_SPORT] = "SPORT", [KEY_SHOP] = "SHOP", [KEY_ALTERASE] = "ALTERASE", [KEY_CANCEL] = "CANCEL", [KEY_BRIGHTNESSDOWN] = "BRIGHTNESSDOWN", [KEY_BRIGHTNESSUP] = "BRIGHTNESSUP", [KEY_MEDIA] = "MEDIA", [KEY_SWITCHVIDEOMODE] = "SWITCHVIDEOMODE", [KEY_KBDILLUMTOGGLE] = "KBDILLUMTOGGLE", [KEY_KBDILLUMDOWN] = "KBDILLUMDOWN", [KEY_KBDILLUMUP] = "KBDILLUMUP", [KEY_MACRO] = "MACRO", [KEY_NEW] = "NEW", [KEY_REDO] = "REDO", [KEY_SEND] = "SEND", [KEY_REPLY] = "REPLY", [KEY_FORWARDMAIL] = "FORWARDMAIL", [KEY_SAVE] = "SAVE" }; /* Kernel keycode -> X keycode table */ const unsigned int keycode_table[NUM_KEYCODES] = { 0, 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, 76, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 111, 221, 94, 95, 96, 211, 128, 127, 129, 208, 131, 126, 108, 109, 112, 111, 113, 181, 97, 98, 99, 100, 102, 103, 104, 105, 106, 107, 239, 160, 174, 176, 222, 157, 123, 110, 139, 134, 209, 210, 133, 115, 116, 117, 232, 133, 134, 135, 140, 248, 191, 192, 122, 188, 245, 158, 161, 193, 223, 227, 198, 199, 200, 147, 159, 151, 178, 201, 146, 203, 166, 236, 230, 235, 234, 233, 163, 204, 253, 153, 162, 144, 164, 177, 152, 190, 208, 129, 130, 231, 209, 210, 136, 220, 143, 246, 251, 137, 138, 182, 183, 184, 93, 184, 247, 132, 170, 219, 249, 205, 207, 149, 150, 154, 155, 167, 168, 169, 171, 172, 173, 165, 175, 179, 180, 0, 185, 186, 187, 118, 119, 120, 121, 229, 194, 195, 196, 197, 148, 202, 101, 212, 237, 214, 215, 216, 217, 218, 228, 142, 213, 240, 241, 242, 243, 244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; unsigned int string_to_kernel_keycode (char *string) /* Input: string - The name of the keycode Output: - Global: key_name[] - The list of key names Returns: The kernel keycode of the key named string. If no key named string was found 0 is returned. Desciption: This function returns the kernel keycode of the key named string. While comparing string to the names of keycodes the case of the characters are ignored. */ { unsigned int keycode; for (keycode = 0; keycode < KEY_MAX; keycode++) { if (key_name[keycode] != NULL && !strcasecmp(key_name[keycode], string)) { return (keycode); } } return (0); } unsigned int string_to_xkeycode (char *string) /* Input: string - The name of the keycode Output: - Global: keycode_table - Kernel keycode -> X keycode table Returns: The X keycode of the key named string. If no key named string was found 0 is returned. Desciption: This function returns the kernel X of the key named string. While comparing string to the names of keycodes the case of the characters are ignored. */ { unsigned int kernel_keycode; kernel_keycode = string_to_kernel_keycode (string); if (kernel_keycode < NUM_KEYCODES) { return (keycode_table[kernel_keycode]); } return (0); } keytouch-editor-3.2.0-beta/string_to_keycode/string_to_keycode.h0000640000175000017500000000302210451721304024503 0ustar marvinmarvin/*--------------------------------------------------------------------------------- Name : string_to_keycode.h Author : Marvin Raaijmakers Description : Header file for string_to_keycode.c Date of last change: 01-Jul-2006 Copyright (C) 2005-2006 Marvin Raaijmakers 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; either version 2 of the License, or any later version. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. You can contact me at: marvinr(at)users(dot)sf(dot)net (replace (at) by @ and (dot) by .) -----------------------------------------------------------------------------------*/ #ifndef INCLUDE_STRING_TO_KEYCODE #define INCLUDE_STRING_TO_KEYCODE #include #define NUM_KEYCODES 256 #define kernel_keycode_to_string(_keycode) (key_name[(_keycode)]) extern const char *key_name[KEY_MAX + 1]; extern unsigned int string_to_kernel_keycode (char *string); extern unsigned int string_to_xkeycode (char *string); #endif keytouch-editor-3.2.0-beta/string_to_keycode/keys.h0000640000175000017500000001243110426421567021761 0ustar marvinmarvin #define KEY_MAX 0x1ff /* This list is copied from */ /* * The keycodes the Linux kernel uses. */ #define KEY_RESERVED 0 #define KEY_ESC 1 #define KEY_1 2 #define KEY_2 3 #define KEY_3 4 #define KEY_4 5 #define KEY_5 6 #define KEY_6 7 #define KEY_7 8 #define KEY_8 9 #define KEY_9 10 #define KEY_0 11 #define KEY_MINUS 12 #define KEY_EQUAL 13 #define KEY_BACKSPACE 14 #define KEY_TAB 15 #define KEY_Q 16 #define KEY_W 17 #define KEY_E 18 #define KEY_R 19 #define KEY_T 20 #define KEY_Y 21 #define KEY_U 22 #define KEY_I 23 #define KEY_O 24 #define KEY_P 25 #define KEY_LEFTBRACE 26 #define KEY_RIGHTBRACE 27 #define KEY_ENTER 28 #define KEY_LEFTCTRL 29 #define KEY_A 30 #define KEY_S 31 #define KEY_D 32 #define KEY_F 33 #define KEY_G 34 #define KEY_H 35 #define KEY_J 36 #define KEY_K 37 #define KEY_L 38 #define KEY_SEMICOLON 39 #define KEY_APOSTROPHE 40 #define KEY_GRAVE 41 #define KEY_LEFTSHIFT 42 #define KEY_BACKSLASH 43 #define KEY_Z 44 #define KEY_X 45 #define KEY_C 46 #define KEY_V 47 #define KEY_B 48 #define KEY_N 49 #define KEY_M 50 #define KEY_COMMA 51 #define KEY_DOT 52 #define KEY_SLASH 53 #define KEY_RIGHTSHIFT 54 #define KEY_KPASTERISK 55 #define KEY_LEFTALT 56 #define KEY_SPACE 57 #define KEY_CAPSLOCK 58 #define KEY_F1 59 #define KEY_F2 60 #define KEY_F3 61 #define KEY_F4 62 #define KEY_F5 63 #define KEY_F6 64 #define KEY_F7 65 #define KEY_F8 66 #define KEY_F9 67 #define KEY_F10 68 #define KEY_NUMLOCK 69 #define KEY_SCROLLLOCK 70 #define KEY_KP7 71 #define KEY_KP8 72 #define KEY_KP9 73 #define KEY_KPMINUS 74 #define KEY_KP4 75 #define KEY_KP5 76 #define KEY_KP6 77 #define KEY_KPPLUS 78 #define KEY_KP1 79 #define KEY_KP2 80 #define KEY_KP3 81 #define KEY_KP0 82 #define KEY_KPDOT 83 #define KEY_ZENKAKUHANKAKU 85 #define KEY_102ND 86 #define KEY_F11 87 #define KEY_F12 88 #define KEY_RO 89 #define KEY_KATAKANA 90 #define KEY_HIRAGANA 91 #define KEY_HENKAN 92 #define KEY_KATAKANAHIRAGANA 93 #define KEY_MUHENKAN 94 #define KEY_KPJPCOMMA 95 #define KEY_KPENTER 96 #define KEY_RIGHTCTRL 97 #define KEY_KPSLASH 98 #define KEY_SYSRQ 99 #define KEY_RIGHTALT 100 #define KEY_LINEFEED 101 #define KEY_HOME 102 #define KEY_UP 103 #define KEY_PAGEUP 104 #define KEY_LEFT 105 #define KEY_RIGHT 106 #define KEY_END 107 #define KEY_DOWN 108 #define KEY_PAGEDOWN 109 #define KEY_INSERT 110 #define KEY_DELETE 111 #define KEY_MACRO 112 #define KEY_MUTE 113 #define KEY_VOLUMEDOWN 114 #define KEY_VOLUMEUP 115 #define KEY_POWER 116 #define KEY_KPEQUAL 117 #define KEY_KPPLUSMINUS 118 #define KEY_PAUSE 119 #define KEY_KPCOMMA 121 #define KEY_HANGUEL 122 #define KEY_HANJA 123 #define KEY_YEN 124 #define KEY_LEFTMETA 125 #define KEY_RIGHTMETA 126 #define KEY_COMPOSE 127 #define KEY_STOP 128 #define KEY_AGAIN 129 #define KEY_PROPS 130 #define KEY_UNDO 131 #define KEY_FRONT 132 #define KEY_COPY 133 #define KEY_OPEN 134 #define KEY_PASTE 135 #define KEY_FIND 136 #define KEY_CUT 137 #define KEY_HELP 138 #define KEY_MENU 139 #define KEY_CALC 140 #define KEY_SETUP 141 #define KEY_SLEEP 142 #define KEY_WAKEUP 143 #define KEY_FILE 144 #define KEY_SENDFILE 145 #define KEY_DELETEFILE 146 #define KEY_XFER 147 #define KEY_PROG1 148 #define KEY_PROG2 149 #define KEY_WWW 150 #define KEY_MSDOS 151 #define KEY_COFFEE 152 #define KEY_DIRECTION 153 #define KEY_CYCLEWINDOWS 154 #define KEY_MAIL 155 #define KEY_BOOKMARKS 156 #define KEY_COMPUTER 157 #define KEY_BACK 158 #define KEY_FORWARD 159 #define KEY_CLOSECD 160 #define KEY_EJECTCD 161 #define KEY_EJECTCLOSECD 162 #define KEY_NEXTSONG 163 #define KEY_PLAYPAUSE 164 #define KEY_PREVIOUSSONG 165 #define KEY_STOPCD 166 #define KEY_RECORD 167 #define KEY_REWIND 168 #define KEY_PHONE 169 #define KEY_ISO 170 #define KEY_CONFIG 171 #define KEY_HOMEPAGE 172 #define KEY_REFRESH 173 #define KEY_EXIT 174 #define KEY_MOVE 175 #define KEY_EDIT 176 #define KEY_SCROLLUP 177 #define KEY_SCROLLDOWN 178 #define KEY_KPLEFTPAREN 179 #define KEY_KPRIGHTPAREN 180 #define KEY_NEW 181 #define KEY_REDO 182 #define KEY_F13 183 #define KEY_F14 184 #define KEY_F15 185 #define KEY_F16 186 #define KEY_F17 187 #define KEY_F18 188 #define KEY_F19 189 #define KEY_F20 190 #define KEY_F21 191 #define KEY_F22 192 #define KEY_F23 193 #define KEY_F24 194 #define KEY_PLAYCD 200 #define KEY_PAUSECD 201 #define KEY_PROG3 202 #define KEY_PROG4 203 #define KEY_SUSPEND 205 #define KEY_CLOSE 206 #define KEY_PLAY 207 #define KEY_FASTFORWARD 208 #define KEY_BASSBOOST 209 #define KEY_PRINT 210 #define KEY_HP 211 #define KEY_CAMERA 212 #define KEY_SOUND 213 #define KEY_QUESTION 214 #define KEY_EMAIL 215 #define KEY_CHAT 216 #define KEY_SEARCH 217 #define KEY_CONNECT 218 #define KEY_FINANCE 219 #define KEY_SPORT 220 #define KEY_SHOP 221 #define KEY_ALTERASE 222 #define KEY_CANCEL 223 #define KEY_BRIGHTNESSDOWN 224 #define KEY_BRIGHTNESSUP 225 #define KEY_MEDIA 226 #define KEY_SWITCHVIDEOMODE 227 #define KEY_KBDILLUMTOGGLE 228 #define KEY_KBDILLUMDOWN 229 #define KEY_KBDILLUMUP 230 #define KEY_SEND 231 #define KEY_REPLY 232 #define KEY_FORWARDMAIL 233 #define KEY_SAVE 234 #define KEY_DOCUMENTS 235 #define KEY_UNKNOWN 240 keytouch-editor-3.2.0-beta/string_to_keycode/Makefile.in0000640000175000017500000000023210306264344022671 0ustar marvinmarvinSOURCES=string_to_keycode.c CFLAGS=-I. -O2 -Wall CC = @CC@ OBJECTS=$(SOURCES:.c=.o) all: $(OBJECTS) clean: $(RM) $(OBJECTS) install: all uninstall:keytouch-editor-3.2.0-beta/keytouch-editor.gladep0000644000175000017500000000044310662075001021411 0ustar marvinmarvin keytouch-editor keytouch-editor FALSE keytouch-editor-3.2.0-beta/keytouch-editor.glade0000644000175000017500000026515410662075001021245 0ustar marvinmarvin 10 True Select keyboard GTK_WINDOW_TOPLEVEL GTK_WIN_POS_CENTER True 490 430 True False icon.png True False False GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True False True False 7 True Please select your keyboard: False False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False True True GTK_POLICY_AUTOMATIC GTK_POLICY_AUTOMATIC GTK_SHADOW_IN GTK_CORNER_TOP_LEFT True True True False False True False False False 0 True True True 0 0.5 GTK_SHADOW_NONE True 0.5 0.5 1 1 0 0 12 0 True True False False True GTK_JUSTIFY_LEFT GTK_WRAP_WORD True 3 3 0 5 5 0 Every input device has its own "event device". All event devices are listed above. You should select the event device of your keyboard. Click "OK" after selecting the keyboard and this program will test if you selected the right device. Note USB keyboards have two event devices. The first is for all "normal" keys and the second for the extra function keys. Choose the second device. True False 0 True gtk-dialog-info 4 0.5 0.5 0 0 0 True True True <b>Help information:</b> False True GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False label_item 0 False True True GTK_BUTTONBOX_END 0 True True True gtk-cancel True GTK_RELIEF_NORMAL True True True True gtk-ok True GTK_RELIEF_NORMAL True 0 False True True keyTouch-editor GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False True False icon.png True False False GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True False True False 0 True GTK_PACK_DIRECTION_LTR GTK_PACK_DIRECTION_LTR True _File True True gtk-new True True gtk-open True True gtk-save True True gtk-save-as True True True gtk-quit True True _Edit True True Change _keyboard... True True _Help True True _About True 0 False False 6 True False 6 True 0 0.5 GTK_SHADOW_ETCHED_IN 7 True 2 2 False 5 5 True Manufacturer: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 0 1 fill True Model: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 1 2 fill True True True True 0 True * False 1 2 1 2 True True True True 0 True * False 1 2 0 1 True Keyboard False True GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 label_item 0 False True True 0 0.5 GTK_SHADOW_ETCHED_IN 7 True True 1 True False 0 True True GTK_POLICY_AUTOMATIC GTK_POLICY_AUTOMATIC GTK_SHADOW_IN GTK_CORNER_TOP_LEFT True True False False False True False False False 0 True True 3 True GTK_BUTTONBOX_DEFAULT_STYLE 3 True True True gtk-remove True GTK_RELIEF_NORMAL True True True True gtk-new True GTK_RELIEF_NORMAL True 0 False True False False True 0 0.5 GTK_SHADOW_ETCHED_IN 7 True 5 2 False 6 6 True Name: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 0 1 fill True Scancode: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 1 2 fill True True True True 0 True * False 1 2 0 1 True False 5 True True False True 0 True * False 0 True True True True GTK_RELIEF_NORMAL True True 0.5 0.5 0 0 0 0 0 0 True False 2 True gtk-edit 4 0.5 0.5 0 0 0 False False True _Change... True False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False 0 False False 1 2 1 2 fill fill True 2 2 False 4 4 True True _Program: True GTK_RELIEF_NORMAL True False False True 0 1 0 1 fill True True True True 0 True * False 1 2 0 1 True 0 0.5 GTK_SHADOW_IN 3 True 2 2 False 3 3 True Plugin: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 0 1 fill True Function: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 1 2 fill True False True False True False True True False True 0 True * False True GTK_SELECTION_BROWSE 1 2 0 1 True False True False True False True True False True 0 True * False True GTK_SELECTION_BROWSE 1 2 1 2 True Plugin False True GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 label_item 1 2 1 2 fill fill True True Special _action: True GTK_RELIEF_NORMAL True False False True program_radiobutton 0 1 1 2 fill expand 1 2 4 5 fill True Default: False False GTK_JUSTIFY_LEFT False False 0 0 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 4 5 fill True Keycode: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 3 4 fill True False True 1 2 3 4 fill fill True False 5 True The keys code sent when the keyboard is connected via USB True False True 0 True * False 0 True True True True GTK_RELIEF_NORMAL True True 0.5 0.5 0 0 0 0 0 0 True False 2 True gtk-edit 4 0.5 0.5 0 0 0 False False True _Change... True False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False 0 False False 1 2 2 3 fill fill True USB code: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 2 3 fill True Key settings False True GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 label_item True True True Keys False True GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 label_item 0 True True 0 True True True Press key GTK_WINDOW_TOPLEVEL GTK_WIN_POS_CENTER True True False icon.png True False False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST True False True True False 0 True GTK_BUTTONBOX_SPREAD True True True gtk-cancel True GTK_RELIEF_NORMAL True -6 0 False True GTK_PACK_END 10 True 0.5 0.5 1 1 0 0 0 0 True - False False GTK_JUSTIFY_LEFT True False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 True True True New key GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE True True False icon.png True False False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST True False True True False 0 True GTK_BUTTONBOX_END True True True gtk-cancel True GTK_RELIEF_NORMAL True -6 True True True gtk-ok True GTK_RELIEF_NORMAL True -5 0 False True GTK_PACK_END 6 True False 6 True Please enter the name of the new key: False False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False True True True True 0 True * False 0 False False True 0 0.5 GTK_SHADOW_NONE True 0.5 0.5 1 1 0 0 12 0 True True False False True GTK_JUSTIFY_LEFT GTK_WRAP_WORD True 3 3 0 5 5 0 Choose an appropriate name for the key. Is there for example a text label on the key, use the label as the key's name. True False 0 True gtk-dialog-info 4 0.5 0.5 0 0 0 True True True <b>Help information:</b> False True GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False label_item 0 True True 0 False True True Contact information GTK_WINDOW_TOPLEVEL GTK_WIN_POS_CENTER False True False icon.png True False False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST True False True True False 0 True GTK_BUTTONBOX_END True True True gtk-cancel True GTK_RELIEF_NORMAL True -6 True True True gtk-ok True GTK_RELIEF_NORMAL True -5 0 False True GTK_PACK_END 5 True False 7 True Please fill in your real name and e-mail address. This information will be used for the administration of the keyboard files. The e-mail address must be real in order to send the keyboard file. False False GTK_JUSTIFY_LEFT True False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False True 0 0.5 GTK_SHADOW_ETCHED_IN 7 True 2 2 False 5 5 True Your name: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 0 1 fill True E-mail address: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 1 2 fill True True True True 0 True * False 1 2 1 2 True True True True 0 True * False 1 2 0 1 True Contact information False True GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 label_item 0 True True 0 True True True About keyTouch-editor GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False False False icon.png True False False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST True False True True False 0 True GTK_BUTTONBOX_END True True True gtk-close True GTK_RELIEF_NORMAL True -7 0 False True GTK_PACK_END 5 True False 0 True logo.png 0.5 0.5 0 0 0 False True 5 True 4 2 False 2 7 True Version: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 0 1 fill True 3.1.2 False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 1 2 0 1 fill True Developer: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 1 2 fill True Marvin Raaijmakers False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 1 2 1 2 fill True License: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 2 3 fill True GPL 2 False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 1 2 2 3 fill True Website: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 3 4 fill True True http://keytouch.sf.net False True GTK_JUSTIFY_LEFT False True 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 1 2 3 4 fill 0 False False 0 True True keytouch-editor-3.2.0-beta/autogen.sh0000755000175000017500000001063010371376741017130 0ustar marvinmarvin#!/bin/sh # Run this to generate all the initial makefiles, etc. srcdir=`dirname $0` test -z "$srcdir" && srcdir=. DIE=0 if [ -n "$GNOME2_DIR" ]; then ACLOCAL_FLAGS="-I $GNOME2_DIR/share/aclocal $ACLOCAL_FLAGS" LD_LIBRARY_PATH="$GNOME2_DIR/lib:$LD_LIBRARY_PATH" PATH="$GNOME2_DIR/bin:$PATH" export PATH export LD_LIBRARY_PATH fi (test -f $srcdir/configure.in) || { echo -n "**Error**: Directory "\`$srcdir\'" does not look like the" echo " top-level package directory" exit 1 } (autoconf --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: You must have \`autoconf' installed." echo "Download the appropriate package for your distribution," echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/" DIE=1 } (grep "^AC_PROG_INTLTOOL" $srcdir/configure.in >/dev/null) && { (intltoolize --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: You must have \`intltool' installed." echo "You can get it from:" echo " ftp://ftp.gnome.org/pub/GNOME/" DIE=1 } } (grep "^AM_PROG_XML_I18N_TOOLS" $srcdir/configure.in >/dev/null) && { (xml-i18n-toolize --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: You must have \`xml-i18n-toolize' installed." echo "You can get it from:" echo " ftp://ftp.gnome.org/pub/GNOME/" DIE=1 } } (grep "^AM_PROG_LIBTOOL" $srcdir/configure.in >/dev/null) && { (libtool --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: You must have \`libtool' installed." echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/" DIE=1 } } (grep "^AM_GLIB_GNU_GETTEXT" $srcdir/configure.in >/dev/null) && { (grep "sed.*POTFILES" $srcdir/configure.in) > /dev/null || \ (glib-gettextize --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: You must have \`glib' installed." echo "You can get it from: ftp://ftp.gtk.org/pub/gtk" DIE=1 } } (automake --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: You must have \`automake' installed." echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/" DIE=1 NO_AUTOMAKE=yes } # if no automake, don't bother testing for aclocal test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: Missing \`aclocal'. The version of \`automake'" echo "installed doesn't appear recent enough." echo "You can get automake from ftp://ftp.gnu.org/pub/gnu/" DIE=1 } if test "$DIE" -eq 1; then exit 1 fi if test -z "$*"; then echo "**Warning**: I am going to run \`configure' with no arguments." echo "If you wish to pass any to it, please specify them on the" echo \`$0\'" command line." echo fi case $CC in xlc ) am_opt=--include-deps;; esac for coin in `find $srcdir -path $srcdir/CVS -prune -o -name configure.in -print` do dr=`dirname $coin` if test -f $dr/NO-AUTO-GEN; then echo skipping $dr -- flagged as no auto-gen else echo processing $dr ( cd $dr aclocalinclude="$ACLOCAL_FLAGS" if grep "^AM_GLIB_GNU_GETTEXT" configure.in >/dev/null; then echo "Creating $dr/aclocal.m4 ..." test -r $dr/aclocal.m4 || touch $dr/aclocal.m4 echo "Running glib-gettextize... Ignore non-fatal messages." echo "no" | glib-gettextize --force --copy echo "Making $dr/aclocal.m4 writable ..." test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4 fi if grep "^AC_PROG_INTLTOOL" configure.in >/dev/null; then echo "Running intltoolize..." intltoolize --copy --force --automake fi if grep "^AM_PROG_XML_I18N_TOOLS" configure.in >/dev/null; then echo "Running xml-i18n-toolize..." xml-i18n-toolize --copy --force --automake fi if grep "^AM_PROG_LIBTOOL" configure.in >/dev/null; then if test -z "$NO_LIBTOOLIZE" ; then echo "Running libtoolize..." libtoolize --force --copy fi fi echo "Running aclocal $aclocalinclude ..." aclocal $aclocalinclude if grep "^AM_CONFIG_HEADER" configure.in >/dev/null; then echo "Running autoheader..." autoheader fi echo "Running automake --gnu $am_opt ..." automake --add-missing --gnu $am_opt echo "Running autoconf ..." autoconf ) fi done conf_flags="--enable-maintainer-mode" if test x$NOCONFIGURE = x; then echo Running $srcdir/configure $conf_flags "$@" ... $srcdir/configure $conf_flags "$@" \ && echo Now type \`make\' to compile. || exit 1 else echo Skipping configure process. fi keytouch-editor-3.2.0-beta/configure.in0000640000175000017500000000130610677476720017443 0ustar marvinmarvindnl Process this file with autoconf to produce a configure script. AC_INIT(configure.in) AM_INIT_AUTOMAKE(keytouch-editor-bin, 3.1.0) AM_CONFIG_HEADER(config.h) AM_MAINTAINER_MODE AC_ISC_POSIX AC_PROG_CC AM_PROG_CC_STDC AC_HEADER_STDC pkg_modules="gtk+-2.0 >= 2.0.0" PKG_CHECK_MODULES(PACKAGE, [$pkg_modules]) AC_SUBST(PACKAGE_CFLAGS) AC_SUBST(PACKAGE_LIBS) GETTEXT_PACKAGE=keytouch-editor-bin AC_SUBST(GETTEXT_PACKAGE) AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [Gettext package.]) dnl Add the languages which your application supports here. ALL_LINGUAS="nl de ga sv hu it vi" AM_GLIB_GNU_GETTEXT AC_OUTPUT([ Makefile string_to_keycode/Makefile src/Makefile mxml/Makefile po/Makefile.in ]) keytouch-editor-3.2.0-beta/Makefile.am0000640000175000017500000000140610451467257017162 0ustar marvinmarvin## Process this file with automake to produce Makefile.in SUBDIRS = mxml string_to_keycode src po EXTRA_DIST = \ autogen.sh \ keytouch-editor.glade \ keytouch-editor.gladep install-data-local: @$(NORMAL_INSTALL) cp ./keytouch-editor $(DESTDIR)$(bindir) chmod 755 $(DESTDIR)$(bindir)/keytouch-editor if test -d $(srcdir)/pixmaps; then \ $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/pixmaps; \ for pixmap in $(srcdir)/pixmaps/*; do \ if test -f $$pixmap; then \ $(INSTALL_DATA) $$pixmap $(DESTDIR)$(pkgdatadir)/pixmaps; \ fi \ done \ fi dist-hook: if test -d pixmaps; then \ mkdir $(distdir)/pixmaps; \ for pixmap in pixmaps/*; do \ if test -f $$pixmap; then \ cp -p $$pixmap $(distdir)/pixmaps; \ fi \ done \ fi keytouch-editor-3.2.0-beta/NEWS0000640000175000017500000000000010371376741015610 0ustar marvinmarvinkeytouch-editor-3.2.0-beta/INSTALL0000644000175000017500000000023210407024435016143 0ustar marvinmarvinCompiling and installing keytouch-editor is done by the common procedure: - Run './configure' in this directory. - Run 'make' - Run 'make install' as rootkeytouch-editor-3.2.0-beta/AUTHORS0000640000175000017500000000005710407024505016161 0ustar marvinmarvinMarvin Raaijmakers keytouch-editor-3.2.0-beta/ChangeLog0000640000175000017500000000206410640251117016663 0ustar marvinmarvinVersion 3.1.2: - Compiler warning fixes Version 3.1.1: - The "BASSBOOST" (kernel) keycode cannot be used anymore in keyboard files because it does not work under X (means: no events are received from the X server when a key with keycode BASSBOOST is pressed). - Updated Swedish and Irish translation. - Improved GUI: Moved "OK" button, of the keyboard selection dialog, from the left side of the "Cancel" button to the right side. Version 3.1.0 beta: - Added support for ACPI hotkeys Version 3.0.0 beta 4: - After a keyboard file is saved, its syntax will be checked and if it is incorrect the user will be informed about it. - Added Irish translation. - Added Swedish translation. Version 3.0.0 beta 3: - Fixed: Application will not exit anymore when sending a keyboard file failed. - User will now be asked if if he/she wants to overwrite a file. - Added German translation. Version 3.0.0 beta 2: - Support for USB keyboards - A name will be suggested for keys with a known keycode. - A default action will automaticly be filled in for keys with a known keycode. keytouch-editor-3.2.0-beta/stamp-h.in0000640000175000017500000000001210767267513017022 0ustar marvinmarvintimestamp keytouch-editor-3.2.0-beta/aclocal.m40000640000175000017500000017666510677476774017030 0ustar marvinmarvindnl aclocal.m4 generated automatically by aclocal 1.4-p6 dnl Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl This program is distributed in the hope that it will be useful, dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A dnl PARTICULAR PURPOSE. # lib-prefix.m4 serial 5 (gettext-0.15) dnl Copyright (C) 2001-2005 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't dnl require excessive bracketing. ifdef([AC_HELP_STRING], [AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], [AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed dnl to access previously installed libraries. The basic assumption is that dnl a user will want packages to use other packages he previously installed dnl with the same --prefix option. dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate dnl libraries, but is otherwise very convenient. AC_DEFUN([AC_LIB_PREFIX], [ AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_LIB_ARG_WITH([lib-prefix], [ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib --without-lib-prefix don't search for libraries in includedir and libdir], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" fi fi ]) if test $use_additional = yes; then dnl Potentially add $additional_includedir to $CPPFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's already present in $CPPFLAGS, dnl 3. if it's /usr/local/include and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= for x in $CPPFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $CPPFLAGS. CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" fi fi fi fi dnl Potentially add $additional_libdir to $LDFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's already present in $LDFLAGS, dnl 3. if it's /usr/local/lib and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then haveit= for x in $LDFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LDFLAGS. LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" fi fi fi fi fi ]) dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, dnl acl_final_exec_prefix, containing the values to which $prefix and dnl $exec_prefix will expand at the end of the configure script. AC_DEFUN([AC_LIB_PREPARE_PREFIX], [ dnl Unfortunately, prefix and exec_prefix get only finally determined dnl at the end of configure. if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" ]) dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the dnl variables prefix and exec_prefix bound to the values they will have dnl at the end of the configure script. AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], [ acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" $1 exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" ]) dnl AC_LIB_PREPARE_MULTILIB creates a variable acl_libdirstem, containing dnl the basename of the libdir, either "lib" or "lib64". AC_DEFUN([AC_LIB_PREPARE_MULTILIB], [ dnl There is no formal standard regarding lib and lib64. The current dnl practice is that on a system supporting 32-bit and 64-bit instruction dnl sets or ABIs, 64-bit libraries go under $prefix/lib64 and 32-bit dnl libraries go under $prefix/lib. We determine the compiler's default dnl mode by looking at the compiler's library search path. If at least dnl of its elements ends in /lib64 or points to a directory whose absolute dnl pathname ends in /lib64, we assume a 64-bit ABI. Otherwise we use the dnl default, namely "lib". acl_libdirstem=lib searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` if test -n "$searchpath"; then acl_save_IFS="${IFS= }"; IFS=":" for searchdir in $searchpath; do if test -d "$searchdir"; then case "$searchdir" in */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; *) searchdir=`cd "$searchdir" && pwd` case "$searchdir" in */lib64 ) acl_libdirstem=lib64 ;; esac ;; esac fi done IFS="$acl_save_IFS" fi ]) # lib-link.m4 serial 9 (gettext-0.16) dnl Copyright (C) 2001-2006 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. AC_PREREQ(2.50) dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and dnl augments the CPPFLAGS variable. AC_DEFUN([AC_LIB_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) define([Name],[translit([$1],[./-], [___])]) define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ AC_LIB_LINKFLAGS_BODY([$1], [$2]) ac_cv_lib[]Name[]_libs="$LIB[]NAME" ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" ac_cv_lib[]Name[]_cppflags="$INC[]NAME" ]) LIB[]NAME="$ac_cv_lib[]Name[]_libs" LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" INC[]NAME="$ac_cv_lib[]Name[]_cppflags" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the dnl results of this search when this library appears as a dependency. HAVE_LIB[]NAME=yes undefine([Name]) undefine([NAME]) ]) dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) dnl searches for libname and the libraries corresponding to explicit and dnl implicit dependencies, together with the specified include files and dnl the ability to compile and link the specified testcode. If found, it dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) define([Name],[translit([$1],[./-], [___])]) define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME dnl accordingly. AC_LIB_LINKFLAGS_BODY([$1], [$2]) dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, dnl because if the user has installed lib[]Name and not disabled its use dnl via --without-lib[]Name-prefix, he wants to use it. ac_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ ac_save_LIBS="$LIBS" LIBS="$LIBS $LIB[]NAME" AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) LIBS="$ac_save_LIBS" ]) if test "$ac_cv_lib[]Name" = yes; then HAVE_LIB[]NAME=yes AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) AC_MSG_CHECKING([how to link with lib[]$1]) AC_MSG_RESULT([$LIB[]NAME]) else HAVE_LIB[]NAME=no dnl If $LIB[]NAME didn't lead to a usable library, we don't need dnl $INC[]NAME either. CPPFLAGS="$ac_save_CPPFLAGS" LIB[]NAME= LTLIB[]NAME= fi AC_SUBST([HAVE_LIB]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) undefine([Name]) undefine([NAME]) ]) dnl Determine the platform dependent parameters needed to use rpath: dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator, dnl hardcode_direct, hardcode_minus_L. AC_DEFUN([AC_LIB_RPATH], [ dnl Tell automake >= 1.10 to complain if config.rpath is missing. m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])]) AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done ]) wl="$acl_cv_wl" libext="$acl_cv_libext" shlibext="$acl_cv_shlibext" hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" hardcode_direct="$acl_cv_hardcode_direct" hardcode_minus_L="$acl_cv_hardcode_minus_L" dnl Determine whether the user wants rpath handling at all. AC_ARG_ENABLE(rpath, [ --disable-rpath do not hardcode runtime library paths], :, enable_rpath=yes) ]) dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. AC_DEFUN([AC_LIB_LINKFLAGS_BODY], [ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_LIB_ARG_WITH([lib$1-prefix], [ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib --without-lib$1-prefix don't search for lib$1 in includedir and libdir], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" fi fi ]) dnl Search the library and its dependencies in $additional_libdir and dnl $LDFLAGS. Using breadth-first-seach. LIB[]NAME= LTLIB[]NAME= INC[]NAME= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='$1 $2' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" dnl See if it was already located by an earlier AC_LIB_LINKFLAGS dnl or AC_LIB_HAVE_LINKFLAGS call. uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" else dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined dnl that this library doesn't exist. So just drop it. : fi else dnl Search the library lib$name in $additional_libdir and $LDFLAGS dnl and the already constructed $LIBNAME/$LTLIBNAME. found_dir= found_la= found_so= found_a= if test $use_additional = yes; then if test -n "$shlibext" \ && { test -f "$additional_libdir/lib$name.$shlibext" \ || { test "$shlibext" = dll \ && test -f "$additional_libdir/lib$name.dll.a"; }; }; then found_dir="$additional_libdir" if test -f "$additional_libdir/lib$name.$shlibext"; then found_so="$additional_libdir/lib$name.$shlibext" else found_so="$additional_libdir/lib$name.dll.a" fi if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi else if test -f "$additional_libdir/lib$name.$libext"; then found_dir="$additional_libdir" found_a="$additional_libdir/lib$name.$libext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$shlibext" \ && { test -f "$dir/lib$name.$shlibext" \ || { test "$shlibext" = dll \ && test -f "$dir/lib$name.dll.a"; }; }; then found_dir="$dir" if test -f "$dir/lib$name.$shlibext"; then found_so="$dir/lib$name.$shlibext" else found_so="$dir/lib$name.dll.a" fi if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi else if test -f "$dir/lib$name.$libext"; then found_dir="$dir" found_a="$dir/lib$name.$libext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then dnl Found the library. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then dnl Linking with a shared library. We attempt to hardcode its dnl directory into the executable's runpath, unless it's the dnl standard /usr/lib. if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then dnl No hardcoding is needed. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl Use an explicit option to hardcode DIR into the resulting dnl binary. dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi dnl The hardcoding into $LIBNAME is system dependent. if test "$hardcode_direct" = yes; then dnl Using DIR/libNAME.so during linking hardcodes DIR into the dnl resulting binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then dnl Use an explicit option to hardcode DIR into the resulting dnl binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else dnl Rely on "-L$found_dir". dnl But don't add it if it's already contained in the LDFLAGS dnl or the already constructed $LIBNAME haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" fi if test "$hardcode_minus_L" != no; then dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH dnl here, because this doesn't fit in flags passed to the dnl compiler. So give up. No hardcoding. This affects only dnl very old systems. dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then dnl Linking with a static library. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" else dnl We shouldn't come here, but anyway it's good to have a dnl fallback. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" fi fi dnl Assume the include files are nearby. additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then dnl Potentially add $additional_includedir to $INCNAME. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's /usr/local/include and we are using GCC on Linux, dnl 3. if it's already present in $CPPFLAGS or the already dnl constructed $INCNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INC[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $INCNAME. INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" fi fi fi fi fi dnl Look for dependencies. if test -n "$found_la"; then dnl Read the .la file. It defines the variables dnl dlname, library_names, old_library, dependency_libs, current, dnl age, revision, installed, dlopen, dlpreopen, libdir. save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" dnl We use only dependency_libs. for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's /usr/local/lib and we are using GCC on Linux, dnl 3. if it's already present in $LDFLAGS or the already dnl constructed $LIBNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then haveit= if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LIBNAME. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LTLIBNAME. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) dnl Handle this in the next round. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) dnl Handle this in the next round. Throw away the .la's dnl directory; it is already contained in a preceding -L dnl option. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) dnl Most likely an immediate library name. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" ;; esac done fi else dnl Didn't find the library; assume it is in the system directories dnl known to the linker and runtime loader. (All the system dnl directories known to the linker should also be known to the dnl runtime loader, otherwise the system is severely misconfigured.) LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$hardcode_libdir_separator"; then dnl Weird platform: only the last -rpath option counts, the user must dnl pass all path elements in one option. We can arrange that for a dnl single library, but not when more than one $LIBNAMEs are used. alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" done dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl. acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" else dnl The -rpath options are cumulative. for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then dnl When using libtool, the option that works for both libraries and dnl executables is -R. The -R options are cumulative. for found_dir in $ltrpathdirs; do LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" done fi ]) dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, dnl unless already present in VAR. dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes dnl contains two or three consecutive elements that belong together. AC_DEFUN([AC_LIB_APPENDTOVAR], [ for element in [$2]; do haveit= for x in $[$1]; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then [$1]="${[$1]}${[$1]:+ }$element" fi done ]) dnl For those cases where a variable contains several -L and -l options dnl referring to unknown libraries and directories, this macro determines the dnl necessary additional linker options for the runtime path. dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL]) dnl sets LDADDVAR to linker options needed together with LIBSVALUE. dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed, dnl otherwise linking without libtool is assumed. AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS], [ AC_REQUIRE([AC_LIB_RPATH]) AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) $1= if test "$enable_rpath" != no; then if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then dnl Use an explicit option to hardcode directories into the resulting dnl binary. rpathdirs= next= for opt in $2; do if test -n "$next"; then dir="$next" dnl No need to hardcode the standard /usr/lib. if test "X$dir" != "X/usr/$acl_libdirstem"; then rpathdirs="$rpathdirs $dir" fi next= else case $opt in -L) next=yes ;; -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` dnl No need to hardcode the standard /usr/lib. if test "X$dir" != "X/usr/$acl_libdirstem"; then rpathdirs="$rpathdirs $dir" fi next= ;; *) next= ;; esac fi done if test "X$rpathdirs" != "X"; then if test -n ""$3""; then dnl libtool is used for linking. Use -R options. for dir in $rpathdirs; do $1="${$1}${$1:+ }-R$dir" done else dnl The linker is used for linking directly. if test -n "$hardcode_libdir_separator"; then dnl Weird platform: only the last -rpath option counts, the user dnl must pass all path elements in one option. alldirs= for dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" $1="$flag" else dnl The -rpath options are cumulative. for dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$dir" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" $1="${$1}${$1:+ }$flag" done fi fi fi fi fi AC_SUBST([$1]) ]) # lib-ld.m4 serial 3 (gettext-0.13) dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Subroutines of libtool.m4, dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision dnl with libtool.m4. dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. AC_DEFUN([AC_LIB_PROG_LD_GNU], [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, [# I'd rather use --version here, but apparently some GNU ld's only accept -v. case `$LD -v 2>&1 conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by GCC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]* | [A-Za-z]:[\\/]*)] [re_direlt='/[^/][^/]*/\.\./'] # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(acl_cv_path_LD, [if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in *GNU* | *'with BFD'*) test "$with_gnu_ld" != no && break ;; *) test "$with_gnu_ld" != yes && break ;; esac fi done IFS="$ac_save_ifs" else acl_cv_path_LD="$LD" # Let the user override the test with a path. fi]) LD="$acl_cv_path_LD" if test -n "$LD"; then AC_MSG_RESULT($LD) else AC_MSG_RESULT(no) fi test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) AC_LIB_PROG_LD_GNU ]) # Do all the work for Automake. This macro actually does too much -- # some checks are only needed if your package does certain things. # But this isn't really a big deal. # serial 1 dnl Usage: dnl AM_INIT_AUTOMAKE(package,version, [no-define]) AC_DEFUN([AM_INIT_AUTOMAKE], [AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL]) PACKAGE=[$1] AC_SUBST(PACKAGE) VERSION=[$2] AC_SUBST(VERSION) dnl test to see if srcdir already configured if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi ifelse([$3],, AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])) AC_REQUIRE([AM_SANITY_CHECK]) AC_REQUIRE([AC_ARG_PROGRAM]) dnl FIXME This is truly gross. missing_dir=`cd $ac_aux_dir && pwd` AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}, $missing_dir) AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}, $missing_dir) AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir) AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir) AC_REQUIRE([AC_PROG_MAKE_SET])]) # Copyright 2002 Free Software Foundation, Inc. # 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; either version 2, or (at your option) # any later version. # 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. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.4"]) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION so it can be traced. # This function is AC_REQUIREd by AC_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.4-p6])]) # # Check to make sure that the build environment is sane. # AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftestfile # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null` if test "[$]*" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftestfile` fi if test "[$]*" != "X $srcdir/configure conftestfile" \ && test "[$]*" != "X conftestfile $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi test "[$]2" = conftestfile ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi rm -f conftest* AC_MSG_RESULT(yes)]) dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY) dnl The program must properly implement --version. AC_DEFUN([AM_MISSING_PROG], [AC_MSG_CHECKING(for working $2) # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. if ($2 --version) < /dev/null > /dev/null 2>&1; then $1=$2 AC_MSG_RESULT(found) else $1="$3/missing $2" AC_MSG_RESULT(missing) fi AC_SUBST($1)]) # Like AC_CONFIG_HEADER, but automatically create stamp file. AC_DEFUN([AM_CONFIG_HEADER], [AC_PREREQ([2.12]) AC_CONFIG_HEADER([$1]) dnl When config.status generates a header, we must update the stamp-h file. dnl This file resides in the same directory as the config header dnl that is generated. We must strip everything past the first ":", dnl and everything past the last "/". AC_OUTPUT_COMMANDS(changequote(<<,>>)dnl ifelse(patsubst(<<$1>>, <<[^ ]>>, <<>>), <<>>, <>CONFIG_HEADERS" || echo timestamp > patsubst(<<$1>>, <<^\([^:]*/\)?.*>>, <<\1>>)stamp-h<<>>dnl>>, <>; do case " <<$>>CONFIG_HEADERS " in *" <<$>>am_file "*<<)>> echo timestamp > `echo <<$>>am_file | sed -e 's%:.*%%' -e 's%[^/]*$%%'`stamp-h$am_indx ;; esac am_indx=`expr "<<$>>am_indx" + 1` done<<>>dnl>>) changequote([,]))]) # Add --enable-maintainer-mode option to configure. # From Jim Meyering # serial 1 AC_DEFUN([AM_MAINTAINER_MODE], [AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) dnl maintainer-mode is disabled by default AC_ARG_ENABLE(maintainer-mode, [ --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer], USE_MAINTAINER_MODE=$enableval, USE_MAINTAINER_MODE=no) AC_MSG_RESULT($USE_MAINTAINER_MODE) AM_CONDITIONAL(MAINTAINER_MODE, test $USE_MAINTAINER_MODE = yes) MAINT=$MAINTAINER_MODE_TRUE AC_SUBST(MAINT)dnl ] ) # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_SUBST($1_TRUE) AC_SUBST($1_FALSE) if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi]) # serial 1 # @defmac AC_PROG_CC_STDC # @maindex PROG_CC_STDC # @ovindex CC # If the C compiler in not in ANSI C mode by default, try to add an option # to output variable @code{CC} to make it so. This macro tries various # options that select ANSI C on some system or another. It considers the # compiler to be in ANSI C mode if it handles function prototypes correctly. # # If you use this macro, you should check after calling it whether the C # compiler has been set to accept ANSI C; if not, the shell variable # @code{am_cv_prog_cc_stdc} is set to @samp{no}. If you wrote your source # code in ANSI C, you can make an un-ANSIfied copy of it by using the # program @code{ansi2knr}, which comes with Ghostscript. # @end defmac AC_DEFUN([AM_PROG_CC_STDC], [AC_REQUIRE([AC_PROG_CC]) AC_BEFORE([$0], [AC_C_INLINE]) AC_BEFORE([$0], [AC_C_CONST]) dnl Force this before AC_PROG_CPP. Some cpp's, eg on HPUX, require dnl a magic option to avoid problems with ANSI preprocessor commands dnl like #elif. dnl FIXME: can't do this because then AC_AIX won't work due to a dnl circular dependency. dnl AC_BEFORE([$0], [AC_PROG_CPP]) AC_MSG_CHECKING(for ${CC-cc} option to accept ANSI C) AC_CACHE_VAL(am_cv_prog_cc_stdc, [am_cv_prog_cc_stdc=no ac_save_CC="$CC" # Don't try gcc -ansi; that turns off useful extensions and # breaks some systems' header files. # AIX -qlanglvl=ansi # Ultrix and OSF/1 -std1 # HP-UX -Aa -D_HPUX_SOURCE # SVR4 -Xc -D__EXTENSIONS__ for ac_arg in "" -qlanglvl=ansi -std1 "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" AC_TRY_COMPILE( [#include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; ], [ return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ], [am_cv_prog_cc_stdc="$ac_arg"; break]) done CC="$ac_save_CC" ]) if test -z "$am_cv_prog_cc_stdc"; then AC_MSG_RESULT([none needed]) else AC_MSG_RESULT($am_cv_prog_cc_stdc) fi case "x$am_cv_prog_cc_stdc" in x|xno) ;; *) CC="$CC $am_cv_prog_cc_stdc" ;; esac ]) # pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- # # Copyright © 2004 Scott James Remnant . # # 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; either version 2 of the License, or # (at your option) any later version. # # 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. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # PKG_PROG_PKG_CONFIG([MIN-VERSION]) # ---------------------------------- AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_PATH)?$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi[]dnl ])# PKG_PROG_PKG_CONFIG # PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # # Check to see whether a particular set of modules exists. Similar # to PKG_CHECK_MODULES(), but does not set variables or print errors. # # # Similar to PKG_CHECK_MODULES, make sure that the first instance of # this or PKG_CHECK_MODULES is called, or make sure to call # PKG_CHECK_EXISTS manually # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_ifval([$2], [$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) # _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) # --------------------------------------------- m4_define([_PKG_CONFIG], [if test -n "$PKG_CONFIG"; then if test -n "$$1"; then pkg_cv_[]$1="$$1" else PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`], [pkg_failed=yes]) fi else pkg_failed=untried fi[]dnl ])# _PKG_CONFIG # _PKG_SHORT_ERRORS_SUPPORTED # ----------------------------- AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]dnl ])# _PKG_SHORT_ERRORS_SUPPORTED # PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], # [ACTION-IF-NOT-FOUND]) # # # Note that if there is a possibility the first call to # PKG_CHECK_MODULES might not happen, you should be sure to include an # explicit call to PKG_PROG_PKG_CONFIG in your configure.ac # # # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $1]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2"` else $1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD ifelse([$4], , [AC_MSG_ERROR(dnl [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT ])], [AC_MSG_RESULT([no]) $4]) elif test $pkg_failed = untried; then ifelse([$4], , [AC_MSG_FAILURE(dnl [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see .])], [$4]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) ifelse([$3], , :, [$3]) fi[]dnl ])# PKG_CHECK_MODULES # Copyright (C) 1995-2002 Free Software Foundation, Inc. # Copyright (C) 2001-2003,2004 Red Hat, Inc. # # This file is free software, distributed under the terms of the GNU # General Public License. As a special exception to the GNU General # Public License, this file may be distributed as part of a program # that contains a configuration script generated by Autoconf, under # the same distribution terms as the rest of that program. # # This file can be copied and used freely without restrictions. It can # be used in projects which are not available under the GNU Public License # but which still want to provide support for the GNU gettext functionality. # # Macro to add for using GNU gettext. # Ulrich Drepper , 1995, 1996 # # Modified to never use included libintl. # Owen Taylor , 12/15/1998 # # Major rework to remove unused code # Owen Taylor , 12/11/2002 # # Added better handling of ALL_LINGUAS from GNU gettext version # written by Bruno Haible, Owen Taylor 5/30/3002 # # Modified to require ngettext # Matthias Clasen 08/06/2004 # # We need this here as well, since someone might use autoconf-2.5x # to configure GLib then an older version to configure a package # using AM_GLIB_GNU_GETTEXT AC_PREREQ(2.53) dnl dnl We go to great lengths to make sure that aclocal won't dnl try to pull in the installed version of these macros dnl when running aclocal in the glib directory. dnl m4_copy([AC_DEFUN],[glib_DEFUN]) m4_copy([AC_REQUIRE],[glib_REQUIRE]) dnl dnl At the end, if we're not within glib, we'll define the public dnl definitions in terms of our private definitions. dnl # GLIB_LC_MESSAGES #-------------------- glib_DEFUN([GLIB_LC_MESSAGES], [AC_CHECK_HEADERS([locale.h]) if test $ac_cv_header_locale_h = yes; then AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, [AC_TRY_LINK([#include ], [return LC_MESSAGES], am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) if test $am_cv_val_LC_MESSAGES = yes; then AC_DEFINE(HAVE_LC_MESSAGES, 1, [Define if your file defines LC_MESSAGES.]) fi fi]) # GLIB_PATH_PROG_WITH_TEST #---------------------------- dnl GLIB_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) glib_DEFUN([GLIB_PATH_PROG_WITH_TEST], [# Extract the first word of "$2", so it can be a program name with args. set dummy $2; ac_word=[$]2 AC_MSG_CHECKING([for $ac_word]) AC_CACHE_VAL(ac_cv_path_$1, [case "[$]$1" in /*) ac_cv_path_$1="[$]$1" # Let the user override the test with a path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in ifelse([$5], , $PATH, [$5]); do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then if [$3]; then ac_cv_path_$1="$ac_dir/$ac_word" break fi fi done IFS="$ac_save_ifs" dnl If no 4th arg is given, leave the cache variable unset, dnl so AC_PATH_PROGS will keep looking. ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" ])dnl ;; esac])dnl $1="$ac_cv_path_$1" if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then AC_MSG_RESULT([$]$1) else AC_MSG_RESULT(no) fi AC_SUBST($1)dnl ]) # GLIB_WITH_NLS #----------------- glib_DEFUN([GLIB_WITH_NLS], dnl NLS is obligatory [AC_REQUIRE([AC_CANONICAL_HOST])dnl USE_NLS=yes AC_SUBST(USE_NLS) gt_cv_have_gettext=no CATOBJEXT=NONE XGETTEXT=: INTLLIBS= AC_CHECK_HEADER(libintl.h, [gt_cv_func_dgettext_libintl="no" libintl_extra_libs="" # # First check in libc # AC_CACHE_CHECK([for ngettext in libc], gt_cv_func_ngettext_libc, [AC_TRY_LINK([ #include ], [return !ngettext ("","", 1)], gt_cv_func_ngettext_libc=yes, gt_cv_func_ngettext_libc=no) ]) if test "$gt_cv_func_ngettext_libc" = "yes" ; then AC_CACHE_CHECK([for dgettext in libc], gt_cv_func_dgettext_libc, [AC_TRY_LINK([ #include ], [return !dgettext ("","")], gt_cv_func_dgettext_libc=yes, gt_cv_func_dgettext_libc=no) ]) fi if test "$gt_cv_func_ngettext_libc" = "yes" ; then AC_CHECK_FUNCS(bind_textdomain_codeset) fi # # If we don't have everything we want, check in libintl # if test "$gt_cv_func_dgettext_libc" != "yes" \ || test "$gt_cv_func_ngettext_libc" != "yes" \ || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then AC_CHECK_LIB(intl, bindtextdomain, [AC_CHECK_LIB(intl, ngettext, [AC_CHECK_LIB(intl, dgettext, gt_cv_func_dgettext_libintl=yes)])]) if test "$gt_cv_func_dgettext_libintl" != "yes" ; then AC_MSG_CHECKING([if -liconv is needed to use gettext]) AC_MSG_RESULT([]) AC_CHECK_LIB(intl, ngettext, [AC_CHECK_LIB(intl, dcgettext, [gt_cv_func_dgettext_libintl=yes libintl_extra_libs=-liconv], :,-liconv)], :,-liconv) fi # # If we found libintl, then check in it for bind_textdomain_codeset(); # we'll prefer libc if neither have bind_textdomain_codeset(), # and both have dgettext and ngettext # if test "$gt_cv_func_dgettext_libintl" = "yes" ; then glib_save_LIBS="$LIBS" LIBS="$LIBS -lintl $libintl_extra_libs" unset ac_cv_func_bind_textdomain_codeset AC_CHECK_FUNCS(bind_textdomain_codeset) LIBS="$glib_save_LIBS" if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then gt_cv_func_dgettext_libc=no else if test "$gt_cv_func_dgettext_libc" = "yes" \ && test "$gt_cv_func_ngettext_libc" = "yes"; then gt_cv_func_dgettext_libintl=no fi fi fi fi if test "$gt_cv_func_dgettext_libc" = "yes" \ || test "$gt_cv_func_dgettext_libintl" = "yes"; then gt_cv_have_gettext=yes fi if test "$gt_cv_func_dgettext_libintl" = "yes"; then INTLLIBS="-lintl $libintl_extra_libs" fi if test "$gt_cv_have_gettext" = "yes"; then AC_DEFINE(HAVE_GETTEXT,1, [Define if the GNU gettext() function is already present or preinstalled.]) GLIB_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl if test "$MSGFMT" != "no"; then glib_save_LIBS="$LIBS" LIBS="$LIBS $INTLLIBS" AC_CHECK_FUNCS(dcgettext) MSGFMT_OPTS= AC_MSG_CHECKING([if msgfmt accepts -c]) GLIB_RUN_PROG([msgfmt -c -o /dev/null],[ msgid "" msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Project-Id-Version: test 1.0\n" "PO-Revision-Date: 2007-02-15 12:01+0100\n" "Last-Translator: test \n" "Language-Team: C \n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" ], [MSGFMT_OPTS=-c; AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no])]) AC_SUBST(MSGFMT_OPTS) AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) GLIB_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) AC_TRY_LINK(, [extern int _nl_msg_cat_cntr; return _nl_msg_cat_cntr], [CATOBJEXT=.gmo DATADIRNAME=share], [case $host in *-*-solaris*) dnl On Solaris, if bind_textdomain_codeset is in libc, dnl GNU format message catalog is always supported, dnl since both are added to the libc all together. dnl Hence, we'd like to go with DATADIRNAME=share and dnl and CATOBJEXT=.gmo in this case. AC_CHECK_FUNC(bind_textdomain_codeset, [CATOBJEXT=.gmo DATADIRNAME=share], [CATOBJEXT=.mo DATADIRNAME=lib]) ;; *) CATOBJEXT=.mo DATADIRNAME=lib ;; esac]) LIBS="$glib_save_LIBS" INSTOBJEXT=.mo else gt_cv_have_gettext=no fi fi ]) if test "$gt_cv_have_gettext" = "yes" ; then AC_DEFINE(ENABLE_NLS, 1, [always defined to indicate that i18n is enabled]) fi dnl Test whether we really found GNU xgettext. if test "$XGETTEXT" != ":"; then dnl If it is not GNU xgettext we define it as : so that the dnl Makefiles still can work. if $XGETTEXT --omit-header /dev/null 2> /dev/null; then : ; else AC_MSG_RESULT( [found xgettext program is not GNU xgettext; ignore it]) XGETTEXT=":" fi fi # We need to process the po/ directory. POSUB=po AC_OUTPUT_COMMANDS( [case "$CONFIG_FILES" in *po/Makefile.in*) sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile esac]) dnl These rules are solely for the distribution goal. While doing this dnl we only have to keep exactly one list of the available catalogs dnl in configure.in. for lang in $ALL_LINGUAS; do GMOFILES="$GMOFILES $lang.gmo" POFILES="$POFILES $lang.po" done dnl Make all variables we use known to autoconf. AC_SUBST(CATALOGS) AC_SUBST(CATOBJEXT) AC_SUBST(DATADIRNAME) AC_SUBST(GMOFILES) AC_SUBST(INSTOBJEXT) AC_SUBST(INTLLIBS) AC_SUBST(PO_IN_DATADIR_TRUE) AC_SUBST(PO_IN_DATADIR_FALSE) AC_SUBST(POFILES) AC_SUBST(POSUB) ]) # AM_GLIB_GNU_GETTEXT # ------------------- # Do checks necessary for use of gettext. If a suitable implementation # of gettext is found in either in libintl or in the C library, # it will set INTLLIBS to the libraries needed for use of gettext # and AC_DEFINE() HAVE_GETTEXT and ENABLE_NLS. (The shell variable # gt_cv_have_gettext will be set to "yes".) It will also call AC_SUBST() # on various variables needed by the Makefile.in.in installed by # glib-gettextize. dnl glib_DEFUN([GLIB_GNU_GETTEXT], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_HEADER_STDC])dnl GLIB_LC_MESSAGES GLIB_WITH_NLS if test "$gt_cv_have_gettext" = "yes"; then if test "x$ALL_LINGUAS" = "x"; then LINGUAS= else AC_MSG_CHECKING(for catalogs to be installed) NEW_LINGUAS= for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then NEW_LINGUAS="$NEW_LINGUAS $presentlang" fi done LINGUAS=$NEW_LINGUAS AC_MSG_RESULT($LINGUAS) fi dnl Construct list of names of catalog files to be constructed. if test -n "$LINGUAS"; then for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done fi fi dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly dnl find the mkinstalldirs script in another subdir but ($top_srcdir). dnl Try to locate is. MKINSTALLDIRS= if test -n "$ac_aux_dir"; then MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" fi if test -z "$MKINSTALLDIRS"; then MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" fi AC_SUBST(MKINSTALLDIRS) dnl Generate list of files to be processed by xgettext which will dnl be included in po/Makefile. test -d po || mkdir po if test "x$srcdir" != "x."; then if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then posrcprefix="$srcdir/" else posrcprefix="../$srcdir/" fi else posrcprefix="../" fi rm -f po/POTFILES sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \ < $srcdir/po/POTFILES.in > po/POTFILES ]) # AM_GLIB_DEFINE_LOCALEDIR(VARIABLE) # ------------------------------- # Define VARIABLE to the location where catalog files will # be installed by po/Makefile. glib_DEFUN([GLIB_DEFINE_LOCALEDIR], [glib_REQUIRE([GLIB_GNU_GETTEXT])dnl glib_save_prefix="$prefix" glib_save_exec_prefix="$exec_prefix" glib_save_datarootdir="$datarootdir" test "x$prefix" = xNONE && prefix=$ac_default_prefix test "x$exec_prefix" = xNONE && exec_prefix=$prefix datarootdir=`eval echo "${datarootdir}"` if test "x$CATOBJEXT" = "x.mo" ; then localedir=`eval echo "${libdir}/locale"` else localedir=`eval echo "${datadir}/locale"` fi prefix="$glib_save_prefix" exec_prefix="$glib_save_exec_prefix" datarootdir="$glib_save_datarootdir" AC_DEFINE_UNQUOTED($1, "$localedir", [Define the location where the catalogs will be installed]) ]) dnl dnl Now the definitions that aclocal will find dnl ifdef(glib_configure_in,[],[ AC_DEFUN([AM_GLIB_GNU_GETTEXT],[GLIB_GNU_GETTEXT($@)]) AC_DEFUN([AM_GLIB_DEFINE_LOCALEDIR],[GLIB_DEFINE_LOCALEDIR($@)]) ])dnl # GLIB_RUN_PROG(PROGRAM, TEST-FILE, [ACTION-IF-PASS], [ACTION-IF-FAIL]) # # Create a temporary file with TEST-FILE as its contents and pass the # file name to PROGRAM. Perform ACTION-IF-PASS if PROGRAM exits with # 0 and perform ACTION-IF-FAIL for any other exit status. AC_DEFUN([GLIB_RUN_PROG], [cat >conftest.foo <<_ACEOF $2 _ACEOF if AC_RUN_LOG([$1 conftest.foo]); then m4_ifval([$3], [$3], [:]) m4_ifvaln([$4], [else $4])dnl echo "$as_me: failed input was:" >&AS_MESSAGE_LOG_FD sed 's/^/| /' conftest.foo >&AS_MESSAGE_LOG_FD fi]) keytouch-editor-3.2.0-beta/mkinstalldirs0000755000175000017500000000370410677476774017761 0ustar marvinmarvin#! /bin/sh # mkinstalldirs --- make directory hierarchy # Author: Noah Friedman # Created: 1993-05-16 # Public domain errstatus=0 dirmode="" usage="\ Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..." # process command line arguments while test $# -gt 0 ; do case $1 in -h | --help | --h*) # -h for help echo "$usage" 1>&2 exit 0 ;; -m) # -m PERM arg shift test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } dirmode=$1 shift ;; --) # stop option processing shift break ;; -*) # unknown option echo "$usage" 1>&2 exit 1 ;; *) # first non-opt arg break ;; esac done for file do if test -d "$file"; then shift else break fi done case $# in 0) exit 0 ;; esac case $dirmode in '') if mkdir -p -- . 2>/dev/null; then echo "mkdir -p -- $*" exec mkdir -p -- "$@" fi ;; *) if mkdir -m "$dirmode" -p -- . 2>/dev/null; then echo "mkdir -m $dirmode -p -- $*" exec mkdir -m "$dirmode" -p -- "$@" fi ;; esac for file do set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` shift pathcomp= for d do pathcomp="$pathcomp$d" case $pathcomp in -*) pathcomp=./$pathcomp ;; esac if test ! -d "$pathcomp"; then echo "mkdir $pathcomp" mkdir "$pathcomp" || lasterr=$? if test ! -d "$pathcomp"; then errstatus=$lasterr else if test ! -z "$dirmode"; then echo "chmod $dirmode $pathcomp" lasterr="" chmod "$dirmode" "$pathcomp" || lasterr=$? if test ! -z "$lasterr"; then errstatus=$lasterr fi fi fi fi pathcomp="$pathcomp/" done done exit $errstatus # Local Variables: # mode: shell-script # sh-indentation: 2 # End: # mkinstalldirs ends here keytouch-editor-3.2.0-beta/config.guess0000755000175000017500000012605110407025037017441 0ustar marvinmarvin#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. timestamp='2006-02-23' # This file 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; either version 2 of the License, or # (at your option) any later version. # # 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. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Per Bothner . # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # The plan is that this can be called by configure scripts if you # don't specify an explicit build system type. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep __ELF__ >/dev/null then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerppc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm:riscos:*:*|arm:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:SunOS:5.*:*) echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[45]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep __LP64__ >/dev/null then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) case ${UNAME_MACHINE} in pc98) echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; i*:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:MSYS_NT-*:*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; x86:Interix*:[345]*) echo i586-pc-interix${UNAME_RELEASE} exit ;; EM64T:Interix*:[345]*) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; arm*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) echo cris-axis-linux-gnu exit ;; crisv32:Linux:*:*) echo crisv32-axis-linux-gnu exit ;; frv:Linux:*:*) echo frv-unknown-linux-gnu exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; mips:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips #undef mipsel #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mipsel #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips #else CPU= #endif #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^CPU/{ s: ::g p }'`" test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips64 #undef mips64el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mips64el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips64 #else CPU= #endif #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^CPU/{ s: ::g p }'`" test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or32:Linux:*:*) echo or32-unknown-linux-gnu exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu exit ;; i*86:Linux:*:*) # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. # Set LC_ALL=C to ensure ld outputs messages in English. ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ | sed -ne '/supported targets:/!d s/[ ][ ]*/ /g s/.*supported targets: *// s/ .*// p'` case "$ld_supported_targets" in elf32-i386) TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ;; a.out-i386-linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" exit ;; coff-i386) echo "${UNAME_MACHINE}-pc-linux-gnucoff" exit ;; "") # Either a pre-BFD a.out linker (linux-gnuoldld) or # one that does not give us useful --help. echo "${UNAME_MACHINE}-pc-linux-gnuoldld" exit ;; esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include #ifdef __ELF__ # ifdef __GLIBC__ # if __GLIBC__ >= 2 LIBC=gnu # else LIBC=gnulibc1 # endif # else LIBC=gnulibc1 # endif #else #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__sun) LIBC=gnu #else LIBC=gnuaout #endif #endif #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^LIBC/{ s: ::g p }'`" test x"${LIBC}" != x && { echo "${UNAME_MACHINE}-pc-linux-${LIBC}" exit } test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i386. echo i386-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: keytouch-editor-3.2.0-beta/config.h.in0000640000175000017500000000362210373672500017143 0ustar marvinmarvin/* config.h.in. Generated from configure.in by autoheader. */ /* always defined to indicate that i18n is enabled */ #undef ENABLE_NLS /* Gettext package. */ #undef GETTEXT_PACKAGE /* Define to 1 if you have the `bind_textdomain_codeset' function. */ #undef HAVE_BIND_TEXTDOMAIN_CODESET /* Define to 1 if you have the `dcgettext' function. */ #undef HAVE_DCGETTEXT /* Define if the GNU gettext() function is already present or preinstalled. */ #undef HAVE_GETTEXT /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define if your file defines LC_MESSAGES. */ #undef HAVE_LC_MESSAGES /* Define to 1 if you have the header file. */ #undef HAVE_LOCALE_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Version number of package */ #undef VERSION keytouch-editor-3.2.0-beta/install-sh0000751000175000017500000001273610305620366017130 0ustar marvinmarvin#!/bin/sh # # install - install a program, script, or datafile # This comes from X11R5 (mit/util/scripts/install.sh). # # Copyright 1991 by the Massachusetts Institute of Technology # # Permission to use, copy, modify, distribute, and sell this software and its # documentation for any purpose is hereby granted without fee, provided that # the above copyright notice appear in all copies and that both that # copyright notice and this permission notice appear in supporting # documentation, and that the name of M.I.T. not be used in advertising or # publicity pertaining to distribution of the software without specific, # written prior permission. M.I.T. makes no representations about the # suitability of this software for any purpose. It is provided "as is" # without express or implied warranty. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. It can only install one file at a time, a restriction # shared with many OS's install programs. # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" # put in absolute paths if you don't have them in your path; or use env. vars. mvprog="${MVPROG-mv}" cpprog="${CPPROG-cp}" chmodprog="${CHMODPROG-chmod}" chownprog="${CHOWNPROG-chown}" chgrpprog="${CHGRPPROG-chgrp}" stripprog="${STRIPPROG-strip}" rmprog="${RMPROG-rm}" mkdirprog="${MKDIRPROG-mkdir}" transformbasename="" transform_arg="" instcmd="$mvprog" chmodcmd="$chmodprog 0755" chowncmd="" chgrpcmd="" stripcmd="" rmcmd="$rmprog -f" mvcmd="$mvprog" src="" dst="" dir_arg="" while [ x"$1" != x ]; do case $1 in -c) instcmd="$cpprog" shift continue;; -d) dir_arg=true shift continue;; -m) chmodcmd="$chmodprog $2" shift shift continue;; -o) chowncmd="$chownprog $2" shift shift continue;; -g) chgrpcmd="$chgrpprog $2" shift shift continue;; -s) stripcmd="$stripprog" shift continue;; -t=*) transformarg=`echo $1 | sed 's/-t=//'` shift continue;; -b=*) transformbasename=`echo $1 | sed 's/-b=//'` shift continue;; *) if [ x"$src" = x ] then src=$1 else # this colon is to work around a 386BSD /bin/sh bug : dst=$1 fi shift continue;; esac done if [ x"$src" = x ] then echo "install: no input file specified" exit 1 else true fi if [ x"$dir_arg" != x ]; then dst=$src src="" if [ -d $dst ]; then instcmd=: chmodcmd="" else instcmd=mkdir fi else # Waiting for this to be detected by the "$instcmd $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if [ -f $src -o -d $src ] then true else echo "install: $src does not exist" exit 1 fi if [ x"$dst" = x ] then echo "install: no destination specified" exit 1 else true fi # If destination is a directory, append the input filename; if your system # does not like double slashes in filenames, you may need to add some logic if [ -d $dst ] then dst="$dst"/`basename $src` else true fi fi ## this sed command emulates the dirname command dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` # Make sure that the destination directory exists. # this part is taken from Noah Friedman's mkinstalldirs script # Skip lots of stat calls in the usual case. if [ ! -d "$dstdir" ]; then defaultIFS=' ' IFS="${IFS-${defaultIFS}}" oIFS="${IFS}" # Some sh's can't handle IFS=/ for some reason. IFS='%' set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` IFS="${oIFS}" pathcomp='' while [ $# -ne 0 ] ; do pathcomp="${pathcomp}${1}" shift if [ ! -d "${pathcomp}" ] ; then $mkdirprog "${pathcomp}" else true fi pathcomp="${pathcomp}/" done fi if [ x"$dir_arg" != x ] then $doit $instcmd $dst && if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi else # If we're going to rename the final executable, determine the name now. if [ x"$transformarg" = x ] then dstfile=`basename $dst` else dstfile=`basename $dst $transformbasename | sed $transformarg`$transformbasename fi # don't allow the sed command to completely eliminate the filename if [ x"$dstfile" = x ] then dstfile=`basename $dst` else true fi # Make a temp file name in the proper directory. dsttmp=$dstdir/#inst.$$# # Move or copy the file name to the temp name $doit $instcmd $src $dsttmp && trap "rm -f ${dsttmp}" 0 && # and set any options; do chmod last to preserve setuid bits # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $instcmd $src $dsttmp" command. if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && # Now rename the file to the real destination. $doit $rmcmd -f $dstdir/$dstfile && $doit $mvcmd $dsttmp $dstdir/$dstfile fi && exit 0 keytouch-editor-3.2.0-beta/COPYING0000640000175000017500000004311010305620765016150 0ustar marvinmarvin GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 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; either version 2 of the License, or (at your option) any later version. 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. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. keytouch-editor-3.2.0-beta/depcomp0000640000175000017500000003554510350062125016472 0ustar marvinmarvin#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2004-05-31.23 # Copyright (C) 1999, 2000, 2003, 2004 Free Software Foundation, Inc. # 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; either version 2, or (at your option) # any later version. # 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. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try \`$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by `PROGRAMS ARGS'. object Object file output by `PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputing dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit 0 ;; -v | --v*) echo "depcomp $scriptversion" exit 0 ;; esac if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ## The second -e expression handles DOS-style file names with drive letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the `deleted header file' problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. tr ' ' ' ' < "$tmpdepfile" | ## Some versions of gcc put a space before the `:'. On the theory ## that the space means something, we add a space to the output as ## well. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like `#:fec' to the end of the # dependency line. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr ' ' ' ' >> $depfile echo >> $depfile # The second pass generates a dummy entry for each header file. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> $depfile else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts `$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` tmpdepfile="$stripped.u" if test "$libtool" = yes; then "$@" -Wc,-M else "$@" -M fi stat=$? if test -f "$tmpdepfile"; then : else stripped=`echo "$stripped" | sed 's,^.*/,,'` tmpdepfile="$stripped.u" fi if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi if test -f "$tmpdepfile"; then outname="$stripped.o" # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; icc) # Intel's C compiler understands `-MD -MF file'. However on # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c # ICC 7.0 will fill foo.d with something like # foo.o: sub/foo.c # foo.o: sub/foo.h # which is wrong. We want: # sub/foo.o: sub/foo.c # sub/foo.o: sub/foo.h # sub/foo.c: # sub/foo.h: # ICC 7.1 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using \ : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in `foo.d' instead, so we check for that too. # Subdirectories are respected. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then # Dependencies are output in .lo.d with libtool 1.4. # With libtool 1.5 they are output both in $dir.libs/$base.o.d # and in $dir.libs/$base.o.d and $dir$base.o.d. We process the # latter, because the former will be cleaned when $dir.libs is # erased. tmpdepfile1="$dir.libs/$base.lo.d" tmpdepfile2="$dir$base.o.d" tmpdepfile3="$dir.libs/$base.d" "$@" -Wc,-MD else tmpdepfile1="$dir$base.o.d" tmpdepfile2="$dir$base.d" tmpdepfile3="$dir$base.d" "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi if test -f "$tmpdepfile1"; then tmpdepfile="$tmpdepfile1" elif test -f "$tmpdepfile2"; then tmpdepfile="$tmpdepfile2" else tmpdepfile="$tmpdepfile3" fi if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for `:' # in the target name. This is to cope with DOS-style filenames: # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. "$@" $dashmflag | sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tr ' ' ' ' < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # X makedepend shift cleared=no for arg in "$@"; do case $cleared in no) set ""; shift cleared=yes ;; esac case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix="`echo $object | sed 's/^.*\././'`" touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' ' ' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E | sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o, # because we must use -o when running libtool. "$@" || exit $? IFS=" " for arg do case "$arg" in "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" echo " " >> "$depfile" . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-end: "$" # End: keytouch-editor-3.2.0-beta/README0000644000175000017500000000000010407021112015750 0ustar marvinmarvinkeytouch-editor-3.2.0-beta/missing0000644000175000017500000000000010407021112016464 0ustar marvinmarvinkeytouch-editor-3.2.0-beta/Makefile.in0000644000175000017500000003023310677476776017217 0ustar marvinmarvin# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ sbindir = @sbindir@ libexecdir = @libexecdir@ datadir = @datadir@ sysconfdir = @sysconfdir@ sharedstatedir = @sharedstatedir@ localstatedir = @localstatedir@ libdir = @libdir@ infodir = @infodir@ mandir = @mandir@ includedir = @includedir@ oldincludedir = /usr/include DESTDIR = pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = . ACLOCAL = @ACLOCAL@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ transform = @program_transform_name@ NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ DATADIRNAME = @DATADIRNAME@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ HAVE_LIB = @HAVE_LIB@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ LIB = @LIB@ LTLIB = @LTLIB@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT_OPTS = @MSGFMT_OPTS@ PACKAGE = @PACKAGE@ PACKAGE_CFLAGS = @PACKAGE_CFLAGS@ PACKAGE_LIBS = @PACKAGE_LIBS@ PKG_CONFIG = @PKG_CONFIG@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ SUBDIRS = mxml string_to_keycode src po EXTRA_DIST = autogen.sh keytouch-editor.glade keytouch-editor.gladep ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = DIST_COMMON = README ./stamp-h.in AUTHORS COPYING ChangeLog INSTALL \ Makefile.am Makefile.in NEWS aclocal.m4 config.guess config.h.in \ config.sub configure configure.in install-sh missing mkinstalldirs DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) TAR = tar GZIP_ENV = --best all: all-redirect .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) cd $(top_builddir) \ && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.in cd $(srcdir) && $(ACLOCAL) config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(srcdir)/configure: @MAINTAINER_MODE_TRUE@$(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) cd $(srcdir) && $(AUTOCONF) config.h: stamp-h @if test ! -f $@; then \ rm -f stamp-h; \ $(MAKE) stamp-h; \ else :; fi stamp-h: $(srcdir)/config.h.in $(top_builddir)/config.status cd $(top_builddir) \ && CONFIG_FILES= CONFIG_HEADERS=config.h \ $(SHELL) ./config.status @echo timestamp > stamp-h 2> /dev/null $(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@$(srcdir)/stamp-h.in @if test ! -f $@; then \ rm -f $(srcdir)/stamp-h.in; \ $(MAKE) $(srcdir)/stamp-h.in; \ else :; fi $(srcdir)/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOHEADER) @echo timestamp > $(srcdir)/stamp-h.in 2> /dev/null mostlyclean-hdr: clean-hdr: distclean-hdr: -rm -f config.h maintainer-clean-hdr: # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. @SET_MAKE@ all-recursive install-data-recursive install-exec-recursive \ installdirs-recursive install-recursive uninstall-recursive \ check-recursive installcheck-recursive info-recursive dvi-recursive: @set fnord $(MAKEFLAGS); amf=$$2; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: @set fnord $(MAKEFLAGS); amf=$$2; \ dot_seen=no; \ rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \ rev="$$subdir $$rev"; \ test "$$subdir" != "." || dot_seen=yes; \ done; \ test "$$dot_seen" = "no" && rev=". $$rev"; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS)'; \ unique=`for i in $$list; do echo $$i; done | \ awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ here=`pwd` && cd $(srcdir) \ && mkid -f$$here/ID $$unique $(LISP) TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS)'; \ unique=`for i in $$list; do echo $$i; done | \ awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(ETAGS_ARGS)config.h.in$$unique$(LISP)$$tags" \ || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags config.h.in $$unique $(LISP)) mostlyclean-tags: clean-tags: distclean-tags: -rm -f TAGS ID maintainer-clean-tags: distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist -rm -rf $(distdir) GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz mkdir $(distdir)/=build mkdir $(distdir)/=inst dc_install_base=`cd $(distdir)/=inst && pwd`; \ cd $(distdir)/=build \ && ../configure --srcdir=.. --prefix=$$dc_install_base \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) dist -rm -rf $(distdir) @banner="$(distdir).tar.gz is ready for distribution"; \ dashes=`echo "$$banner" | sed s/./=/g`; \ echo "$$dashes"; \ echo "$$banner"; \ echo "$$dashes" dist: distdir -chmod -R a+r $(distdir) GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) -rm -rf $(distdir) dist-all: distdir -chmod -R a+r $(distdir) GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) -rm -rf $(distdir) distdir: $(DISTFILES) -rm -rf $(distdir) mkdir $(distdir) -chmod 777 $(distdir) here=`cd $(top_builddir) && pwd`; \ top_distdir=`cd $(distdir) && pwd`; \ distdir=`cd $(distdir) && pwd`; \ cd $(top_srcdir) \ && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu Makefile @for file in $(DISTFILES); do \ d=$(srcdir); \ if test -d $$d/$$file; then \ cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done for subdir in $(SUBDIRS); do \ if test "$$subdir" = .; then :; else \ test -d $(distdir)/$$subdir \ || mkdir $(distdir)/$$subdir \ || exit 1; \ chmod 777 $(distdir)/$$subdir; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-hook info-am: info: info-recursive dvi-am: dvi: dvi-recursive check-am: all-am check: check-recursive installcheck-am: installcheck: installcheck-recursive all-recursive-am: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive install-exec-am: install-exec: install-exec-recursive install-data-am: install-data-local install-data: install-data-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am install: install-recursive uninstall-am: uninstall: uninstall-recursive all-am: Makefile config.h all-redirect: all-recursive-am install-strip: $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install installdirs: installdirs-recursive installdirs-am: mostlyclean-generic: clean-generic: distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: mostlyclean-am: mostlyclean-hdr mostlyclean-tags mostlyclean-generic mostlyclean: mostlyclean-recursive clean-am: clean-hdr clean-tags clean-generic mostlyclean-am clean: clean-recursive distclean-am: distclean-hdr distclean-tags distclean-generic clean-am distclean: distclean-recursive -rm -f config.status maintainer-clean-am: maintainer-clean-hdr maintainer-clean-tags \ maintainer-clean-generic distclean-am @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-recursive -rm -f config.status .PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \ install-data-recursive uninstall-data-recursive install-exec-recursive \ uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \ all-recursive check-recursive installcheck-recursive info-recursive \ dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \ maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ distclean-tags clean-tags maintainer-clean-tags distdir info-am info \ dvi-am dvi check check-am installcheck-am installcheck all-recursive-am \ install-exec-am install-exec install-data-local install-data-am \ install-data install-am install uninstall-am uninstall all-redirect \ all-am all installdirs-am installdirs mostlyclean-generic \ distclean-generic clean-generic maintainer-clean-generic clean \ mostlyclean distclean maintainer-clean install-data-local: @$(NORMAL_INSTALL) cp ./keytouch-editor $(DESTDIR)$(bindir) chmod 755 $(DESTDIR)$(bindir)/keytouch-editor if test -d $(srcdir)/pixmaps; then \ $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/pixmaps; \ for pixmap in $(srcdir)/pixmaps/*; do \ if test -f $$pixmap; then \ $(INSTALL_DATA) $$pixmap $(DESTDIR)$(pkgdatadir)/pixmaps; \ fi \ done \ fi dist-hook: if test -d pixmaps; then \ mkdir $(distdir)/pixmaps; \ for pixmap in pixmaps/*; do \ if test -f $$pixmap; then \ cp -p $$pixmap $(distdir)/pixmaps; \ fi \ done \ fi # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: keytouch-editor-3.2.0-beta/configure0000755000175000017500000063720410677476776017074 0ustar marvinmarvin#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.61. # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # PATH needs CR # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) as_nl=' ' IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 { (exit 1); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # CDPATH. $as_unset CDPATH if test "x$CONFIG_SHELL" = x; then if (eval ":") 2>/dev/null; then as_have_required=yes else as_have_required=no fi if test $as_have_required = yes && (eval ": (as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=\$LINENO as_lineno_2=\$LINENO test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } ") 2> /dev/null; then : else as_candidate_shells= as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. case $as_dir in /*) for as_base in sh bash ksh sh5; do as_candidate_shells="$as_candidate_shells $as_dir/$as_base" done;; esac done IFS=$as_save_IFS for as_shell in $as_candidate_shells $SHELL; do # Try only shells that exist, to save several forks. if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { ("$as_shell") 2> /dev/null <<\_ASEOF if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi : _ASEOF }; then CONFIG_SHELL=$as_shell as_have_required=yes if { "$as_shell" 2> /dev/null <<\_ASEOF if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi : (as_func_return () { (exit $1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = "$1" ); then : else exitcode=1 echo positional parameters were not saved. fi test $exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } _ASEOF }; then break fi fi done if test "x$CONFIG_SHELL" != x; then for as_var in BASH_ENV ENV do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done export CONFIG_SHELL exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} fi if test $as_have_required = no; then echo This script requires a shell more modern than all the echo shells that I found on your system. Please install a echo modern shell, or manually run the script under such a echo shell if you do have one. { (exit 1); exit 1; } fi fi fi (eval "as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0") || { echo No shell found that supports shell functions. echo Please tell autoconf@gnu.org about your system, echo including any error possibly output before this echo message } as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, and appends # trailing '-' during substitution so that $LINENO is not a special # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # scripts with optimization help from Paolo Bonzini. Blame Lee # E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir fi echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME= PACKAGE_TARNAME= PACKAGE_VERSION= PACKAGE_STRING= PACKAGE_BUGREPORT= ac_unique_file="configure.in" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datarootdir datadir sysconfdir sharedstatedir localstatedir includedir oldincludedir docdir infodir htmldir dvidir pdfdir psdir libdir localedir mandir DEFS ECHO_C ECHO_N ECHO_T LIBS build_alias host_alias target_alias INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO SET_MAKE MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP GREP EGREP PKG_CONFIG PACKAGE_CFLAGS PACKAGE_LIBS GETTEXT_PACKAGE build build_cpu build_vendor build_os host host_cpu host_vendor host_os USE_NLS MSGFMT MSGFMT_OPTS GMSGFMT XGETTEXT CATALOGS CATOBJEXT DATADIRNAME GMOFILES INSTOBJEXT INTLLIBS PO_IN_DATADIR_TRUE PO_IN_DATADIR_FALSE POFILES POSUB MKINSTALLDIRS LIBOBJS LTLIBOBJS' ac_subst_files='' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP PKG_CONFIG PACKAGE_CFLAGS PACKAGE_LIBS' # Initialize some variables set by options. ac_init_help= ac_init_version=false # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` eval enable_$ac_feature=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` eval enable_$ac_feature=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package | sed 's/[-.]/_/g'` eval with_$ac_package=\$ac_optarg ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package | sed 's/[-.]/_/g'` eval with_$ac_package=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) { echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` { echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi # Be sure to have absolute directory names. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; } done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || { echo "$as_me: error: Working directory cannot be determined" >&2 { (exit 1); exit 1; }; } test "X$ac_ls_di" = "X$ac_pwd_ls_di" || { echo "$as_me: error: pwd does not report name of working directory" >&2 { (exit 1); exit 1; }; } # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$0" || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$0" : 'X\(//\)[^/]' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || echo X"$0" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 { (exit 1); exit 1; }; } pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures this package to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then cat <<\_ACEOF Optional Features: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor PKG_CONFIG path to pkg-config utility PACKAGE_CFLAGS C compiler flags for PACKAGE, overriding pkg-config PACKAGE_LIBS linker flags for PACKAGE, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF configure generated by GNU Autoconf 2.61 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by $as_me, which was generated by GNU Autoconf 2.61. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; 2) ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac done done $as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo cat <<\_ASBOX ## ---------------- ## ## Cache variables. ## ## ---------------- ## _ASBOX echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( *) $as_unset $ac_var ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo cat <<\_ASBOX ## ----------------- ## ## Output variables. ## ## ----------------- ## _ASBOX echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX ## ------------------- ## ## File substitutions. ## ## ------------------- ## _ASBOX echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then cat <<\_ASBOX ## ----------- ## ## confdefs.h. ## ## ----------- ## _ASBOX echo cat confdefs.h echo fi test "$ac_signal" != 0 && echo "$as_me: caught signal $ac_signal" echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. if test -n "$CONFIG_SITE"; then set x "$CONFIG_SITE" elif test "x$prefix" != xNONE; then set x "$prefix/share/config.site" "$prefix/etc/config.site" else set x "$ac_default_prefix/share/config.site" \ "$ac_default_prefix/etc/config.site" fi shift for ac_site_file do if test -r "$ac_site_file"; then { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then { echo "$as_me:$LINENO: loading cache $cache_file" >&5 echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { echo "$as_me:$LINENO: creating cache $cache_file" >&5 echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} ac_cache_corrupted=: fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 echo "$as_me: error: changes in the environment can compromise the build" >&2;} { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu am__api_version="1.4" ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} { (exit 1); exit 1; }; } fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. { echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi done done ;; esac done IFS=$as_save_IFS fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { echo "$as_me:$LINENO: result: $INSTALL" >&5 echo "${ECHO_T}$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { echo "$as_me:$LINENO: checking whether build environment is sane" >&5 echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; } # Just in case sleep 1 echo timestamp > conftestfile # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftestfile` fi if test "$*" != "X $srcdir/configure conftestfile" \ && test "$*" != "X conftestfile $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&5 echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&2;} { (exit 1); exit 1; }; } fi test "$2" = conftestfile ) then # Ok. : else { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! Check your system clock" >&5 echo "$as_me: error: newly created file is older than distributed files! Check your system clock" >&2;} { (exit 1); exit 1; }; } fi rm -f conftest* { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. echo might interpret backslashes. # By default was `s,x,x', remove it if useless. cat <<\_ACEOF >conftest.sed s/[\\$]/&&/g;s/;s,x,x,$// _ACEOF program_transform_name=`echo $program_transform_name | sed -f conftest.sed` rm -f conftest.sed { echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } SET_MAKE= else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi PACKAGE=keytouch-editor-bin VERSION=3.1.0 if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} { (exit 1); exit 1; }; } fi cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF missing_dir=`cd $ac_aux_dir && pwd` { echo "$as_me:$LINENO: checking for working aclocal-${am__api_version}" >&5 echo $ECHO_N "checking for working aclocal-${am__api_version}... $ECHO_C" >&6; } # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. if (aclocal-${am__api_version} --version) < /dev/null > /dev/null 2>&1; then ACLOCAL=aclocal-${am__api_version} { echo "$as_me:$LINENO: result: found" >&5 echo "${ECHO_T}found" >&6; } else ACLOCAL="$missing_dir/missing aclocal-${am__api_version}" { echo "$as_me:$LINENO: result: missing" >&5 echo "${ECHO_T}missing" >&6; } fi { echo "$as_me:$LINENO: checking for working autoconf" >&5 echo $ECHO_N "checking for working autoconf... $ECHO_C" >&6; } # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. if (autoconf --version) < /dev/null > /dev/null 2>&1; then AUTOCONF=autoconf { echo "$as_me:$LINENO: result: found" >&5 echo "${ECHO_T}found" >&6; } else AUTOCONF="$missing_dir/missing autoconf" { echo "$as_me:$LINENO: result: missing" >&5 echo "${ECHO_T}missing" >&6; } fi { echo "$as_me:$LINENO: checking for working automake-${am__api_version}" >&5 echo $ECHO_N "checking for working automake-${am__api_version}... $ECHO_C" >&6; } # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. if (automake-${am__api_version} --version) < /dev/null > /dev/null 2>&1; then AUTOMAKE=automake-${am__api_version} { echo "$as_me:$LINENO: result: found" >&5 echo "${ECHO_T}found" >&6; } else AUTOMAKE="$missing_dir/missing automake-${am__api_version}" { echo "$as_me:$LINENO: result: missing" >&5 echo "${ECHO_T}missing" >&6; } fi { echo "$as_me:$LINENO: checking for working autoheader" >&5 echo $ECHO_N "checking for working autoheader... $ECHO_C" >&6; } # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. if (autoheader --version) < /dev/null > /dev/null 2>&1; then AUTOHEADER=autoheader { echo "$as_me:$LINENO: result: found" >&5 echo "${ECHO_T}found" >&6; } else AUTOHEADER="$missing_dir/missing autoheader" { echo "$as_me:$LINENO: result: missing" >&5 echo "${ECHO_T}missing" >&6; } fi { echo "$as_me:$LINENO: checking for working makeinfo" >&5 echo $ECHO_N "checking for working makeinfo... $ECHO_C" >&6; } # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. if (makeinfo --version) < /dev/null > /dev/null 2>&1; then MAKEINFO=makeinfo { echo "$as_me:$LINENO: result: found" >&5 echo "${ECHO_T}found" >&6; } else MAKEINFO="$missing_dir/missing makeinfo" { echo "$as_me:$LINENO: result: missing" >&5 echo "${ECHO_T}missing" >&6; } fi ac_config_headers="$ac_config_headers config.h" ac_config_commands="$ac_config_commands default-1" { echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6; } # Check whether --enable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval else USE_MAINTAINER_MODE=no fi { echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' else MAINTAINER_MODE_TRUE='#' MAINTAINER_MODE_FALSE= fi MAINT=$MAINTAINER_MODE_TRUE ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. echo "$as_me:$LINENO: checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # # List of possible output files, starting from the most likely. # The algorithm is not robust to junk in `.', hence go to wildcards (a.*) # only as a last resort. b.out is created by i960 compilers. ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' # # The IRIX 6 linker writes into existing files which may not be # executable, retaining their permissions. Remove them first so a # subsequent execution test works. ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { (ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link_default") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi { echo "$as_me:$LINENO: result: $ac_file" >&5 echo "${ECHO_T}$ac_file" >&6; } if test -z "$ac_file"; then echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: C compiler cannot create executables See \`config.log' for more details." >&5 echo "$as_me: error: C compiler cannot create executables See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; } fi ac_exeext=$ac_cv_exeext # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { echo "$as_me:$LINENO: checking whether the C compiler works" >&5 echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { echo "$as_me:$LINENO: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&5 echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi fi fi { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } rm -f a.out a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } { echo "$as_me:$LINENO: result: $cross_compiling" >&5 echo "${ECHO_T}$cross_compiling" >&6; } { echo "$as_me:$LINENO: checking for suffix of executables" >&5 echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest$ac_cv_exeext { echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 echo "${ECHO_T}$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT { echo "$as_me:$LINENO: checking for suffix of object files" >&5 echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 echo "${ECHO_T}$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CFLAGS="" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } if test "${ac_cv_prog_cc_c89+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_c89=$ac_arg else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { echo "$as_me:$LINENO: result: none needed" >&5 echo "${ECHO_T}none needed" >&6; } ;; xno) { echo "$as_me:$LINENO: result: unsupported" >&5 echo "${ECHO_T}unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; esac ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { echo "$as_me:$LINENO: checking for library containing strerror" >&5 echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6; } if test "${ac_cv_search_strerror+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_func_search_save_LIBS=$LIBS cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char strerror (); int main () { return strerror (); ; return 0; } _ACEOF for ac_lib in '' cposix; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_search_strerror=$ac_res else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext if test "${ac_cv_search_strerror+set}" = set; then break fi done if test "${ac_cv_search_strerror+set}" = set; then : else ac_cv_search_strerror=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5 echo "${ECHO_T}$ac_cv_search_strerror" >&6; } ac_res=$ac_cv_search_strerror if test "$ac_res" != no; then test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. echo "$as_me:$LINENO: checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CFLAGS="" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } if test "${ac_cv_prog_cc_c89+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_c89=$ac_arg else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { echo "$as_me:$LINENO: result: none needed" >&5 echo "${ECHO_T}none needed" >&6; } ;; xno) { echo "$as_me:$LINENO: result: unsupported" >&5 echo "${ECHO_T}unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; esac ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { echo "$as_me:$LINENO: checking for ${CC-cc} option to accept ANSI C" >&5 echo $ECHO_N "checking for ${CC-cc} option to accept ANSI C... $ECHO_C" >&6; } if test "${am_cv_prog_cc_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else am_cv_prog_cc_stdc=no ac_save_CC="$CC" # Don't try gcc -ansi; that turns off useful extensions and # breaks some systems' header files. # AIX -qlanglvl=ansi # Ultrix and OSF/1 -std1 # HP-UX -Aa -D_HPUX_SOURCE # SVR4 -Xc -D__EXTENSIONS__ for ac_arg in "" -qlanglvl=ansi -std1 "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then am_cv_prog_cc_stdc="$ac_arg"; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done CC="$ac_save_CC" fi if test -z "$am_cv_prog_cc_stdc"; then { echo "$as_me:$LINENO: result: none needed" >&5 echo "${ECHO_T}none needed" >&6; } else { echo "$as_me:$LINENO: result: $am_cv_prog_cc_stdc" >&5 echo "${ECHO_T}$am_cv_prog_cc_stdc" >&6; } fi case "x$am_cv_prog_cc_stdc" in x|xno) ;; *) CC="$CC $am_cv_prog_cc_stdc" ;; esac ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { echo "$as_me:$LINENO: result: $CPP" >&5 echo "${ECHO_T}$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&5 echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } if test "${ac_cv_path_GREP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Extract the first word of "grep ggrep" to use in msg output if test -z "$GREP"; then set dummy grep ggrep; ac_prog_name=$2 if test "${ac_cv_path_GREP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS fi GREP="$ac_cv_path_GREP" if test -z "$GREP"; then { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_GREP=$GREP fi fi { echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 echo "${ECHO_T}$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { echo "$as_me:$LINENO: checking for egrep" >&5 echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } if test "${ac_cv_path_EGREP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else # Extract the first word of "egrep" to use in msg output if test -z "$EGREP"; then set dummy egrep; ac_prog_name=$2 if test "${ac_cv_path_EGREP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS fi EGREP="$ac_cv_path_EGREP" if test -z "$EGREP"; then { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_EGREP=$EGREP fi fi fi { echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { echo "$as_me:$LINENO: checking for ANSI C header files" >&5 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi { echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 echo "${ECHO_T}$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF #define STDC_HEADERS 1 _ACEOF fi pkg_modules="gtk+-2.0 >= 2.0.0" if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_path_PKG_CONFIG+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5 echo "${ECHO_T}$PKG_CONFIG" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5 echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5 echo $ECHO_N "checking pkg-config is at least version $_pkg_min_version... $ECHO_C" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } PKG_CONFIG="" fi fi pkg_failed=no { echo "$as_me:$LINENO: checking for PACKAGE" >&5 echo $ECHO_N "checking for PACKAGE... $ECHO_C" >&6; } if test -n "$PKG_CONFIG"; then if test -n "$PACKAGE_CFLAGS"; then pkg_cv_PACKAGE_CFLAGS="$PACKAGE_CFLAGS" else if test -n "$PKG_CONFIG" && \ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"\$pkg_modules\"") >&5 ($PKG_CONFIG --exists --print-errors "$pkg_modules") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_PACKAGE_CFLAGS=`$PKG_CONFIG --cflags "$pkg_modules" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test -n "$PKG_CONFIG"; then if test -n "$PACKAGE_LIBS"; then pkg_cv_PACKAGE_LIBS="$PACKAGE_LIBS" else if test -n "$PKG_CONFIG" && \ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"\$pkg_modules\"") >&5 ($PKG_CONFIG --exists --print-errors "$pkg_modules") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_PACKAGE_LIBS=`$PKG_CONFIG --libs "$pkg_modules" 2>/dev/null` else pkg_failed=yes fi fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then PACKAGE_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$pkg_modules"` else PACKAGE_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$pkg_modules"` fi # Put the nasty error message in config.log where it belongs echo "$PACKAGE_PKG_ERRORS" >&5 { { echo "$as_me:$LINENO: error: Package requirements ($pkg_modules) were not met: $PACKAGE_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables PACKAGE_CFLAGS and PACKAGE_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&5 echo "$as_me: error: Package requirements ($pkg_modules) were not met: $PACKAGE_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables PACKAGE_CFLAGS and PACKAGE_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&2;} { (exit 1); exit 1; }; } elif test $pkg_failed = untried; then { { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables PACKAGE_CFLAGS and PACKAGE_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details." >&5 echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables PACKAGE_CFLAGS and PACKAGE_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } else PACKAGE_CFLAGS=$pkg_cv_PACKAGE_CFLAGS PACKAGE_LIBS=$pkg_cv_PACKAGE_LIBS { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } : fi GETTEXT_PACKAGE=keytouch-editor-bin cat >>confdefs.h <<_ACEOF #define GETTEXT_PACKAGE "$GETTEXT_PACKAGE" _ACEOF ALL_LINGUAS="nl de ga sv hu it vi" # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` { echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_Header'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} { (exit 1); exit 1; }; } { echo "$as_me:$LINENO: checking build system type" >&5 echo $ECHO_N "checking build system type... $ECHO_C" >&6; } if test "${ac_cv_build+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi { echo "$as_me:$LINENO: result: $ac_cv_build" >&5 echo "${ECHO_T}$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 echo "$as_me: error: invalid value of canonical build" >&2;} { (exit 1); exit 1; }; };; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { echo "$as_me:$LINENO: checking host system type" >&5 echo $ECHO_N "checking host system type... $ECHO_C" >&6; } if test "${ac_cv_host+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} { (exit 1); exit 1; }; } fi fi { echo "$as_me:$LINENO: result: $ac_cv_host" >&5 echo "${ECHO_T}$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 echo "$as_me: error: invalid value of canonical host" >&2;} { (exit 1); exit 1; }; };; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac for ac_header in locale.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then { echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi ac_res=`eval echo '${'$as_ac_Header'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } else # Is the header compilable? { echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? { echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ;; esac { echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi ac_res=`eval echo '${'$as_ac_Header'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done if test $ac_cv_header_locale_h = yes; then { echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5 echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6; } if test "${am_cv_val_LC_MESSAGES+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { return LC_MESSAGES ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then am_cv_val_LC_MESSAGES=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 am_cv_val_LC_MESSAGES=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5 echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6; } if test $am_cv_val_LC_MESSAGES = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_LC_MESSAGES 1 _ACEOF fi fi USE_NLS=yes gt_cv_have_gettext=no CATOBJEXT=NONE XGETTEXT=: INTLLIBS= if test "${ac_cv_header_libintl_h+set}" = set; then { echo "$as_me:$LINENO: checking for libintl.h" >&5 echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6; } if test "${ac_cv_header_libintl_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi { echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5 echo "${ECHO_T}$ac_cv_header_libintl_h" >&6; } else # Is the header compilable? { echo "$as_me:$LINENO: checking libintl.h usability" >&5 echo $ECHO_N "checking libintl.h usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? { echo "$as_me:$LINENO: checking libintl.h presence" >&5 echo $ECHO_N "checking libintl.h presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: libintl.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: libintl.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: libintl.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: libintl.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: libintl.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: libintl.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: libintl.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: libintl.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: libintl.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: libintl.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: libintl.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: libintl.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: libintl.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: libintl.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: libintl.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: libintl.h: in the future, the compiler will take precedence" >&2;} ;; esac { echo "$as_me:$LINENO: checking for libintl.h" >&5 echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6; } if test "${ac_cv_header_libintl_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_libintl_h=$ac_header_preproc fi { echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5 echo "${ECHO_T}$ac_cv_header_libintl_h" >&6; } fi if test $ac_cv_header_libintl_h = yes; then gt_cv_func_dgettext_libintl="no" libintl_extra_libs="" # # First check in libc # { echo "$as_me:$LINENO: checking for ngettext in libc" >&5 echo $ECHO_N "checking for ngettext in libc... $ECHO_C" >&6; } if test "${gt_cv_func_ngettext_libc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { return !ngettext ("","", 1) ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then gt_cv_func_ngettext_libc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 gt_cv_func_ngettext_libc=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $gt_cv_func_ngettext_libc" >&5 echo "${ECHO_T}$gt_cv_func_ngettext_libc" >&6; } if test "$gt_cv_func_ngettext_libc" = "yes" ; then { echo "$as_me:$LINENO: checking for dgettext in libc" >&5 echo $ECHO_N "checking for dgettext in libc... $ECHO_C" >&6; } if test "${gt_cv_func_dgettext_libc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { return !dgettext ("","") ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then gt_cv_func_dgettext_libc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 gt_cv_func_dgettext_libc=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $gt_cv_func_dgettext_libc" >&5 echo "${ECHO_T}$gt_cv_func_dgettext_libc" >&6; } fi if test "$gt_cv_func_ngettext_libc" = "yes" ; then for ac_func in bind_textdomain_codeset do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` { echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$ac_func || defined __stub___$ac_func choke me #endif int main () { return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done fi # # If we don't have everything we want, check in libintl # if test "$gt_cv_func_dgettext_libc" != "yes" \ || test "$gt_cv_func_ngettext_libc" != "yes" \ || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then { echo "$as_me:$LINENO: checking for bindtextdomain in -lintl" >&5 echo $ECHO_N "checking for bindtextdomain in -lintl... $ECHO_C" >&6; } if test "${ac_cv_lib_intl_bindtextdomain+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char bindtextdomain (); int main () { return bindtextdomain (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_intl_bindtextdomain=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_intl_bindtextdomain=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_intl_bindtextdomain" >&5 echo "${ECHO_T}$ac_cv_lib_intl_bindtextdomain" >&6; } if test $ac_cv_lib_intl_bindtextdomain = yes; then { echo "$as_me:$LINENO: checking for ngettext in -lintl" >&5 echo $ECHO_N "checking for ngettext in -lintl... $ECHO_C" >&6; } if test "${ac_cv_lib_intl_ngettext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char ngettext (); int main () { return ngettext (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_intl_ngettext=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_intl_ngettext=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_intl_ngettext" >&5 echo "${ECHO_T}$ac_cv_lib_intl_ngettext" >&6; } if test $ac_cv_lib_intl_ngettext = yes; then { echo "$as_me:$LINENO: checking for dgettext in -lintl" >&5 echo $ECHO_N "checking for dgettext in -lintl... $ECHO_C" >&6; } if test "${ac_cv_lib_intl_dgettext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dgettext (); int main () { return dgettext (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_intl_dgettext=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_intl_dgettext=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_intl_dgettext" >&5 echo "${ECHO_T}$ac_cv_lib_intl_dgettext" >&6; } if test $ac_cv_lib_intl_dgettext = yes; then gt_cv_func_dgettext_libintl=yes fi fi fi if test "$gt_cv_func_dgettext_libintl" != "yes" ; then { echo "$as_me:$LINENO: checking if -liconv is needed to use gettext" >&5 echo $ECHO_N "checking if -liconv is needed to use gettext... $ECHO_C" >&6; } { echo "$as_me:$LINENO: result: " >&5 echo "${ECHO_T}" >&6; } { echo "$as_me:$LINENO: checking for ngettext in -lintl" >&5 echo $ECHO_N "checking for ngettext in -lintl... $ECHO_C" >&6; } if test "${ac_cv_lib_intl_ngettext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl -liconv $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char ngettext (); int main () { return ngettext (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_intl_ngettext=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_intl_ngettext=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_intl_ngettext" >&5 echo "${ECHO_T}$ac_cv_lib_intl_ngettext" >&6; } if test $ac_cv_lib_intl_ngettext = yes; then { echo "$as_me:$LINENO: checking for dcgettext in -lintl" >&5 echo $ECHO_N "checking for dcgettext in -lintl... $ECHO_C" >&6; } if test "${ac_cv_lib_intl_dcgettext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl -liconv $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dcgettext (); int main () { return dcgettext (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_intl_dcgettext=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_intl_dcgettext=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_intl_dcgettext" >&5 echo "${ECHO_T}$ac_cv_lib_intl_dcgettext" >&6; } if test $ac_cv_lib_intl_dcgettext = yes; then gt_cv_func_dgettext_libintl=yes libintl_extra_libs=-liconv else : fi else : fi fi # # If we found libintl, then check in it for bind_textdomain_codeset(); # we'll prefer libc if neither have bind_textdomain_codeset(), # and both have dgettext and ngettext # if test "$gt_cv_func_dgettext_libintl" = "yes" ; then glib_save_LIBS="$LIBS" LIBS="$LIBS -lintl $libintl_extra_libs" unset ac_cv_func_bind_textdomain_codeset for ac_func in bind_textdomain_codeset do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` { echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$ac_func || defined __stub___$ac_func choke me #endif int main () { return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done LIBS="$glib_save_LIBS" if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then gt_cv_func_dgettext_libc=no else if test "$gt_cv_func_dgettext_libc" = "yes" \ && test "$gt_cv_func_ngettext_libc" = "yes"; then gt_cv_func_dgettext_libintl=no fi fi fi fi if test "$gt_cv_func_dgettext_libc" = "yes" \ || test "$gt_cv_func_dgettext_libintl" = "yes"; then gt_cv_have_gettext=yes fi if test "$gt_cv_func_dgettext_libintl" = "yes"; then INTLLIBS="-lintl $libintl_extra_libs" fi if test "$gt_cv_have_gettext" = "yes"; then cat >>confdefs.h <<\_ACEOF #define HAVE_GETTEXT 1 _ACEOF # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_path_MSGFMT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case "$MSGFMT" in /*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then if test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"; then ac_cv_path_MSGFMT="$ac_dir/$ac_word" break fi fi done IFS="$ac_save_ifs" test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="no" ;; esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != "no"; then { echo "$as_me:$LINENO: result: $MSGFMT" >&5 echo "${ECHO_T}$MSGFMT" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test "$MSGFMT" != "no"; then glib_save_LIBS="$LIBS" LIBS="$LIBS $INTLLIBS" for ac_func in dcgettext do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` { echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$ac_func || defined __stub___$ac_func choke me #endif int main () { return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done MSGFMT_OPTS= { echo "$as_me:$LINENO: checking if msgfmt accepts -c" >&5 echo $ECHO_N "checking if msgfmt accepts -c... $ECHO_C" >&6; } cat >conftest.foo <<_ACEOF msgid "" msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Project-Id-Version: test 1.0\n" "PO-Revision-Date: 2007-02-15 12:01+0100\n" "Last-Translator: test \n" "Language-Team: C \n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" _ACEOF if { (echo "$as_me:$LINENO: msgfmt -c -o /dev/null conftest.foo") >&5 (msgfmt -c -o /dev/null conftest.foo) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then MSGFMT_OPTS=-c; { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } echo "$as_me: failed input was:" >&5 sed 's/^/| /' conftest.foo >&5 fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_path_GMSGFMT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then { echo "$as_me:$LINENO: result: $GMSGFMT" >&5 echo "${ECHO_T}$GMSGFMT" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_path_XGETTEXT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case "$XGETTEXT" in /*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then if test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"; then ac_cv_path_XGETTEXT="$ac_dir/$ac_word" break fi fi done IFS="$ac_save_ifs" test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" ;; esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then { echo "$as_me:$LINENO: result: $XGETTEXT" >&5 echo "${ECHO_T}$XGETTEXT" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { extern int _nl_msg_cat_cntr; return _nl_msg_cat_cntr ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then CATOBJEXT=.gmo DATADIRNAME=share else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 case $host in *-*-solaris*) { echo "$as_me:$LINENO: checking for bind_textdomain_codeset" >&5 echo $ECHO_N "checking for bind_textdomain_codeset... $ECHO_C" >&6; } if test "${ac_cv_func_bind_textdomain_codeset+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define bind_textdomain_codeset to an innocuous variant, in case declares bind_textdomain_codeset. For example, HP-UX 11i declares gettimeofday. */ #define bind_textdomain_codeset innocuous_bind_textdomain_codeset /* System header to define __stub macros and hopefully few prototypes, which can conflict with char bind_textdomain_codeset (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef bind_textdomain_codeset /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char bind_textdomain_codeset (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_bind_textdomain_codeset || defined __stub___bind_textdomain_codeset choke me #endif int main () { return bind_textdomain_codeset (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_func_bind_textdomain_codeset=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_bind_textdomain_codeset=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_func_bind_textdomain_codeset" >&5 echo "${ECHO_T}$ac_cv_func_bind_textdomain_codeset" >&6; } if test $ac_cv_func_bind_textdomain_codeset = yes; then CATOBJEXT=.gmo DATADIRNAME=share else CATOBJEXT=.mo DATADIRNAME=lib fi ;; *) CATOBJEXT=.mo DATADIRNAME=lib ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS="$glib_save_LIBS" INSTOBJEXT=.mo else gt_cv_have_gettext=no fi fi fi if test "$gt_cv_have_gettext" = "yes" ; then cat >>confdefs.h <<\_ACEOF #define ENABLE_NLS 1 _ACEOF fi if test "$XGETTEXT" != ":"; then if $XGETTEXT --omit-header /dev/null 2> /dev/null; then : ; else { echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5 echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6; } XGETTEXT=":" fi fi # We need to process the po/ directory. POSUB=po ac_config_commands="$ac_config_commands default-2" for lang in $ALL_LINGUAS; do GMOFILES="$GMOFILES $lang.gmo" POFILES="$POFILES $lang.po" done if test "$gt_cv_have_gettext" = "yes"; then if test "x$ALL_LINGUAS" = "x"; then LINGUAS= else { echo "$as_me:$LINENO: checking for catalogs to be installed" >&5 echo $ECHO_N "checking for catalogs to be installed... $ECHO_C" >&6; } NEW_LINGUAS= for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then NEW_LINGUAS="$NEW_LINGUAS $presentlang" fi done LINGUAS=$NEW_LINGUAS { echo "$as_me:$LINENO: result: $LINGUAS" >&5 echo "${ECHO_T}$LINGUAS" >&6; } fi if test -n "$LINGUAS"; then for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done fi fi MKINSTALLDIRS= if test -n "$ac_aux_dir"; then MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" fi if test -z "$MKINSTALLDIRS"; then MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" fi test -d po || mkdir po if test "x$srcdir" != "x."; then if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then posrcprefix="$srcdir/" else posrcprefix="../$srcdir/" fi else posrcprefix="../" fi rm -f po/POTFILES sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \ < $srcdir/po/POTFILES.in > po/POTFILES ac_config_files="$ac_config_files Makefile string_to_keycode/Makefile src/Makefile mxml/Makefile po/Makefile.in" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( *) $as_unset $ac_var ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then test "x$cache_file" != "x/dev/null" && { echo "$as_me:$LINENO: updating cache $cache_file" >&5 echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : ${CONFIG_STATUS=./config.status} ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # PATH needs CR # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) as_nl=' ' IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 { (exit 1); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # CDPATH. $as_unset CDPATH as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, and appends # trailing '-' during substitution so that $LINENO is not a special # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # scripts with optimization help from Paolo Bonzini. Blame Lee # E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir fi echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 # Save the log message, to keep $[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by $as_me, which was generated by GNU Autoconf 2.61. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ config.status configured by $0, generated by GNU Autoconf 2.61, with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2006 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # If no file are specified by the user, then we need to provide default # value. By we need to know if files were specified by the user. ac_need_defaults=: while test $# != 0 do case $1 in --*=*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) echo "$ac_cs_version"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift CONFIG_FILES="$CONFIG_FILES $ac_optarg" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header { echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; };; --help | --hel | -h ) echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) { echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *) ac_config_targets="$ac_config_targets $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF if \$ac_cs_recheck; then echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 CONFIG_SHELL=$SHELL export CONFIG_SHELL exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # # INIT-COMMANDS # _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; "default-2") CONFIG_COMMANDS="$CONFIG_COMMANDS default-2" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "string_to_keycode/Makefile") CONFIG_FILES="$CONFIG_FILES string_to_keycode/Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "mxml/Makefile") CONFIG_FILES="$CONFIG_FILES mxml/Makefile" ;; "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= trap 'exit_status=$? { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status ' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || { echo "$me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } # # Set up the sed scripts for CONFIG_FILES section. # # No need to generate the scripts if there are no CONFIG_FILES. # This happens for instance when ./config.status config.h if test -n "$CONFIG_FILES"; then _ACEOF ac_delim='%!_!# ' for ac_last_try in false false false false false :; do cat >conf$$subs.sed <<_ACEOF SHELL!$SHELL$ac_delim PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim PACKAGE_NAME!$PACKAGE_NAME$ac_delim PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim PACKAGE_STRING!$PACKAGE_STRING$ac_delim PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim exec_prefix!$exec_prefix$ac_delim prefix!$prefix$ac_delim program_transform_name!$program_transform_name$ac_delim bindir!$bindir$ac_delim sbindir!$sbindir$ac_delim libexecdir!$libexecdir$ac_delim datarootdir!$datarootdir$ac_delim datadir!$datadir$ac_delim sysconfdir!$sysconfdir$ac_delim sharedstatedir!$sharedstatedir$ac_delim localstatedir!$localstatedir$ac_delim includedir!$includedir$ac_delim oldincludedir!$oldincludedir$ac_delim docdir!$docdir$ac_delim infodir!$infodir$ac_delim htmldir!$htmldir$ac_delim dvidir!$dvidir$ac_delim pdfdir!$pdfdir$ac_delim psdir!$psdir$ac_delim libdir!$libdir$ac_delim localedir!$localedir$ac_delim mandir!$mandir$ac_delim DEFS!$DEFS$ac_delim ECHO_C!$ECHO_C$ac_delim ECHO_N!$ECHO_N$ac_delim ECHO_T!$ECHO_T$ac_delim LIBS!$LIBS$ac_delim build_alias!$build_alias$ac_delim host_alias!$host_alias$ac_delim target_alias!$target_alias$ac_delim INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim INSTALL_DATA!$INSTALL_DATA$ac_delim PACKAGE!$PACKAGE$ac_delim VERSION!$VERSION$ac_delim ACLOCAL!$ACLOCAL$ac_delim AUTOCONF!$AUTOCONF$ac_delim AUTOMAKE!$AUTOMAKE$ac_delim AUTOHEADER!$AUTOHEADER$ac_delim MAKEINFO!$MAKEINFO$ac_delim SET_MAKE!$SET_MAKE$ac_delim MAINTAINER_MODE_TRUE!$MAINTAINER_MODE_TRUE$ac_delim MAINTAINER_MODE_FALSE!$MAINTAINER_MODE_FALSE$ac_delim MAINT!$MAINT$ac_delim CC!$CC$ac_delim CFLAGS!$CFLAGS$ac_delim LDFLAGS!$LDFLAGS$ac_delim CPPFLAGS!$CPPFLAGS$ac_delim ac_ct_CC!$ac_ct_CC$ac_delim EXEEXT!$EXEEXT$ac_delim OBJEXT!$OBJEXT$ac_delim CPP!$CPP$ac_delim GREP!$GREP$ac_delim EGREP!$EGREP$ac_delim PKG_CONFIG!$PKG_CONFIG$ac_delim PACKAGE_CFLAGS!$PACKAGE_CFLAGS$ac_delim PACKAGE_LIBS!$PACKAGE_LIBS$ac_delim GETTEXT_PACKAGE!$GETTEXT_PACKAGE$ac_delim build!$build$ac_delim build_cpu!$build_cpu$ac_delim build_vendor!$build_vendor$ac_delim build_os!$build_os$ac_delim host!$host$ac_delim host_cpu!$host_cpu$ac_delim host_vendor!$host_vendor$ac_delim host_os!$host_os$ac_delim USE_NLS!$USE_NLS$ac_delim MSGFMT!$MSGFMT$ac_delim MSGFMT_OPTS!$MSGFMT_OPTS$ac_delim GMSGFMT!$GMSGFMT$ac_delim XGETTEXT!$XGETTEXT$ac_delim CATALOGS!$CATALOGS$ac_delim CATOBJEXT!$CATOBJEXT$ac_delim DATADIRNAME!$DATADIRNAME$ac_delim GMOFILES!$GMOFILES$ac_delim INSTOBJEXT!$INSTOBJEXT$ac_delim INTLLIBS!$INTLLIBS$ac_delim PO_IN_DATADIR_TRUE!$PO_IN_DATADIR_TRUE$ac_delim PO_IN_DATADIR_FALSE!$PO_IN_DATADIR_FALSE$ac_delim POFILES!$POFILES$ac_delim POSUB!$POSUB$ac_delim MKINSTALLDIRS!$MKINSTALLDIRS$ac_delim LIBOBJS!$LIBOBJS$ac_delim LTLIBOBJS!$LTLIBOBJS$ac_delim _ACEOF if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 91; then break elif $ac_last_try; then { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` if test -n "$ac_eof"; then ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` ac_eof=`expr $ac_eof + 1` fi cat >>$CONFIG_STATUS <<_ACEOF cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof /@[a-zA-Z_][a-zA-Z_0-9]*@/!b end _ACEOF sed ' s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g s/^/s,@/; s/!/@,|#_!!_#|/ :n t n s/'"$ac_delim"'$/,g/; t s/$/\\/; p N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n ' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF :end s/|#_!!_#|//g CEOF$ac_eof _ACEOF # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/ s/:*\${srcdir}:*/:/ s/:*@srcdir@:*/:/ s/^\([^=]*=[ ]*\):*/\1/ s/:*$// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF fi # test -n "$CONFIG_FILES" for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 echo "$as_me: error: Invalid tag $ac_tag." >&2;} { (exit 1); exit 1; }; };; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 echo "$as_me: error: cannot find input file: $ac_f" >&2;} { (exit 1); exit 1; }; };; esac ac_file_inputs="$ac_file_inputs $ac_f" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input="Generated from "`IFS=: echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} fi case $ac_tag in *:-:* | *:-) cat >"$tmp/stdin";; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` { as_dir="$ac_dir" case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= case `sed -n '/datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p ' $ac_file_inputs` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s&@configure_input@&$configure_input&;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t $ac_datarootdir_hack " $ac_file_inputs | sed -f "$tmp/subs-1.sed" >$tmp/out test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&5 echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&2;} rm -f "$tmp/stdin" case $ac_file in -) cat "$tmp/out"; rm -f "$tmp/out";; *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; esac ;; :H) # # CONFIG_HEADER # _ACEOF # Transform confdefs.h into a sed script `conftest.defines', that # substitutes the proper values into config.h.in to produce config.h. rm -f conftest.defines conftest.tail # First, append a space to every undef/define line, to ease matching. echo 's/$/ /' >conftest.defines # Then, protect against being on the right side of a sed subst, or in # an unquoted here document, in config.status. If some macros were # called several times there might be several #defines for the same # symbol, which is useless. But do not sort them, since the last # AC_DEFINE must be honored. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* # These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where # NAME is the cpp macro being defined, VALUE is the value it is being given. # PARAMS is the parameter list in the macro definition--in most cases, it's # just an empty string. ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' ac_dB='\\)[ (].*,\\1define\\2' ac_dC=' ' ac_dD=' ,' uniq confdefs.h | sed -n ' t rset :rset s/^[ ]*#[ ]*define[ ][ ]*// t ok d :ok s/[\\&,]/\\&/g s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p ' >>conftest.defines # Remove the space that was appended to ease matching. # Then replace #undef with comments. This is necessary, for # example, in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. # (The regexp can be short, since the line contains either #define or #undef.) echo 's/ $// s,^[ #]*u.*,/* & */,' >>conftest.defines # Break up conftest.defines: ac_max_sed_lines=50 # First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" # Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" # Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" # et cetera. ac_in='$ac_file_inputs' ac_out='"$tmp/out1"' ac_nxt='"$tmp/out2"' while : do # Write a here document: cat >>$CONFIG_STATUS <<_ACEOF # First, check the format of the line: cat >"\$tmp/defines.sed" <<\\CEOF /^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def /^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def b :def _ACEOF sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS echo 'CEOF sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail grep . conftest.tail >/dev/null || break rm -f conftest.defines mv conftest.tail conftest.defines done rm -f conftest.defines conftest.tail echo "ac_result=$ac_in" >>$CONFIG_STATUS cat >>$CONFIG_STATUS <<\_ACEOF if test x"$ac_file" != x-; then echo "/* $configure_input */" >"$tmp/config.h" cat "$ac_result" >>"$tmp/config.h" if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 echo "$as_me: $ac_file is unchanged" >&6;} else rm -f $ac_file mv "$tmp/config.h" $ac_file fi else echo "/* $configure_input */" cat "$ac_result" fi rm -f "$tmp/out12" ;; :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "default-1":C) test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h ;; "default-2":C) case "$CONFIG_FILES" in *po/Makefile.in*) sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile esac ;; esac done # for ac_tag { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || { (exit 1); exit 1; } fi keytouch-editor-3.2.0-beta/config.sub0000755000175000017500000007713010407025063017106 0ustar marvinmarvin#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. timestamp='2006-02-23' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file 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; either version 2 of the License, or # (at your option) any later version. # # 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. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray) os= basic_machine=$1 ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | m32r | m32rle | m68000 | m68k | m88k | maxq | mb | microblaze | mcore \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64vr | mips64vrel \ | mips64orion | mips64orionel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | mt \ | msp430 \ | nios | nios2 \ | ns16k | ns32k \ | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b \ | strongarm \ | tahoe | thumb | tic4x | tic80 | tron \ | v850 | v850e \ | we32k \ | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \ | z8k) basic_machine=$basic_machine-unknown ;; m32c) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64vr-* | mips64vrel-* \ | mips64orion-* | mips64orionel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tron-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \ | xstormy16-* | xtensa-* \ | ymp-* \ | z8k-*) ;; m32c-*) ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; c90) basic_machine=c90-cray os=-unicos ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16c) basic_machine=cr16c-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; mvs) basic_machine=i370-ibm os=-mvs ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff ;; tic55x | c55x*) basic_machine=tic55x-unknown os=-coff ;; tic6x | c6x*) basic_machine=tic6x-unknown os=-coff ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -zvmoe) os=-zvmoe ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; m68*-cisco) os=-aout ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: keytouch-editor-3.2.0-beta/stamp-h10000640000175000017500000000002710373672764016505 0ustar marvinmarvintimestamp for config.h keytouch-editor-3.2.0-beta/config.h0000644000175000017500000000411010525670254016536 0ustar marvinmarvin/* config.h. Generated from config.h.in by configure. */ /* config.h.in. Generated from configure.in by autoheader. */ /* always defined to indicate that i18n is enabled */ #define ENABLE_NLS 1 /* Gettext package. */ #define GETTEXT_PACKAGE "keytouch-editor-bin" /* Define to 1 if you have the `bind_textdomain_codeset' function. */ #define HAVE_BIND_TEXTDOMAIN_CODESET 1 /* Define to 1 if you have the `dcgettext' function. */ #define HAVE_DCGETTEXT 1 /* Define if the GNU gettext() function is already present or preinstalled. */ #define HAVE_GETTEXT 1 /* Define to 1 if you have the header file. */ #define HAVE_INTTYPES_H 1 /* Define if your file defines LC_MESSAGES. */ #define HAVE_LC_MESSAGES 1 /* Define to 1 if you have the header file. */ #define HAVE_LOCALE_H 1 /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Name of package */ #define PACKAGE "keytouch-editor-bin" /* Define to the address where bug reports for this package should be sent. */ #define PACKAGE_BUGREPORT "" /* Define to the full name of this package. */ #define PACKAGE_NAME "" /* Define to the full name and version of this package. */ #define PACKAGE_STRING "" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "" /* Define to the version of this package. */ #define PACKAGE_VERSION "" /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 /* Version number of package */ #define VERSION "3.1.0" keytouch-editor-3.2.0-beta/stamp-h0000644000175000017500000000001210677477005016420 0ustar marvinmarvintimestamp keytouch-editor-3.2.0-beta/keytouch-editor0000751000175000017500000000032410407030064020150 0ustar marvinmarvin#! /bin/bash if [ `which gksu` ]; then gksu -g -m "To use keytouch-editor you need to be root. Please enter root's password." "keytouch-editor-bin"; else kdesu -c "LANGUAGE=$LANGUAGE; keytouch-editor-bin"; fi