Hello community,

here is the log from the commit of package at-spi2-core for openSUSE:Factory 
checked in at 2020-11-19 11:54:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/at-spi2-core (Old)
 and      /work/SRC/openSUSE:Factory/.at-spi2-core.new.5913 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "at-spi2-core"

Thu Nov 19 11:54:06 2020 rev:88 rq:847169 version:2.38.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/at-spi2-core/at-spi2-core.changes        
2020-09-25 16:27:29.539675569 +0200
+++ /work/SRC/openSUSE:Factory/.at-spi2-core.new.5913/at-spi2-core.changes      
2020-11-23 10:21:51.976778542 +0100
@@ -1,0 +2,37 @@
+Tue Sep 22 02:38:00 UTC 2020 - dims...@opensuse.org
+
+- Update to version 2.38.0:
+  + Updated translations.
+
+-------------------------------------------------------------------
+Tue Sep 22 02:37:52 UTC 2020 - dims...@opensuse.org
+
+- Update to version 2.37.92:
+  + Fix a possible memory leak if an event name cannot be parsed.
+  + _atspi_dbus_set_interfaces: fix memory leak when called with an
+    invalid DBus signature.
+  + Fix a crash if an event listener is removed during an event
+    callback.
+
+-------------------------------------------------------------------
+Tue Sep 22 02:37:50 UTC 2020 - dims...@opensuse.org
+
+- Update to version 2.37.90:
+  + Add a mode-changed signal to allow a screen reader to indicate
+    that its mode has changed.
+  + Fix use after free when a device listener is destroyed.
+  + Meson: de-duplicate deps of 'Requires' in pkgconfig file.
+  + FIx use after free when an event listener is destroyed.
+  + Make at-spi-dbus-bus.desktop validate.
+  + atspi_accessible_set_cache_mask: relax assert that was
+    generating a warning and causing the function to fail in some
+    cases.
+  + Fixes for synthesizing keys.
+  + Fix Qt annotations in DBus xml files.
+  + Memory test: replace gedit with a light-weight test
+    application.
+  + dbtest: print to stdout instead of stderr.
+  + Tests: make test a bit verbose.
+  + Constants: fix typos in two _COUNT constants.
+
+-------------------------------------------------------------------

Old:
----
  at-spi2-core-2.36.1.tar.xz

New:
----
  at-spi2-core-2.38.0.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ at-spi2-core.spec ++++++
--- /var/tmp/diff_new_pack.B2a6Q3/_old  2020-11-23 10:21:52.464779093 +0100
+++ /var/tmp/diff_new_pack.B2a6Q3/_new  2020-11-23 10:21:52.464779093 +0100
@@ -17,15 +17,17 @@
 
 
 Name:           at-spi2-core
-Version:        2.36.1
+Version:        2.38.0
 Release:        0
 Summary:        Assistive Technology Service Provider Interface - D-Bus based 
implementation
 License:        LGPL-2.1-or-later
+Group:          System/GUI/GNOME
 URL:            https://www.gnome.org/
-Source0:        
https://download.gnome.org/sources/at-spi2-core/2.36/%{name}-%{version}.tar.xz
+Source0:        
https://download.gnome.org/sources/at-spi2-core/2.38/%{name}-%{version}.tar.xz
 Source99:       baselibs.conf
+
 BuildRequires:  gtk-doc
-BuildRequires:  meson >= 0.40.1
+BuildRequires:  meson >= 0.46.0
 BuildRequires:  pkgconfig
 BuildRequires:  pkgconfig(dbus-1) >= 1.0
 BuildRequires:  pkgconfig(gio-2.0) >= 2.28
@@ -49,6 +51,7 @@
 
 %package -n libatspi0
 Summary:        Assistive Technology Service Provider Interface
+Group:          System/Libraries
 
 %description -n libatspi0
 AT-SPI is a general interface for applications to make use of the
@@ -56,6 +59,7 @@
 
 %package -n typelib-1_0-Atspi-2_0
 Summary:        Introspection bindings for the Assistive Technology Service 
Provider Interface
+Group:          System/Libraries
 
 %description -n typelib-1_0-Atspi-2_0
 AT-SPI is a general interface for applications to make use of the
@@ -66,6 +70,7 @@
 
 %package devel
 Summary:        Development files for the Assistive Technology Service 
Provider Interface
+Group:          Development/Libraries/GNOME
 Requires:       at-spi2-core = %{version}
 Requires:       libatspi0 = %{version}
 Requires:       typelib-1_0-Atspi-2_0 = %{version}

++++++ at-spi2-core-2.36.1.tar.xz -> at-spi2-core-2.38.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/at-spi2-core-2.36.1/NEWS new/at-spi2-core-2.38.0/NEWS
--- old/at-spi2-core-2.36.1/NEWS        2020-09-05 01:56:27.960104700 +0200
+++ new/at-spi2-core-2.38.0/NEWS        2020-09-12 21:22:56.189964300 +0200
@@ -1,21 +1,41 @@
-What's new in at-spi2-core 2.36.1:
+What's new in at-spi2-core 2.37.92:
 
-* meson: De-duplicate deps of 'Requires' in pkgconfig file
-    
-* Make at-spi-dbus-bus.desktop Validate
-    
-* Fix ucs2keysym line for Euro sign
-    
-* Fix Qt annotations in DBus xml files
-    
-* constants: Fix typos in two _COUNT constants
+* Fix a possible memory leak if an event name cannot be parsed.
 
-* Fix a couple of memory leaks.
+* _atspi_dbus_set_interfaces: fix memory leak when called with an invalid
+  DBus signature.
 
-* Fix use after free when a device listener is destroyed.
+* Fix a crash if an event listener is removed during an event callback.
+
+
+What's new in at-spi2-core 2.37.90:
+
+* Add a mode-changed signal to allow a screen reader to indicate
+  that its mode has changed.
+
+* Fix use after free when a device listener is destroyed (#22).
+
+* Meson: de-duplicate deps of 'Requires' in pkgconfig file (!28).
 
 * Fix use after free when an event listener is destroyed.
 
+* Make at-spi-dbus-bus.desktop validate (!30).
+
+* atspi_accessible_set_cache_mask: relax assert that was generating a
+  warning and causing the function to fail in some cases.
+
+* Fixes for synthesizing keys.
+
+* Fix Qt annotations in DBus xml files.
+
+* Memory test: replace gedit with a light-weight test application.
+
+* dbtest: print to stdout instead of stderr.
+
+* Tests: make test a bit verbose.
+
+* Constants: fix typos in two _COUNT constants.
+
 What's new in at-spi2-core 2.35.92:
 
 * bus-launcher: make session management more robust.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/at-spi2-core-2.36.1/atspi/atspi-accessible.c 
new/at-spi2-core-2.38.0/atspi/atspi-accessible.c
--- old/at-spi2-core-2.36.1/atspi/atspi-accessible.c    2020-09-05 
01:56:27.960104700 +0200
+++ new/at-spi2-core-2.38.0/atspi/atspi-accessible.c    2020-09-12 
21:22:56.189964300 +0200
@@ -28,6 +28,7 @@
 
 enum {
   REGION_CHANGED,
+  MODE_CHANGED,
   LAST_SIGNAL
 };
 
@@ -48,21 +49,28 @@
   const char *name;
   DBusMessage *signal;
   DBusMessageIter iter, iter_struct, iter_variant, iter_array;
-  dbus_int32_t detail1, detail2;
+  dbus_int32_t detail1 = 0, detail2 = 0;
   const char *detail = "";
+  gchar *dbus_name;
 
   object = g_value_get_object (param_values + 0);
   g_return_val_if_fail (ATSPI_IS_ACCESSIBLE(object), FALSE);
 
   g_signal_query (signal_hint->signal_id, &signal_query);
   name = signal_query.signal_name;
-  detail1 = g_value_get_int (param_values + 1);
-  detail2 = g_value_get_int (param_values + 2);
+  if (signal_hint->detail)
+    detail = g_quark_to_string (signal_hint->detail);
+  if (n_param_values > 1)
+    detail1 = g_value_get_int (param_values + 1);
+  if (n_param_values > 2 && G_VALUE_HOLDS_INT (param_values + 2))
+    detail2 = g_value_get_int (param_values + 2);
   accessible = ATSPI_ACCESSIBLE (object);
 
+  dbus_name = _atspi_strdup_and_adjust_for_dbus (name);
   signal = dbus_message_new_signal (ATSPI_DBUS_PATH_SCREEN_READER,
                                     ATSPI_DBUS_INTERFACE_EVENT_SCREEN_READER,
-                                    "RegionChanged");
+                                    dbus_name);
+  g_free (dbus_name);
   dbus_message_iter_init_append (signal, &iter);
   dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &detail);
   dbus_message_iter_append_basic (&iter, DBUS_TYPE_INT32, &detail1);
@@ -287,9 +295,36 @@
                  G_TYPE_NONE,
                  2, G_TYPE_INT, G_TYPE_INT);
 
+  /**
+   * AtspiAccessible::mode-changed:
+   * @atspiaccessible: the object which received the signal
+   * @arg1: a boolean specifying whether the mode is being toggled on or off.
+   * @why: an optional string explaining why the mode changed.
+   *
+   * The signal "mode-changed" is emitted by a screen reader to indicate
+   * that its mode has changed. This signal supports the following details:
+   * focus-tracking
+   * flat-review
+   * mouse-review
+   * say-all
+   * caret-tracking
+  */
+  atspi_accessible_signals[MODE_CHANGED] =
+    g_signal_new ("mode_changed",
+                 G_TYPE_FROM_CLASS (klass),
+                 G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
+                 G_STRUCT_OFFSET (AtspiAccessibleClass, mode_changed), 
+                 NULL, NULL,
+                 atspi_marshal_VOID__INT_STRING,
+                 G_TYPE_NONE,
+                 2, G_TYPE_INT, G_TYPE_STRING);
+
   g_signal_add_emission_hook (atspi_accessible_signals[REGION_CHANGED], 0,
                               screen_reader_signal_watcher, NULL,
                               (GDestroyNotify) NULL);
+  g_signal_add_emission_hook (atspi_accessible_signals[MODE_CHANGED], 0,
+                              screen_reader_signal_watcher, NULL,
+                              (GDestroyNotify) NULL);
 }
 
 /**
@@ -1706,7 +1741,7 @@
 {
   g_return_if_fail (accessible != NULL);
   g_return_if_fail (accessible->parent.app != NULL);
-  g_return_if_fail (accessible == accessible->parent.app->root);
+  g_return_if_fail (accessible == accessible->parent.app->root || 
accessible->role == ATSPI_ROLE_APPLICATION);
   accessible->parent.app->cache = mask;
   enable_caching = TRUE;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/at-spi2-core-2.36.1/atspi/atspi-accessible.h 
new/at-spi2-core-2.38.0/atspi/atspi-accessible.h
--- old/at-spi2-core-2.36.1/atspi/atspi-accessible.h    2020-09-05 
01:56:27.960104700 +0200
+++ new/at-spi2-core-2.38.0/atspi/atspi-accessible.h    2020-09-12 
21:22:56.189964300 +0200
@@ -66,6 +66,7 @@
   AtspiObjectClass parent_class;
 
   void (*region_changed) (AtspiAccessible *accessible, gint current_offset, 
gint last_offset);
+  void (*mode_changed) (AtspiAccessible *accessible, gboolean enabled);
 };
 
 GType atspi_accessible_get_type (void); 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/at-spi2-core-2.36.1/atspi/atspi-device-listener.c 
new/at-spi2-core-2.38.0/atspi/atspi-device-listener.c
--- old/at-spi2-core-2.36.1/atspi/atspi-device-listener.c       2020-09-05 
01:56:27.960104700 +0200
+++ new/at-spi2-core-2.38.0/atspi/atspi-device-listener.c       2020-09-12 
21:22:56.193964200 +0200
@@ -32,7 +32,7 @@
   GDestroyNotify callback_destroyed;
 } DeviceEventHandler;
 
-GObjectClass *device_parent_class;
+GObjectClass *device_listener_parent_class;
 
 /*
  * Misc. helpers.
@@ -187,7 +187,7 @@
   
   g_list_free (listener->callbacks);
 
-  device_parent_class->finalize (object);
+  device_listener_parent_class->finalize (object);
 }
 
 static void
@@ -195,7 +195,7 @@
 {
   GObjectClass *object_class = (GObjectClass *) klass;
 
-  device_parent_class = g_type_class_peek_parent (klass);
+  device_listener_parent_class = g_type_class_peek_parent (klass);
   object_class->finalize = atspi_device_listener_finalize;
 
   klass->device_event = atspi_device_event_dispatch;
@@ -398,7 +398,8 @@
 
 gchar *
 _atspi_device_listener_get_path (AtspiDeviceListener *listener)
-{  return g_strdup_printf ("/org/a11y/atspi/listeners/%d", listener->id);
+{
+  return g_strdup_printf ("/org/a11y/atspi/listeners/%d", listener->id);
 }
 
 G_DEFINE_BOXED_TYPE (AtspiDeviceEvent,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/at-spi2-core-2.36.1/atspi/atspi-event-listener.c 
new/at-spi2-core-2.38.0/atspi/atspi-event-listener.c
--- old/at-spi2-core-2.36.1/atspi/atspi-event-listener.c        2020-09-05 
01:56:27.960104700 +0200
+++ new/at-spi2-core-2.38.0/atspi/atspi-event-listener.c        2020-09-12 
21:22:56.193964200 +0200
@@ -335,40 +335,10 @@
   return TRUE;
 }
 
-static gchar *
-strdup_and_adjust_for_dbus (const char *s)
-{
-  gchar *d = g_strdup (s);
-  gchar *p;
-  int parts = 0;
-
-  if (!d)
-    return NULL;
-
-  for (p = d; *p; p++)
-  {
-    if (*p == '-')
-    {
-      memmove (p, p + 1, g_utf8_strlen (p, -1));
-      *p = toupper (*p);
-    }
-    else if (*p == ':')
-    {
-      parts++;
-      if (parts == 2)
-        break;
-      p [1] = toupper (p [1]);
-    }
-  }
-
-  d [0] = toupper (d [0]);
-  return d;
-}
-
 static gboolean
 convert_event_type_to_dbus (const char *eventType, char **categoryp, char 
**namep, char **detailp, GPtrArray **matchrule_array)
 {
-  gchar *tmp = strdup_and_adjust_for_dbus (eventType);
+  gchar *tmp = _atspi_strdup_and_adjust_for_dbus (eventType);
   char *category = NULL, *name = NULL, *detail = NULL;
   char *saveptr = NULL;
 
@@ -630,7 +600,7 @@
   for (i = 0; i < src->len; i++)
     {
       gchar *dup = g_strdup (g_array_index (src, char *, i));
-    g_array_append_val (dst, dup);
+      g_array_append_val (dst, dup);
     }
   return dst;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/at-spi2-core-2.36.1/atspi/atspi-misc-private.h 
new/at-spi2-core-2.38.0/atspi/atspi-misc-private.h
--- old/at-spi2-core-2.36.1/atspi/atspi-misc-private.h  2020-09-05 
01:56:27.964104700 +0200
+++ new/at-spi2-core-2.38.0/atspi/atspi-misc-private.h  2020-09-12 
21:22:56.197964400 +0200
@@ -168,6 +168,8 @@
 void _atspi_set_error_no_sync (GError **error);
 
 gboolean _atspi_prepare_screen_reader_interface ();
+
+gchar * _atspi_strdup_and_adjust_for_dbus (const char *s);
 G_END_DECLS
 
 #endif /* _ATSPI_MISC_PRIVATE_H_ */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/at-spi2-core-2.36.1/atspi/atspi-misc.c 
new/at-spi2-core-2.38.0/atspi/atspi-misc.c
--- old/at-spi2-core-2.36.1/atspi/atspi-misc.c  2020-09-05 01:56:27.964104700 
+0200
+++ new/at-spi2-core-2.38.0/atspi/atspi-misc.c  2020-09-12 21:22:56.197964400 
+0200
@@ -35,6 +35,7 @@
 #include "atspi-gmain.h"
 #include <stdio.h>
 #include <string.h>
+#include <ctype.h>
 
 static void handle_get_items (DBusPendingCall *pending, void *user_data);
 
@@ -1899,3 +1900,33 @@
   dbus_connection_add_filter (a11y_bus, screen_reader_filter, NULL, NULL);
   return TRUE;
 }
+
+gchar *
+_atspi_strdup_and_adjust_for_dbus (const char *s)
+{
+  gchar *d = g_strdup (s);
+  gchar *p;
+  int parts = 0;
+
+  if (!d)
+    return NULL;
+
+  for (p = d; *p; p++)
+  {
+    if (*p == '-')
+    {
+      memmove (p, p + 1, g_utf8_strlen (p, -1));
+      *p = toupper (*p);
+    }
+    else if (*p == ':')
+    {
+      parts++;
+      if (parts == 2)
+        break;
+      p [1] = toupper (p [1]);
+    }
+  }
+
+  d [0] = toupper (d [0]);
+  return d;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/at-spi2-core-2.36.1/atspi/atspimarshal.list 
new/at-spi2-core-2.38.0/atspi/atspimarshal.list
--- old/at-spi2-core-2.36.1/atspi/atspimarshal.list     2020-09-05 
01:56:27.964104700 +0200
+++ new/at-spi2-core-2.38.0/atspi/atspimarshal.list     2020-09-12 
21:22:56.201964400 +0200
@@ -23,3 +23,4 @@
 #   BOOL       deprecated alias for BOOLEAN
 
 VOID:INT,INT
+VOID:INT,STRING
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/at-spi2-core-2.36.1/dbind/dbtest.c 
new/at-spi2-core-2.38.0/dbind/dbtest.c
--- old/at-spi2-core-2.36.1/dbind/dbtest.c      2020-09-05 01:56:27.968104800 
+0200
+++ new/at-spi2-core-2.38.0/dbind/dbtest.c      2020-09-12 21:22:56.205964300 
+0200
@@ -86,7 +86,7 @@
     dbind_any_free ("i", &v2); /* nop */
     dbus_message_unref (msg);
 
-    fprintf (stderr, "simple ok\n");
+    printf ("simple ok\n");
 }
 
 void test_array ()
@@ -117,7 +117,7 @@
     dbind_any_free ("ai", &a2);
     dbus_message_unref (msg);
 
-    fprintf (stderr, "array ok\n");
+    printf ("array ok\n");
 }
 
 /* this taught me that the struct type is a mis-nomer, 
@@ -146,7 +146,7 @@
     }
     dbus_message_iter_close_container (&iter, &arr);
 
-    fprintf (stderr, "native struct marshalling ok\n");
+    printf ("native struct marshalling ok\n");
     
     dbus_message_unref (msg);
 }
@@ -185,7 +185,7 @@
     g_assert (!strcmp (g_array_index (a2, FooBaa, 1).baa, "baA"));
     g_assert (!strcmp (g_array_index (a2, FooBaa, 1).baz, "BaZ"));
     
-    fprintf (stderr, "simple struct ok\n");
+    printf ("simple struct ok\n");
 
     dbind_any_free ("a(sss)", &a2);
     dbus_message_unref (msg);
@@ -248,7 +248,7 @@
     g_assert (c2.pad2 == 1);
     g_assert (!strcmp (c1.name, "stroustrup"));
     
-    fprintf (stderr, "complex struct ok\n");
+    printf ("complex struct ok\n");
 
     dbind_any_free (TYPEOF_COMPLEX, &c2);
     dbus_message_unref (msg);
@@ -296,7 +296,7 @@
     g_assert (p[0].pad1 == 2);
     g_assert (g_array_index (p[1].vals, dbus_uint32_t, 1) == 1000000000);
     
-    fprintf (stderr, "struct with array ok\n");
+    printf ("struct with array ok\n");
 
     dbind_any_free (TYPEOF_ARRAYSTRUCT, &a2);
     dbus_message_unref (msg);
@@ -342,7 +342,7 @@
     dbind_any_free ("ii", &o); /* nop */
     dbus_message_unref (msg);
 
-    fprintf (stderr, "two-val ok\n");
+    printf ("two-val ok\n");
 }
 
 void test_marshalling ()
@@ -355,7 +355,7 @@
     test_struct_with_array ();
     test_twovals ();
 
-    fprintf (stderr, "Marshalling ok\n");
+    printf ("Marshalling ok\n");
 }
 
 void test_teamspaces (DBusConnection *bus)
@@ -403,7 +403,7 @@
     dbind_find_c_alignment ("a(sss)");
     dbind_find_c_alignment ("(s(s)yd(d)s)");
     dbind_find_c_alignment ("a{ss}");
-    fprintf (stderr, "helpers passed\n");
+    printf ("helpers passed\n");
 }
 
 int main (int argc, char **argv)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/at-spi2-core-2.36.1/meson.build 
new/at-spi2-core-2.38.0/meson.build
--- old/at-spi2-core-2.36.1/meson.build 2020-09-05 01:56:27.968104800 +0200
+++ new/at-spi2-core-2.38.0/meson.build 2020-09-12 21:22:56.205964300 +0200
@@ -1,12 +1,12 @@
 project('at-spi2-core', 'c',
-        version: '2.36.1',
+        version: '2.38.0',
         license: 'LGPLv2.1+',
         default_options: [
           'buildtype=debugoptimized',
           'warning_level=1',
           'c_std=c99',
         ],
-        meson_version: '>= 0.40.1')
+        meson_version: '>= 0.46.0')
 
 add_project_arguments([ '-D_POSIX_C_SOURCE=200809L', '-D_DEFAULT_SOURCE' ], 
language: 'c')
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/at-spi2-core-2.36.1/po/pt.po 
new/at-spi2-core-2.38.0/po/pt.po
--- old/at-spi2-core-2.36.1/po/pt.po    2020-09-05 01:56:27.972104800 +0200
+++ new/at-spi2-core-2.38.0/po/pt.po    2020-09-12 21:22:56.213964500 +0200
@@ -7,27 +7,25 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: 3.12\n"
-"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=at-";
-"spi&keywords=I18N+L10N&component=general\n"
-"POT-Creation-Date: 2015-06-08 02:51+0000\n"
-"PO-Revision-Date: 2015-06-24 06:27+0100\n"
-"Last-Translator: Pedro Albuquerque <palbuquerqu...@openmailbox.com>\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/at-spi2-core/issues\n";
+"POT-Creation-Date: 2020-05-27 15:50+0000\n"
+"PO-Revision-Date: 2020-06-24 11:33+0100\n"
+"Last-Translator: Manuela Silva <mm...@sky.com>\n"
 "Language-Team: Português <palbuquerqu...@openmailbox.com>\n"
 "Language: pt\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Gtranslator 2.91.6\n"
+"X-Generator: Poedit 2.3.1\n"
 
-#: ../atspi/atspi-component.c:326 ../atspi/atspi-misc.c:1037
-#: ../atspi/atspi-value.c:111
+#: atspi/atspi-component.c:332 atspi/atspi-misc.c:1075 atspi/atspi-value.c:111
 msgid "The application no longer exists"
 msgstr "A aplicação já não existe"
 
-#: ../atspi/atspi-misc.c:1795
+#: atspi/atspi-misc.c:1853
 msgid "Attempted synchronous call where prohibited"
-msgstr "Tentada uma chamada síncrona onde é proibida"
+msgstr "Tentativa de chamada síncrona onde proibida"
 
 #~ msgid "AT-SPI: Unknown signature %s for RemoveAccessible"
 #~ msgstr "AT-SPI: Assinatura %s desconhecida para RemoveAccessible"
@@ -38,19 +36,11 @@
 #~ msgid "AT-SPI: Error in GetItems, sender=%s, error=%s"
 #~ msgstr "AT-SPI: Erro em GetItems, invocador=%s, erro=%s"
 
-#~ msgid ""
-#~ "AT-SPI: Called _atspi_dbus_return_accessible_from_message with strange "
-#~ "signature %s"
-#~ msgstr ""
-#~ "AT-SPI: Chamada de _atspi_dbus_return_accessible_from_message com "
-#~ "assinatura incomun %s"
-
-#~ msgid ""
-#~ "AT-SPI: Called _atspi_dbus_return_hyperlink_from_message with strange "
-#~ "signature %s"
-#~ msgstr ""
-#~ "AT-SPI: Chamada de _atspi_dbus_return_hyperlink_from_message com "
-#~ "assinatura incomun %s"
+#~ msgid "AT-SPI: Called _atspi_dbus_return_accessible_from_message with 
strange signature %s"
+#~ msgstr "AT-SPI: Chamada de _atspi_dbus_return_accessible_from_message com 
assinatura incomun %s"
+
+#~ msgid "AT-SPI: Called _atspi_dbus_return_hyperlink_from_message with 
strange signature %s"
+#~ msgstr "AT-SPI: Chamada de _atspi_dbus_return_hyperlink_from_message com 
assinatura incomun %s"
 
 #~ msgid "AT-SPI: AddAccessible with unknown signature %s\n"
 #~ msgstr "AT-SPI: AddAccessible com assinatura %s desconhecida\n"
@@ -59,9 +49,7 @@
 #~ msgstr "AT-SPI: Incapaz de obter o ecrã\n"
 
 #~ msgid "AT-SPI: Accessibility bus not found - Using session bus.\n"
-#~ msgstr ""
-#~ "AT-SPI: Incapaz de encontrar o canal de acessibilidade - A utilizar o "
-#~ "canal de sessão.\n"
+#~ msgstr "AT-SPI: Incapaz de encontrar o canal de acessibilidade - A utilizar 
o canal de sessão.\n"
 
 #~ msgid "AT-SPI: Couldn't connect to bus: %s\n"
 #~ msgstr "AT-SPI: Incapaz de se ligar ao canal: %s\n"
@@ -69,10 +57,8 @@
 #~ msgid "AT-SPI: Couldn't register with bus: %s\n"
 #~ msgstr "AT-SPI: Incapaz de se registar no canal: %s\n"
 
-#~ msgid ""
-#~ "AT-SPI: expected a variant when fetching %s from interface %s; got %s\n"
-#~ msgstr ""
-#~ "AT-SPI: esperada uma variante ao obter %s do interface %s; obtida %s\n"
+#~ msgid "AT-SPI: expected a variant when fetching %s from interface %s; got 
%s\n"
+#~ msgstr "AT-SPI: esperada uma variante ao obter %s do interface %s; obtida 
%s\n"
 
 #~ msgid "atspi_dbus_get_property: Wrong type: expected %s, got %c\n"
 #~ msgstr "atspi_dbus_get_property: Tipo incorrecto: esperado %s, obtido %c\n"
@@ -86,11 +72,8 @@
 #~ msgid "Streamable content not implemented"
 #~ msgstr "Conteúdo em fluxo (stream) não está implementado"
 
-#~ msgid ""
-#~ "called atspi_event_listener_register_from_callback with a NULL event_type"
-#~ msgstr ""
-#~ "invocação de atspi_event_listener_register_from_callback com event_type "
-#~ "NULL"
+#~ msgid "called atspi_event_listener_register_from_callback with a NULL 
event_type"
+#~ msgstr "invocação de atspi_event_listener_register_from_callback com 
event_type NULL"
 
 #~ msgid "Got invalid signature %s for signal %s from interface %s\n"
 #~ msgstr "Obtida assinatura %s inválida para o sinal %s do interface %s\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/at-spi2-core-2.36.1/registryd/ucs2keysym.c 
new/at-spi2-core-2.38.0/registryd/ucs2keysym.c
--- old/at-spi2-core-2.36.1/registryd/ucs2keysym.c      2020-09-05 
01:56:27.976104700 +0200
+++ new/at-spi2-core-2.38.0/registryd/ucs2keysym.c      2020-09-12 
21:22:56.225964500 +0200
@@ -34,128 +34,132 @@
 #include <X11/X.h>
 #include "deviceeventcontroller.h"     /* for prototype */
 
+/* DO NOT UPATE BY HAND!
+ * This table can be regenerated from Xorg's keysymdef.h with the ucs2keysym.sh
+ * script.  */
 struct codepair {
   unsigned short keysym;
   unsigned short ucs;
 } keysymtab[] = {
+  { 0x0abd, 0x002e }, /*                decimalpoint . FULL STOP */
   { 0x0ba3, 0x003c }, /*                   leftcaret < LESS-THAN SIGN */
   { 0x0ba6, 0x003e }, /*                  rightcaret > GREATER-THAN SIGN */
   { 0x0bc6, 0x005f }, /*                    underbar _ LOW LINE */
   { 0x0bc0, 0x00af }, /*                     overbar ¯ MACRON */
 
+  { 0x03c0, 0x0100 }, /*                     Amacron Ā LATIN CAPITAL LETTER A 
WITH MACRON */
+  { 0x03e0, 0x0101 }, /*                     amacron ā LATIN SMALL LETTER A 
WITH MACRON */
+  { 0x01c3, 0x0102 }, /*                      Abreve Ă LATIN CAPITAL LETTER A 
WITH BREVE */
+  { 0x01e3, 0x0103 }, /*                      abreve ă LATIN SMALL LETTER A 
WITH BREVE */
   { 0x01a1, 0x0104 }, /*                     Aogonek Ą LATIN CAPITAL LETTER A 
WITH OGONEK */
   { 0x01b1, 0x0105 }, /*                     aogonek ą LATIN SMALL LETTER A 
WITH OGONEK */
-  { 0x01a5, 0x013d }, /*                      Lcaron Ľ LATIN CAPITAL LETTER L 
WITH CARON */
-  { 0x01a3, 0x0141 }, /*                     Lstroke Ł LATIN CAPITAL LETTER L 
WITH STROKE */
-  { 0x01a6, 0x015a }, /*                      Sacute Ś LATIN CAPITAL LETTER S 
WITH ACUTE */
-  { 0x01aa, 0x015e }, /*                    Scedilla Ş LATIN CAPITAL LETTER S 
WITH CEDILLA */
-  { 0x01a9, 0x0160 }, /*                      Scaron Š LATIN CAPITAL LETTER S 
WITH CARON */
-  { 0x01ab, 0x0164 }, /*                      Tcaron Ť LATIN CAPITAL LETTER T 
WITH CARON */
-  { 0x01ac, 0x0179 }, /*                      Zacute Ź LATIN CAPITAL LETTER Z 
WITH ACUTE */
-  { 0x01af, 0x017b }, /*                   Zabovedot Ż LATIN CAPITAL LETTER Z 
WITH DOT ABOVE */
-  { 0x01ae, 0x017d }, /*                      Zcaron Ž LATIN CAPITAL LETTER Z 
WITH CARON */
-  { 0x01b3, 0x0142 }, /*                     lstroke ł LATIN SMALL LETTER L 
WITH STROKE */
-  { 0x01b5, 0x013e }, /*                      lcaron ľ LATIN SMALL LETTER L 
WITH CARON */
-  { 0x01b6, 0x015b }, /*                      sacute ś LATIN SMALL LETTER S 
WITH ACUTE */
-  { 0x01b9, 0x0161 }, /*                      scaron š LATIN SMALL LETTER S 
WITH CARON */
-  { 0x01ba, 0x015f }, /*                    scedilla ş LATIN SMALL LETTER S 
WITH CEDILLA */
-  { 0x01bb, 0x0165 }, /*                      tcaron ť LATIN SMALL LETTER T 
WITH CARON */
-  { 0x01bc, 0x017a }, /*                      zacute ź LATIN SMALL LETTER Z 
WITH ACUTE */
-  { 0x01be, 0x017e }, /*                      zcaron ž LATIN SMALL LETTER Z 
WITH CARON */
-  { 0x01bf, 0x017c }, /*                   zabovedot ż LATIN SMALL LETTER Z 
WITH DOT ABOVE */
-  { 0x01c0, 0x0154 }, /*                      Racute Ŕ LATIN CAPITAL LETTER R 
WITH ACUTE */
-  { 0x01c3, 0x0102 }, /*                      Abreve Ă LATIN CAPITAL LETTER A 
WITH BREVE */
-  { 0x01c5, 0x0139 }, /*                      Lacute Ĺ LATIN CAPITAL LETTER L 
WITH ACUTE */
   { 0x01c6, 0x0106 }, /*                      Cacute Ć LATIN CAPITAL LETTER C 
WITH ACUTE */
+  { 0x01e6, 0x0107 }, /*                      cacute ć LATIN SMALL LETTER C 
WITH ACUTE */
+  { 0x02c6, 0x0108 }, /*                 Ccircumflex Ĉ LATIN CAPITAL LETTER C 
WITH CIRCUMFLEX */
+  { 0x02e6, 0x0109 }, /*                 ccircumflex ĉ LATIN SMALL LETTER C 
WITH CIRCUMFLEX */
+  { 0x02c5, 0x010a }, /*                   Cabovedot Ċ LATIN CAPITAL LETTER C 
WITH DOT ABOVE */
+  { 0x02e5, 0x010b }, /*                   cabovedot ċ LATIN SMALL LETTER C 
WITH DOT ABOVE */
   { 0x01c8, 0x010c }, /*                      Ccaron Č LATIN CAPITAL LETTER C 
WITH CARON */
-  { 0x01ca, 0x0118 }, /*                     Eogonek Ę LATIN CAPITAL LETTER E 
WITH OGONEK */
-  { 0x01cc, 0x011a }, /*                      Ecaron Ě LATIN CAPITAL LETTER E 
WITH CARON */
+  { 0x01e8, 0x010d }, /*                      ccaron č LATIN SMALL LETTER C 
WITH CARON */
   { 0x01cf, 0x010e }, /*                      Dcaron Ď LATIN CAPITAL LETTER D 
WITH CARON */
+  { 0x01ef, 0x010f }, /*                      dcaron ď LATIN SMALL LETTER D 
WITH CARON */
   { 0x01d0, 0x0110 }, /*                     Dstroke Đ LATIN CAPITAL LETTER D 
WITH STROKE */
-  { 0x01d1, 0x0143 }, /*                      Nacute Ń LATIN CAPITAL LETTER N 
WITH ACUTE */
-  { 0x01d2, 0x0147 }, /*                      Ncaron Ň LATIN CAPITAL LETTER N 
WITH CARON */
-  { 0x01d5, 0x0150 }, /*                Odoubleacute Ő LATIN CAPITAL LETTER O 
WITH DOUBLE ACUTE */
-  { 0x01d8, 0x0158 }, /*                      Rcaron Ř LATIN CAPITAL LETTER R 
WITH CARON */
-  { 0x01d9, 0x016e }, /*                       Uring Ů LATIN CAPITAL LETTER U 
WITH RING ABOVE */
-  { 0x01db, 0x0170 }, /*                Udoubleacute Ű LATIN CAPITAL LETTER U 
WITH DOUBLE ACUTE */
-  { 0x01de, 0x0162 }, /*                    Tcedilla Ţ LATIN CAPITAL LETTER T 
WITH CEDILLA */
-  { 0x01e0, 0x0155 }, /*                      racute ŕ LATIN SMALL LETTER R 
WITH ACUTE */
-  { 0x01e3, 0x0103 }, /*                      abreve ă LATIN SMALL LETTER A 
WITH BREVE */
-  { 0x01e5, 0x013a }, /*                      lacute ĺ LATIN SMALL LETTER L 
WITH ACUTE */
-  { 0x01e6, 0x0107 }, /*                      cacute ć LATIN SMALL LETTER C 
WITH ACUTE */
-  { 0x01e8, 0x010d }, /*                      ccaron č LATIN SMALL LETTER C 
WITH CARON */
+  { 0x01f0, 0x0111 }, /*                     dstroke đ LATIN SMALL LETTER D 
WITH STROKE */
+  { 0x03aa, 0x0112 }, /*                     Emacron Ē LATIN CAPITAL LETTER E 
WITH MACRON */
+  { 0x03ba, 0x0113 }, /*                     emacron ē LATIN SMALL LETTER E 
WITH MACRON */
+  { 0x03cc, 0x0116 }, /*                   Eabovedot Ė LATIN CAPITAL LETTER E 
WITH DOT ABOVE */
+  { 0x03ec, 0x0117 }, /*                   eabovedot ė LATIN SMALL LETTER E 
WITH DOT ABOVE */
+  { 0x01ca, 0x0118 }, /*                     Eogonek Ę LATIN CAPITAL LETTER E 
WITH OGONEK */
   { 0x01ea, 0x0119 }, /*                     eogonek ę LATIN SMALL LETTER E 
WITH OGONEK */
+  { 0x01cc, 0x011a }, /*                      Ecaron Ě LATIN CAPITAL LETTER E 
WITH CARON */
   { 0x01ec, 0x011b }, /*                      ecaron ě LATIN SMALL LETTER E 
WITH CARON */
-  { 0x01ef, 0x010f }, /*                      dcaron ď LATIN SMALL LETTER D 
WITH CARON */
-  { 0x01f0, 0x0111 }, /*                     dstroke đ LATIN SMALL LETTER D 
WITH STROKE */
-  { 0x01f1, 0x0144 }, /*                      nacute ń LATIN SMALL LETTER N 
WITH ACUTE */
-  { 0x01f2, 0x0148 }, /*                      ncaron ň LATIN SMALL LETTER N 
WITH CARON */
-  { 0x01f5, 0x0151 }, /*                odoubleacute ő LATIN SMALL LETTER O 
WITH DOUBLE ACUTE */
-  { 0x01f8, 0x0159 }, /*                      rcaron ř LATIN SMALL LETTER R 
WITH CARON */
-  { 0x01f9, 0x016f }, /*                       uring ů LATIN SMALL LETTER U 
WITH RING ABOVE */
-  { 0x01fb, 0x0171 }, /*                udoubleacute ű LATIN SMALL LETTER U 
WITH DOUBLE ACUTE */
-  { 0x01fe, 0x0163 }, /*                    tcedilla ţ LATIN SMALL LETTER T 
WITH CEDILLA */
-  { 0x02a1, 0x0126 }, /*                     Hstroke Ħ LATIN CAPITAL LETTER H 
WITH STROKE */
-  { 0x02a6, 0x0124 }, /*                 Hcircumflex Ĥ LATIN CAPITAL LETTER H 
WITH CIRCUMFLEX */
-  { 0x02a9, 0x0130 }, /*                   Iabovedot İ LATIN CAPITAL LETTER I 
WITH DOT ABOVE */
+  { 0x02d8, 0x011c }, /*                 Gcircumflex Ĝ LATIN CAPITAL LETTER G 
WITH CIRCUMFLEX */
+  { 0x02f8, 0x011d }, /*                 gcircumflex ĝ LATIN SMALL LETTER G 
WITH CIRCUMFLEX */
   { 0x02ab, 0x011e }, /*                      Gbreve Ğ LATIN CAPITAL LETTER G 
WITH BREVE */
-  { 0x02ac, 0x0134 }, /*                 Jcircumflex Ĵ LATIN CAPITAL LETTER J 
WITH CIRCUMFLEX */
-  { 0x02b1, 0x0127 }, /*                     hstroke ħ LATIN SMALL LETTER H 
WITH STROKE */
-  { 0x02b6, 0x0125 }, /*                 hcircumflex ĥ LATIN SMALL LETTER H 
WITH CIRCUMFLEX */
-  { 0x02b9, 0x0131 }, /*                    idotless ı LATIN SMALL LETTER 
DOTLESS I */
   { 0x02bb, 0x011f }, /*                      gbreve ğ LATIN SMALL LETTER G 
WITH BREVE */
-  { 0x02bc, 0x0135 }, /*                 jcircumflex ĵ LATIN SMALL LETTER J 
WITH CIRCUMFLEX */
-  { 0x02c5, 0x010a }, /*                   Cabovedot Ċ LATIN CAPITAL LETTER C 
WITH DOT ABOVE */
-  { 0x02c6, 0x0108 }, /*                 Ccircumflex Ĉ LATIN CAPITAL LETTER C 
WITH CIRCUMFLEX */
   { 0x02d5, 0x0120 }, /*                   Gabovedot Ġ LATIN CAPITAL LETTER G 
WITH DOT ABOVE */
-  { 0x02d8, 0x011c }, /*                 Gcircumflex Ĝ LATIN CAPITAL LETTER G 
WITH CIRCUMFLEX */
-  { 0x02dd, 0x016c }, /*                      Ubreve Ŭ LATIN CAPITAL LETTER U 
WITH BREVE */
-  { 0x02de, 0x015c }, /*                 Scircumflex Ŝ LATIN CAPITAL LETTER S 
WITH CIRCUMFLEX */
-  { 0x02e5, 0x010b }, /*                   cabovedot ċ LATIN SMALL LETTER C 
WITH DOT ABOVE */
-  { 0x02e6, 0x0109 }, /*                 ccircumflex ĉ LATIN SMALL LETTER C 
WITH CIRCUMFLEX */
   { 0x02f5, 0x0121 }, /*                   gabovedot ġ LATIN SMALL LETTER G 
WITH DOT ABOVE */
-  { 0x02f8, 0x011d }, /*                 gcircumflex ĝ LATIN SMALL LETTER G 
WITH CIRCUMFLEX */
-  { 0x02fd, 0x016d }, /*                      ubreve ŭ LATIN SMALL LETTER U 
WITH BREVE */
-  { 0x02fe, 0x015d }, /*                 scircumflex ŝ LATIN SMALL LETTER S 
WITH CIRCUMFLEX */
-  { 0x03a2, 0x0138 }, /*                         kra ĸ LATIN SMALL LETTER KRA 
*/
-  { 0x03a3, 0x0156 }, /*                    Rcedilla Ŗ LATIN CAPITAL LETTER R 
WITH CEDILLA */
-  { 0x03a5, 0x0128 }, /*                      Itilde Ĩ LATIN CAPITAL LETTER I 
WITH TILDE */
-  { 0x03a6, 0x013b }, /*                    Lcedilla Ļ LATIN CAPITAL LETTER L 
WITH CEDILLA */
-  { 0x03aa, 0x0112 }, /*                     Emacron Ē LATIN CAPITAL LETTER E 
WITH MACRON */
   { 0x03ab, 0x0122 }, /*                    Gcedilla Ģ LATIN CAPITAL LETTER G 
WITH CEDILLA */
-  { 0x03ac, 0x0166 }, /*                      Tslash Ŧ LATIN CAPITAL LETTER T 
WITH STROKE */
-  { 0x03b3, 0x0157 }, /*                    rcedilla ŗ LATIN SMALL LETTER R 
WITH CEDILLA */
+  { 0x03bb, 0x0123 }, /*                    gcedilla ģ LATIN SMALL LETTER G 
WITH CEDILLA */
+  { 0x02a6, 0x0124 }, /*                 Hcircumflex Ĥ LATIN CAPITAL LETTER H 
WITH CIRCUMFLEX */
+  { 0x02b6, 0x0125 }, /*                 hcircumflex ĥ LATIN SMALL LETTER H 
WITH CIRCUMFLEX */
+  { 0x02a1, 0x0126 }, /*                     Hstroke Ħ LATIN CAPITAL LETTER H 
WITH STROKE */
+  { 0x02b1, 0x0127 }, /*                     hstroke ħ LATIN SMALL LETTER H 
WITH STROKE */
+  { 0x03a5, 0x0128 }, /*                      Itilde Ĩ LATIN CAPITAL LETTER I 
WITH TILDE */
   { 0x03b5, 0x0129 }, /*                      itilde ĩ LATIN SMALL LETTER I 
WITH TILDE */
+  { 0x03cf, 0x012a }, /*                     Imacron Ī LATIN CAPITAL LETTER I 
WITH MACRON */
+  { 0x03ef, 0x012b }, /*                     imacron ī LATIN SMALL LETTER I 
WITH MACRON */
+  { 0x03c7, 0x012e }, /*                     Iogonek Į LATIN CAPITAL LETTER I 
WITH OGONEK */
+  { 0x03e7, 0x012f }, /*                     iogonek į LATIN SMALL LETTER I 
WITH OGONEK */
+  { 0x02a9, 0x0130 }, /*                   Iabovedot İ LATIN CAPITAL LETTER I 
WITH DOT ABOVE */
+  { 0x02b9, 0x0131 }, /*                    idotless ı LATIN SMALL LETTER 
DOTLESS I */
+  { 0x02ac, 0x0134 }, /*                 Jcircumflex Ĵ LATIN CAPITAL LETTER J 
WITH CIRCUMFLEX */
+  { 0x02bc, 0x0135 }, /*                 jcircumflex ĵ LATIN SMALL LETTER J 
WITH CIRCUMFLEX */
+  { 0x03d3, 0x0136 }, /*                    Kcedilla Ķ LATIN CAPITAL LETTER K 
WITH CEDILLA */
+  { 0x03f3, 0x0137 }, /*                    kcedilla ķ LATIN SMALL LETTER K 
WITH CEDILLA */
+  { 0x03a2, 0x0138 }, /*                         kra ĸ LATIN SMALL LETTER KRA 
*/
+  { 0x01c5, 0x0139 }, /*                      Lacute Ĺ LATIN CAPITAL LETTER L 
WITH ACUTE */
+  { 0x01e5, 0x013a }, /*                      lacute ĺ LATIN SMALL LETTER L 
WITH ACUTE */
+  { 0x03a6, 0x013b }, /*                    Lcedilla Ļ LATIN CAPITAL LETTER L 
WITH CEDILLA */
   { 0x03b6, 0x013c }, /*                    lcedilla ļ LATIN SMALL LETTER L 
WITH CEDILLA */
-  { 0x03ba, 0x0113 }, /*                     emacron ē LATIN SMALL LETTER E 
WITH MACRON */
-  { 0x03bb, 0x0123 }, /*                    gcedilla ģ LATIN SMALL LETTER G 
WITH CEDILLA */
-  { 0x03bc, 0x0167 }, /*                      tslash ŧ LATIN SMALL LETTER T 
WITH STROKE */
+  { 0x01a5, 0x013d }, /*                      Lcaron Ľ LATIN CAPITAL LETTER L 
WITH CARON */
+  { 0x01b5, 0x013e }, /*                      lcaron ľ LATIN SMALL LETTER L 
WITH CARON */
+  { 0x01a3, 0x0141 }, /*                     Lstroke Ł LATIN CAPITAL LETTER L 
WITH STROKE */
+  { 0x01b3, 0x0142 }, /*                     lstroke ł LATIN SMALL LETTER L 
WITH STROKE */
+  { 0x01d1, 0x0143 }, /*                      Nacute Ń LATIN CAPITAL LETTER N 
WITH ACUTE */
+  { 0x01f1, 0x0144 }, /*                      nacute ń LATIN SMALL LETTER N 
WITH ACUTE */
+  { 0x03d1, 0x0145 }, /*                    Ncedilla Ņ LATIN CAPITAL LETTER N 
WITH CEDILLA */
+  { 0x03f1, 0x0146 }, /*                    ncedilla ņ LATIN SMALL LETTER N 
WITH CEDILLA */
+  { 0x01d2, 0x0147 }, /*                      Ncaron Ň LATIN CAPITAL LETTER N 
WITH CARON */
+  { 0x01f2, 0x0148 }, /*                      ncaron ň LATIN SMALL LETTER N 
WITH CARON */
   { 0x03bd, 0x014a }, /*                         ENG Ŋ LATIN CAPITAL LETTER 
ENG */
   { 0x03bf, 0x014b }, /*                         eng ŋ LATIN SMALL LETTER ENG 
*/
-  { 0x03c0, 0x0100 }, /*                     Amacron Ā LATIN CAPITAL LETTER A 
WITH MACRON */
-  { 0x03c7, 0x012e }, /*                     Iogonek Į LATIN CAPITAL LETTER I 
WITH OGONEK */
-  { 0x03cc, 0x0116 }, /*                   Eabovedot Ė LATIN CAPITAL LETTER E 
WITH DOT ABOVE */
-  { 0x03cf, 0x012a }, /*                     Imacron Ī LATIN CAPITAL LETTER I 
WITH MACRON */
-  { 0x03d1, 0x0145 }, /*                    Ncedilla Ņ LATIN CAPITAL LETTER N 
WITH CEDILLA */
   { 0x03d2, 0x014c }, /*                     Omacron Ō LATIN CAPITAL LETTER O 
WITH MACRON */
-  { 0x03d3, 0x0136 }, /*                    Kcedilla Ķ LATIN CAPITAL LETTER K 
WITH CEDILLA */
-  { 0x03d9, 0x0172 }, /*                     Uogonek Ų LATIN CAPITAL LETTER U 
WITH OGONEK */
-  { 0x03dd, 0x0168 }, /*                      Utilde Ũ LATIN CAPITAL LETTER U 
WITH TILDE */
-  { 0x03de, 0x016a }, /*                     Umacron Ū LATIN CAPITAL LETTER U 
WITH MACRON */
-  { 0x03e0, 0x0101 }, /*                     amacron ā LATIN SMALL LETTER A 
WITH MACRON */
-  { 0x03e7, 0x012f }, /*                     iogonek į LATIN SMALL LETTER I 
WITH OGONEK */
-  { 0x03ec, 0x0117 }, /*                   eabovedot ė LATIN SMALL LETTER E 
WITH DOT ABOVE */
-  { 0x03ef, 0x012b }, /*                     imacron ī LATIN SMALL LETTER I 
WITH MACRON */
-  { 0x03f1, 0x0146 }, /*                    ncedilla ņ LATIN SMALL LETTER N 
WITH CEDILLA */
   { 0x03f2, 0x014d }, /*                     omacron ō LATIN SMALL LETTER O 
WITH MACRON */
-  { 0x03f3, 0x0137 }, /*                    kcedilla ķ LATIN SMALL LETTER K 
WITH CEDILLA */
-  { 0x03f9, 0x0173 }, /*                     uogonek ų LATIN SMALL LETTER U 
WITH OGONEK */
-  { 0x03fd, 0x0169 }, /*                      utilde ũ LATIN SMALL LETTER U 
WITH TILDE */
-  { 0x03fe, 0x016b }, /*                     umacron ū LATIN SMALL LETTER U 
WITH MACRON */
-  { 0x08f6, 0x0192 }, /*                    function ƒ LATIN SMALL LETTER F 
WITH HOOK */
+  { 0x01d5, 0x0150 }, /*                Odoubleacute Ő LATIN CAPITAL LETTER O 
WITH DOUBLE ACUTE */
+  { 0x01f5, 0x0151 }, /*                odoubleacute ő LATIN SMALL LETTER O 
WITH DOUBLE ACUTE */
   { 0x13bc, 0x0152 }, /*                          OE ΠLATIN CAPITAL LIGATURE 
OE */
   { 0x13bd, 0x0153 }, /*                          oe œ LATIN SMALL LIGATURE OE 
*/
+  { 0x01c0, 0x0154 }, /*                      Racute Ŕ LATIN CAPITAL LETTER R 
WITH ACUTE */
+  { 0x01e0, 0x0155 }, /*                      racute ŕ LATIN SMALL LETTER R 
WITH ACUTE */
+  { 0x03a3, 0x0156 }, /*                    Rcedilla Ŗ LATIN CAPITAL LETTER R 
WITH CEDILLA */
+  { 0x03b3, 0x0157 }, /*                    rcedilla ŗ LATIN SMALL LETTER R 
WITH CEDILLA */
+  { 0x01d8, 0x0158 }, /*                      Rcaron Ř LATIN CAPITAL LETTER R 
WITH CARON */
+  { 0x01f8, 0x0159 }, /*                      rcaron ř LATIN SMALL LETTER R 
WITH CARON */
+  { 0x01a6, 0x015a }, /*                      Sacute Ś LATIN CAPITAL LETTER S 
WITH ACUTE */
+  { 0x01b6, 0x015b }, /*                      sacute ś LATIN SMALL LETTER S 
WITH ACUTE */
+  { 0x02de, 0x015c }, /*                 Scircumflex Ŝ LATIN CAPITAL LETTER S 
WITH CIRCUMFLEX */
+  { 0x02fe, 0x015d }, /*                 scircumflex ŝ LATIN SMALL LETTER S 
WITH CIRCUMFLEX */
+  { 0x01aa, 0x015e }, /*                    Scedilla Ş LATIN CAPITAL LETTER S 
WITH CEDILLA */
+  { 0x01ba, 0x015f }, /*                    scedilla ş LATIN SMALL LETTER S 
WITH CEDILLA */
+  { 0x01a9, 0x0160 }, /*                      Scaron Š LATIN CAPITAL LETTER S 
WITH CARON */
+  { 0x01b9, 0x0161 }, /*                      scaron š LATIN SMALL LETTER S 
WITH CARON */
+  { 0x01de, 0x0162 }, /*                    Tcedilla Ţ LATIN CAPITAL LETTER T 
WITH CEDILLA */
+  { 0x01fe, 0x0163 }, /*                    tcedilla ţ LATIN SMALL LETTER T 
WITH CEDILLA */
+  { 0x01ab, 0x0164 }, /*                      Tcaron Ť LATIN CAPITAL LETTER T 
WITH CARON */
+  { 0x01bb, 0x0165 }, /*                      tcaron ť LATIN SMALL LETTER T 
WITH CARON */
+  { 0x03ac, 0x0166 }, /*                      Tslash Ŧ LATIN CAPITAL LETTER T 
WITH STROKE */
+  { 0x03bc, 0x0167 }, /*                      tslash ŧ LATIN SMALL LETTER T 
WITH STROKE */
+  { 0x03dd, 0x0168 }, /*                      Utilde Ũ LATIN CAPITAL LETTER U 
WITH TILDE */
+  { 0x03fd, 0x0169 }, /*                      utilde ũ LATIN SMALL LETTER U 
WITH TILDE */
+  { 0x03de, 0x016a }, /*                     Umacron Ū LATIN CAPITAL LETTER U 
WITH MACRON */
+  { 0x03fe, 0x016b }, /*                     umacron ū LATIN SMALL LETTER U 
WITH MACRON */
+  { 0x02dd, 0x016c }, /*                      Ubreve Ŭ LATIN CAPITAL LETTER U 
WITH BREVE */
+  { 0x02fd, 0x016d }, /*                      ubreve ŭ LATIN SMALL LETTER U 
WITH BREVE */
+  { 0x01d9, 0x016e }, /*                       Uring Ů LATIN CAPITAL LETTER U 
WITH RING ABOVE */
+  { 0x01f9, 0x016f }, /*                       uring ů LATIN SMALL LETTER U 
WITH RING ABOVE */
+  { 0x01db, 0x0170 }, /*                Udoubleacute Ű LATIN CAPITAL LETTER U 
WITH DOUBLE ACUTE */
+  { 0x01fb, 0x0171 }, /*                udoubleacute ű LATIN SMALL LETTER U 
WITH DOUBLE ACUTE */
+  { 0x03d9, 0x0172 }, /*                     Uogonek Ų LATIN CAPITAL LETTER U 
WITH OGONEK */
+  { 0x03f9, 0x0173 }, /*                     uogonek ų LATIN SMALL LETTER U 
WITH OGONEK */
   { 0x13be, 0x0178 }, /*                  Ydiaeresis Ÿ LATIN CAPITAL LETTER Y 
WITH DIAERESIS */
+  { 0x01ac, 0x0179 }, /*                      Zacute Ź LATIN CAPITAL LETTER Z 
WITH ACUTE */
+  { 0x01bc, 0x017a }, /*                      zacute ź LATIN SMALL LETTER Z 
WITH ACUTE */
+  { 0x01af, 0x017b }, /*                   Zabovedot Ż LATIN CAPITAL LETTER Z 
WITH DOT ABOVE */
+  { 0x01bf, 0x017c }, /*                   zabovedot ż LATIN SMALL LETTER Z 
WITH DOT ABOVE */
+  { 0x01ae, 0x017d }, /*                      Zcaron Ž LATIN CAPITAL LETTER Z 
WITH CARON */
+  { 0x01be, 0x017e }, /*                      zcaron ž LATIN SMALL LETTER Z 
WITH CARON */
+  { 0x08f6, 0x0192 }, /*                    function ƒ LATIN SMALL LETTER F 
WITH HOOK */
 
   { 0x01b7, 0x02c7 }, /*                       caron ˇ CARON */
   { 0x01a2, 0x02d8 }, /*                       breve ˘ BREVE */
@@ -196,7 +200,7 @@
   { 0x07d7, 0x03a7 }, /*                   Greek_CHI Χ GREEK CAPITAL LETTER 
CHI */
   { 0x07d8, 0x03a8 }, /*                   Greek_PSI Ψ GREEK CAPITAL LETTER 
PSI */
   { 0x07d9, 0x03a9 }, /*                 Greek_OMEGA Ω GREEK CAPITAL LETTER 
OMEGA */
-  { 0x07a5, 0x03aa }, /*         Greek_IOTAdiaeresis Ϊ GREEK CAPITAL LETTER 
IOTA WITH DIALYTIKA */
+  { 0x07a5, 0x03aa }, /*          Greek_IOTAdieresis Ϊ GREEK CAPITAL LETTER 
IOTA WITH DIALYTIKA */
   { 0x07a9, 0x03ab }, /*       Greek_UPSILONdieresis Ϋ GREEK CAPITAL LETTER 
UPSILON WITH DIALYTIKA */
   { 0x07b1, 0x03ac }, /*           Greek_alphaaccent ά GREEK SMALL LETTER 
ALPHA WITH TONOS */
   { 0x07b2, 0x03ad }, /*         Greek_epsilonaccent έ GREEK SMALL LETTER 
EPSILON WITH TONOS */
@@ -326,6 +330,8 @@
   { 0x06ac, 0x045c }, /*               Macedonia_kje ќ CYRILLIC SMALL LETTER 
KJE */
   { 0x06ae, 0x045e }, /*         Byelorussian_shortu ў CYRILLIC SMALL LETTER 
SHORT U */
   { 0x06af, 0x045f }, /*               Cyrillic_dzhe џ CYRILLIC SMALL LETTER 
DZHE */
+  { 0x06bd, 0x0490 }, /*   Ukrainian_GHE_WITH_UPTURN Ґ CYRILLIC CAPITAL LETTER 
GHE WITH UPTURN */
+  { 0x06ad, 0x0491 }, /*   Ukrainian_ghe_with_upturn ґ CYRILLIC SMALL LETTER 
GHE WITH UPTURN */
 
   { 0x0ce0, 0x05d0 }, /*                hebrew_aleph א HEBREW LETTER ALEF */
   { 0x0ce1, 0x05d1 }, /*                  hebrew_bet ב HEBREW LETTER BET */
@@ -519,7 +525,6 @@
   { 0x0ef9, 0x11f0 }, /*  Hangul_J_KkogjiDalrinIeung ᇰ HANGUL JONGSEONG 
YESIEUNG */
   { 0x0efa, 0x11f9 }, /*        Hangul_J_YeorinHieuh ᇹ HANGUL JONGSEONG 
YEORINHIEUH */
 
- 
   { 0x0aa2, 0x2002 }, /*                     enspace   EN SPACE */
   { 0x0aa1, 0x2003 }, /*                     emspace   EM SPACE */
   { 0x0aa3, 0x2004 }, /*                    em3space   THREE-PER-EM SPACE */
@@ -544,12 +549,13 @@
   { 0x0ae6, 0x2022 }, /*          enfilledcircbullet • BULLET */
   { 0x0aaf, 0x2025 }, /*             doubbaselinedot ‥ TWO DOT LEADER */
   { 0x0aae, 0x2026 }, /*                    ellipsis … HORIZONTAL ELLIPSIS */
+  { 0x0ad5, 0x2030 }, /*                    permille ‰ PER MILLE SIGN */
   { 0x0ad6, 0x2032 }, /*                     minutes ′ PRIME */
   { 0x0ad7, 0x2033 }, /*                     seconds ″ DOUBLE PRIME */
   { 0x0afc, 0x2038 }, /*                       caret ‸ CARET */
   { 0x047e, 0x203e }, /*                    overline ‾ OVERLINE */
   { 0x0eff, 0x20a9 }, /*                  Korean_Won ₩ WON SIGN */
-  { 0x20ac, 0x20ac }, /*                        Euro € EURO SIGN */
+  { 0x20ac, 0x20ac }, /*                    EuroSign € EURO SIGN */
 
   { 0x0ab8, 0x2105 }, /*                      careof ℅ CARE OF */
   { 0x06b0, 0x2116 }, /*                  numerosign № NUMERO SIGN */
@@ -574,15 +580,20 @@
   { 0x08fe, 0x2193 }, /*                   downarrow ↓ DOWNWARDS ARROW */
   { 0x08ce, 0x21d2 }, /*                     implies ⇒ RIGHTWARDS DOUBLE ARROW 
*/
   { 0x08cd, 0x21d4 }, /*                    ifonlyif ⇔ LEFT RIGHT DOUBLE ARROW 
*/
+
   { 0x08ef, 0x2202 }, /*           partialderivative ∂ PARTIAL DIFFERENTIAL */
   { 0x08c5, 0x2207 }, /*                       nabla ∇ NABLA */
   { 0x0bca, 0x2218 }, /*                         jot ∘ RING OPERATOR */
   { 0x08d6, 0x221a }, /*                     radical √ SQUARE ROOT */
   { 0x08c1, 0x221d }, /*                   variation ∝ PROPORTIONAL TO */
   { 0x08c2, 0x221e }, /*                    infinity ∞ INFINITY */
+  { 0x0ba9, 0x2227 }, /*                     upcaret ∧ LOGICAL AND */
   { 0x08de, 0x2227 }, /*                  logicaland ∧ LOGICAL AND */
+  { 0x0ba8, 0x2228 }, /*                   downcaret ∨ LOGICAL OR */
   { 0x08df, 0x2228 }, /*                   logicalor ∨ LOGICAL OR */
+  { 0x0bc3, 0x2229 }, /*                      upshoe ∩ INTERSECTION */
   { 0x08dc, 0x2229 }, /*                intersection ∩ INTERSECTION */
+  { 0x0bd6, 0x222a }, /*                    downshoe ∪ UNION */
   { 0x08dd, 0x222a }, /*                       union ∪ UNION */
   { 0x08bf, 0x222b }, /*                    integral ∫ INTEGRAL */
   { 0x08c0, 0x2234 }, /*                   therefore ∴ THEREFORE */
@@ -592,44 +603,51 @@
   { 0x08cf, 0x2261 }, /*                   identical ≡ IDENTICAL TO */
   { 0x08bc, 0x2264 }, /*               lessthanequal ≤ LESS-THAN OR EQUAL TO */
   { 0x08be, 0x2265 }, /*            greaterthanequal ≥ GREATER-THAN OR EQUAL 
TO */
+  { 0x0bda, 0x2282 }, /*                    leftshoe ⊂ SUBSET OF */
   { 0x08da, 0x2282 }, /*                  includedin ⊂ SUBSET OF */
+  { 0x0bd8, 0x2283 }, /*                   rightshoe ⊃ SUPERSET OF */
   { 0x08db, 0x2283 }, /*                    includes ⊃ SUPERSET OF */
-  { 0x0bdc, 0x22a2 }, /*                    lefttack ⊢ RIGHT TACK */
-  { 0x0bfc, 0x22a3 }, /*                   righttack ⊣ LEFT TACK */
-  { 0x0bce, 0x22a4 }, /*                      uptack ⊤ DOWN TACK */
-  { 0x0bc2, 0x22a5 }, /*                    downtack ⊥ UP TACK */
+  { 0x0bfc, 0x22a2 }, /*                   righttack ⊢ RIGHT TACK */
+  { 0x0bdc, 0x22a3 }, /*                    lefttack ⊣ LEFT TACK */
+  { 0x0bc2, 0x22a4 }, /*                    downtack ⊤ DOWN TACK */
+  { 0x0bce, 0x22a5 }, /*                      uptack ⊥ UP TACK */
+
   { 0x0bd3, 0x2308 }, /*                     upstile ⌈ LEFT CEILING */
   { 0x0bc4, 0x230a }, /*                   downstile ⌊ LEFT FLOOR */
   { 0x0afa, 0x2315 }, /*           telephonerecorder ⌕ TELEPHONE RECORDER */
   { 0x08a4, 0x2320 }, /*                 topintegral ⌠ TOP HALF INTEGRAL */
   { 0x08a5, 0x2321 }, /*                 botintegral ⌡ BOTTOM HALF INTEGRAL */
-  { 0x0abc, 0x2329 }, /*            leftanglebracket 〈 LEFT-POINTING ANGLE 
BRACKET */
-  { 0x0abe, 0x232a }, /*           rightanglebracket 〉 RIGHT-POINTING ANGLE 
BRACKET */
+  { 0x0abc, 0x2329 }, /*            leftanglebracket 〈 LEFT-POINTING ANGLE 
BRACKET, not U+27E8 per xterm source */
+  { 0x0abe, 0x232a }, /*           rightanglebracket 〉 RIGHT-POINTING ANGLE 
BRACKET, not U+27E9 per xterm source */
   { 0x0bcc, 0x2395 }, /*                        quad ⎕ APL FUNCTIONAL SYMBOL 
QUAD */
-  { 0x08ab, 0x239b }, /*               topleftparens ⎛ ??? */
-  { 0x08ac, 0x239d }, /*               botleftparens ⎝ ??? */
-  { 0x08ad, 0x239e }, /*              toprightparens ⎞ ??? */
-  { 0x08ae, 0x23a0 }, /*              botrightparens ⎠ ??? */
-  { 0x08a7, 0x23a1 }, /*            topleftsqbracket ⎡ ??? */
-  { 0x08a8, 0x23a3 }, /*            botleftsqbracket ⎣ ??? */
-  { 0x08a9, 0x23a4 }, /*           toprightsqbracket ⎤ ??? */
-  { 0x08aa, 0x23a6 }, /*           botrightsqbracket ⎦ ??? */
-  { 0x08af, 0x23a8 }, /*        leftmiddlecurlybrace ⎨ ??? */
-  { 0x08b0, 0x23ac }, /*       rightmiddlecurlybrace ⎬ ??? */
-  { 0x08a1, 0x23b7 }, /*                 leftradical ⎷ ??? */
-  { 0x09ef, 0x23ba }, /*              horizlinescan1 ⎺ HORIZONTAL SCAN LINE-1 
(Unicode 3.2 draft) */
-  { 0x09f0, 0x23bb }, /*              horizlinescan3 ⎻ HORIZONTAL SCAN LINE-3 
(Unicode 3.2 draft) */
-  { 0x09f2, 0x23bc }, /*              horizlinescan7 ⎼ HORIZONTAL SCAN LINE-7 
(Unicode 3.2 draft) */
-  { 0x09f3, 0x23bd }, /*              horizlinescan9 ⎽ HORIZONTAL SCAN LINE-9 
(Unicode 3.2 draft) */
+  { 0x08ab, 0x239b }, /*               topleftparens ⎛ LEFT PARENTHESIS UPPER 
HOOK */
+  { 0x08ac, 0x239d }, /*               botleftparens ⎝ LEFT PARENTHESIS LOWER 
HOOK */
+  { 0x08ad, 0x239e }, /*              toprightparens ⎞ RIGHT PARENTHESIS UPPER 
HOOK */
+  { 0x08ae, 0x23a0 }, /*              botrightparens ⎠ RIGHT PARENTHESIS LOWER 
HOOK */
+  { 0x08a7, 0x23a1 }, /*            topleftsqbracket ⎡ LEFT SQUARE BRACKET 
UPPER CORNER */
+  { 0x08a8, 0x23a3 }, /*            botleftsqbracket ⎣ LEFT SQUARE BRACKET 
LOWER CORNER */
+  { 0x08a9, 0x23a4 }, /*           toprightsqbracket ⎤ RIGHT SQUARE BRACKET 
UPPER CORNER */
+  { 0x08aa, 0x23a6 }, /*           botrightsqbracket ⎦ RIGHT SQUARE BRACKET 
LOWER CORNER */
+  { 0x08af, 0x23a8 }, /*        leftmiddlecurlybrace ⎨ LEFT CURLY BRACKET 
MIDDLE PIECE */
+  { 0x08b0, 0x23ac }, /*       rightmiddlecurlybrace ⎬ RIGHT CURLY BRACKET 
MIDDLE PIECE */
+  { 0x08a1, 0x23b7 }, /*                 leftradical ⎷ RADICAL SYMBOL BOTTOM */
+  { 0x09ef, 0x23ba }, /*              horizlinescan1 ⎺ HORIZONTAL SCAN LINE-1 
*/
+  { 0x09f0, 0x23bb }, /*              horizlinescan3 ⎻ HORIZONTAL SCAN LINE-3 
*/
+  { 0x09f2, 0x23bc }, /*              horizlinescan7 ⎼ HORIZONTAL SCAN LINE-7 
*/
+  { 0x09f3, 0x23bd }, /*              horizlinescan9 ⎽ HORIZONTAL SCAN LINE-9 
*/
+
   { 0x09e2, 0x2409 }, /*                          ht ␉ SYMBOL FOR HORIZONTAL 
TABULATION */
+  { 0x09e5, 0x240a }, /*                          lf ␊ SYMBOL FOR LINE FEED */
+  { 0x09e9, 0x240b }, /*                          vt ␋ SYMBOL FOR VERTICAL 
TABULATION */
   { 0x09e3, 0x240c }, /*                          ff ␌ SYMBOL FOR FORM FEED */
   { 0x09e4, 0x240d }, /*                          cr ␍ SYMBOL FOR CARRIAGE 
RETURN */
-  { 0x09e5, 0x240a }, /*                          lf ␊ SYMBOL FOR LINE FEED */
+  { 0x0aac, 0x2423 }, /*                 signifblank ␣ OPEN BOX */
   { 0x09e8, 0x2424 }, /*                          nl ␤ SYMBOL FOR NEWLINE */
-  { 0x09e9, 0x240b }, /*                          vt ␋ SYMBOL FOR VERTICAL 
TABULATION */
 
   { 0x08a3, 0x2500 }, /*              horizconnector ─ BOX DRAWINGS LIGHT 
HORIZONTAL */
+  { 0x09f1, 0x2500 }, /*              horizlinescan5 ─ BOX DRAWINGS LIGHT 
HORIZONTAL */
   { 0x08a6, 0x2502 }, /*               vertconnector │ BOX DRAWINGS LIGHT 
VERTICAL */
+  { 0x09f8, 0x2502 }, /*                     vertbar │ BOX DRAWINGS LIGHT 
VERTICAL */
   { 0x08a2, 0x250c }, /*              topleftradical ┌ BOX DRAWINGS LIGHT DOWN 
AND RIGHT */
   { 0x09ec, 0x250c }, /*                upleftcorner ┌ BOX DRAWINGS LIGHT DOWN 
AND RIGHT */
   { 0x09eb, 0x2510 }, /*               uprightcorner ┐ BOX DRAWINGS LIGHT DOWN 
AND LEFT */
@@ -638,8 +656,8 @@
   { 0x09f4, 0x251c }, /*                       leftt ├ BOX DRAWINGS LIGHT 
VERTICAL AND RIGHT */
   { 0x09f5, 0x2524 }, /*                      rightt ┤ BOX DRAWINGS LIGHT 
VERTICAL AND LEFT */
   { 0x09f7, 0x252c }, /*                        topt ┬ BOX DRAWINGS LIGHT DOWN 
AND HORIZONTAL */
-  { 0x09ee, 0x253c }, /*               crossinglines ┼ BOX DRAWINGS LIGHT 
VERTICAL AND HORIZONTAL */
   { 0x09f6, 0x2534 }, /*                        bott ┴ BOX DRAWINGS LIGHT UP 
AND HORIZONTAL */
+  { 0x09ee, 0x253c }, /*               crossinglines ┼ BOX DRAWINGS LIGHT 
VERTICAL AND HORIZONTAL */
   { 0x09e1, 0x2592 }, /*                checkerboard ▒ MEDIUM SHADE */
   { 0x0ae7, 0x25aa }, /*            enfilledsqbullet ▪ BLACK SMALL SQUARE */
   { 0x0ae1, 0x25ab }, /*          enopensquarebullet ▫ WHITE SMALL SQUARE */
@@ -657,16 +675,29 @@
   { 0x0acc, 0x25c1 }, /*            leftopentriangle ◁ WHITE LEFT-POINTING 
TRIANGLE */
   { 0x09e0, 0x25c6 }, /*                soliddiamond ◆ BLACK DIAMOND */
   { 0x0ace, 0x25cb }, /*                emopencircle ○ WHITE CIRCLE */
+  { 0x0bcf, 0x25cb }, /*                      circle ○ WHITE CIRCLE */
   { 0x0ade, 0x25cf }, /*              emfilledcircle ● BLACK CIRCLE */
   { 0x0ae0, 0x25e6 }, /*            enopencircbullet ◦ WHITE BULLET */
+
+  { 0x0ae5, 0x2606 }, /*                    openstar ☆ WHITE STAR */
+  { 0x0af9, 0x260e }, /*                   telephone ☎ BLACK TELEPHONE */
+  { 0x0aca, 0x2613 }, /*               signaturemark ☓ SALTIRE */
+  { 0x0aea, 0x261c }, /*                 leftpointer ☜ WHITE LEFT POINTING 
INDEX */
+  { 0x0aeb, 0x261e }, /*                rightpointer ☞ WHITE RIGHT POINTING 
INDEX */
+  { 0x0af8, 0x2640 }, /*                femalesymbol ♀ FEMALE SIGN */
+  { 0x0af7, 0x2642 }, /*                  malesymbol ♂ MALE SIGN */
+  { 0x0aec, 0x2663 }, /*                        club ♣ BLACK CLUB SUIT */
   { 0x0aee, 0x2665 }, /*                       heart ♥ BLACK HEART SUIT */
   { 0x0aed, 0x2666 }, /*                     diamond ♦ BLACK DIAMOND SUIT */
-  { 0x0af5, 0x266f }, /*                musicalsharp ♯ MUSIC SHARP SIGN */
   { 0x0af6, 0x266d }, /*                 musicalflat ♭ MUSIC FLAT SIGN */
+  { 0x0af5, 0x266f }, /*                musicalsharp ♯ MUSIC SHARP SIGN */
+
   { 0x0af3, 0x2713 }, /*                   checkmark ✓ CHECK MARK */
   { 0x0af4, 0x2717 }, /*                 ballotcross ✗ BALLOT X */
   { 0x0ad9, 0x271d }, /*                  latincross ✝ LATIN CROSS */
   { 0x0af0, 0x2720 }, /*                maltesecross ✠ MALTESE CROSS */
+  { 0x0abc, 0x27e8 }, /*            leftanglebracket ⟨ MATHEMATICAL LEFT ANGLE 
BRACKET */
+  { 0x0abe, 0x27e9 }, /*           rightanglebracket ⟩ MATHEMATICAL RIGHT 
ANGLE BRACKET */
 
   { 0x04a4, 0x3001 }, /*                  kana_comma 、 IDEOGRAPHIC COMMA */
   { 0x04a1, 0x3002 }, /*               kana_fullstop 。 IDEOGRAPHIC FULL STOP */
@@ -824,9 +855,7 @@
 
 long keysym2ucs(long keysym)
 {
-    int min = 0;
-    int max = sizeof(keysymtab) / sizeof(struct codepair) - 1;
-    int mid;
+    int i;
 
     /* first check for Latin-1 characters (1:1 mapping) */
     if ((keysym >= 0x0020 && keysym <= 0x007e) ||
@@ -837,16 +866,10 @@
     if ((keysym & 0xff000000) == 0x01000000)
        return keysym & 0x00ffffff;
 
-    /* binary search in table */
-    while (max >= min) {
-       mid = (min + max) / 2;
-       if (keysymtab[mid].keysym < keysym)
-           min = mid + 1;
-       else if (keysymtab[mid].keysym > keysym)
-           max = mid - 1;
-       else {
+    for (i = 0; i < sizeof(keysymtab) / sizeof(keysymtab[0]); i++) {
+       if (keysymtab[i].keysym == keysym) {
            /* found it */
-           return keysymtab[mid].ucs;
+           return keysymtab[i].ucs;
        }
     }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/at-spi2-core-2.36.1/registryd/ucs2keysym.sh 
new/at-spi2-core-2.38.0/registryd/ucs2keysym.sh
--- old/at-spi2-core-2.36.1/registryd/ucs2keysym.sh     1970-01-01 
01:00:00.000000000 +0100
+++ new/at-spi2-core-2.38.0/registryd/ucs2keysym.sh     2020-09-12 
21:22:56.225964500 +0200
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+if [ "$#" = 0 ]
+then
+       echo "Usage: $0 /path/to/keysymdef.h"
+       exit 1
+fi
+
+# We are only interested in
+# - keysyms which have well-defined unicode equivalent
+# - and are not just trivial unicode keysyms
+# - non-latin1 keysyms
+# - not the lamda aliases
+# and we tinker with the alias parentheses to make sorting easier
+
+grep '^#define' "$1" | \
+       grep -i "U+" | \
+       grep -vi "0x100[0-9a-f][0-9a-f][0-9a-f][0-9a-f]" | \
+       grep -vi " 0x00[0-9a-f][0-9a-f] " | \
+       grep -vi "_lamda " | \
+       sed -e 's/\/\*(/& /' | \
+       sed -e 's/)\*\// &/' | \
+       sort -k 5 | \
+       perl -CS -e '
+my $last = 0;
+while (<>) {
+       chomp;
+       if ( /^\#define XK_([a-zA-Z_0-9]+)(\s*)   0x([0-9a-f]+)\s*\/\*(\(?) 
U\+([0-9A-F]{4,6}) (.*) \)?\*\/\s*$/ ) {
+               my ( $xk, $space, $keysym, $paren, $unicode, $unistr ) = ( $1, 
$2, $3, $4, $5, $6);
+               $unicode = hex("0x".$unicode);
+
+               print "\n" if (int($unicode / 256) != int($last / 256));
+               $last = $unicode;
+
+               printf "  { 0x$keysym, 0x%04x }, /* $space$xk %lc $unistr 
*/\n", $unicode, $unicode;
+       }
+}
+       '
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/at-spi2-core-2.36.1/test/memory.c 
new/at-spi2-core-2.38.0/test/memory.c
--- old/at-spi2-core-2.36.1/test/memory.c       2020-09-05 01:56:27.976104700 
+0200
+++ new/at-spi2-core-2.38.0/test/memory.c       2020-09-12 21:22:56.225964500 
+0200
@@ -16,19 +16,24 @@
   AtspiAccessible *accessible;
   GError *error = NULL;
 
+  printf ("getting name\n");
   str = atspi_accessible_get_name (obj, &error);
   if (str)
     g_free (str);
+  printf ("ok, getting parent\n");
   accessible = atspi_accessible_get_parent (obj, NULL);
   if (accessible)
     g_object_unref (accessible);
+  printf ("ok, getting children\n");
   count = atspi_accessible_get_child_count (obj, &error);
   for (i = 0; i < count; i++)
   {
     accessible = atspi_accessible_get_child_at_index (obj, i, &error);
+    printf ("ok %d\n", i);
     if (accessible)
       g_object_unref (accessible);
   }
+  printf ("ok\n");
 }
 
 static gboolean
@@ -79,7 +84,7 @@
   atspi_event_listener_register (listener, "object:children-changed", NULL);
   child_pid = fork ();
   if (!child_pid)
-    execlp ("gedit", "gedit", NULL);
+    execlp ("test/test-application", "test/test-application", NULL);
   atspi_event_main ();
   return 0;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/at-spi2-core-2.36.1/test/meson.build 
new/at-spi2-core-2.38.0/test/meson.build
--- old/at-spi2-core-2.36.1/test/meson.build    2020-09-05 01:56:27.976104700 
+0200
+++ new/at-spi2-core-2.38.0/test/meson.build    2020-09-12 21:22:56.225964500 
+0200
@@ -1,4 +1,13 @@
-test('memory',
-     executable('memory', 'memory.c',
-                include_directories: root_inc,
-                dependencies: [ atspi_dep ]))
+testapp = executable('test-application',
+                     'test-application.c',
+                     include_directories: root_inc,
+                     dependencies: [ atspi_dep ],
+                    )
+
+memory = executable('memory',
+                    'memory.c',
+                    include_directories: root_inc,
+                    dependencies: [ atspi_dep ],
+                   )
+
+test('memory', memory, depends: testapp)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/at-spi2-core-2.36.1/test/test-application.c 
new/at-spi2-core-2.38.0/test/test-application.c
--- old/at-spi2-core-2.36.1/test/test-application.c     1970-01-01 
01:00:00.000000000 +0100
+++ new/at-spi2-core-2.38.0/test/test-application.c     2020-09-12 
21:22:56.225964500 +0200
@@ -0,0 +1,105 @@
+/*
+ * AT-SPI - Assistive Technology Service Provider Interface
+ * (Gnome Accessibility Project; https://wiki.gnome.org/Accessibility)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+/*
+ * Simple test application for AT-SPI.
+ *
+ * The only thing this application does, is registering itself to the AT-SPI
+ * registry and then waiting to get killed by some external force.
+ */
+
+#include <stdio.h>
+#include <glib.h>
+#include <dbus/dbus.h>
+#include <atspi/atspi.h>
+
+static GMainLoop *mainloop;
+
+int
+register_app ()
+{
+  DBusConnection *connection = NULL;
+  DBusMessage *message;
+  DBusMessageIter iter;
+  DBusMessageIter subiter;
+  DBusError error;
+  DBusMessage *reply;
+  const gchar *name;
+  gchar *path;
+
+
+  /* Set up D-Bus connection and register bus name */
+  dbus_error_init (&error);
+  connection = atspi_get_a11y_bus ();
+  if (!connection)
+    {
+      printf("Couldn't get a11y bus!\n");
+      return -1;
+    }
+
+  /* Register this app by sending a signal out to AT-SPI registry daemon */
+  message = dbus_message_new_method_call (ATSPI_DBUS_NAME_REGISTRY,
+                                          ATSPI_DBUS_PATH_ROOT,
+                                          ATSPI_DBUS_INTERFACE_SOCKET,
+                                          "Embed");
+
+  dbus_message_iter_init_append (message, &iter);
+
+  name = dbus_bus_get_unique_name (connection);
+  path = g_strdup (ATSPI_DBUS_PATH_NULL);
+
+  dbus_message_iter_open_container (&iter, DBUS_TYPE_STRUCT, NULL,
+                                    &subiter);
+  dbus_message_iter_append_basic (&subiter, DBUS_TYPE_STRING, &name);
+  dbus_message_iter_append_basic (&subiter, DBUS_TYPE_OBJECT_PATH, &path);
+  dbus_message_iter_close_container (&iter, &subiter);
+
+  g_free (path);
+
+  reply = dbus_connection_send_with_reply_and_block(connection, message, -1, 
&error);
+  if (!reply)
+    {
+      printf("Did not get a reply from the registry.\n");
+      dbus_message_unref (message);
+      dbus_error_free (&error);
+      return -1;
+    }
+
+  dbus_message_unref (message);
+  dbus_message_unref (reply);
+  dbus_error_free (&error);
+  return 0;
+}
+
+int main (int argc, char *argv[])
+{
+  int ret = register_app ();
+  if (ret) {
+    printf("Failed to send dbus signals. Aborting.\n");
+    return ret;
+  }
+
+  // This keeps the test-application runnig indefinitely, i.e.
+  // until killed by an external signal.
+  mainloop = g_main_loop_new (NULL, FALSE);
+  g_main_loop_run (mainloop);
+
+  return 0;
+}
_______________________________________________
openSUSE Commits mailing list -- commit@lists.opensuse.org
To unsubscribe, email commit-le...@lists.opensuse.org
List Netiquette: https://en.opensuse.org/openSUSE:Mailing_list_netiquette
List Archives: 
https://lists.opensuse.org/archives/list/commit@lists.opensuse.org

Reply via email to