summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRan Benita <ran234@gmail.com>2017-12-11 22:41:55 +0200
committerRan Benita <ran234@gmail.com>2017-12-11 23:01:18 +0200
commit18d6aebec003c2de7957f3c94fdc24edf533d084 (patch)
tree4f0029cc618278a5264990067e7a622934c12933
parent6456835f1c547e4f9da3dc8728d1fe09eeca8593 (diff)
downloadlibxkbcommon-18d6aebec003c2de7957f3c94fdc24edf533d084.tar.gz
libxkbcommon-18d6aebec003c2de7957f3c94fdc24edf533d084.tar.bz2
libxkbcommon-18d6aebec003c2de7957f3c94fdc24edf533d084.zip
keysym: add xkb_keysym_to_{lower,upper} to public API
These can be useful in some odd cases. There is already an implementation (+ tests) for internal use, so all that's needed is to export them. If xkbcommon were to provide a way to convert a Unicode codepoint to a keysym, this could have been implemented externally as follows: uint32_t codepoint = xkb_keysym_to_utf32(keysym); uint32_t upper_codepoint = my_unicode_library_to_upper(codepoint); xkb_keysym_t upper_keysym = theoretical_xkb_keysym_from_utf32(upper_codepoint); However keysym -> codepoint is not injective so such a function is not possible strictly speaking. Signed-off-by: Ran Benita <ran234@gmail.com>
-rw-r--r--NEWS13
-rw-r--r--src/keysym.c4
-rw-r--r--src/keysym.h6
-rw-r--r--xkbcommon.map6
-rw-r--r--xkbcommon/xkbcommon.h20
5 files changed, 41 insertions, 8 deletions
diff --git a/NEWS b/NEWS
index abe9fd7..15859ae 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,16 @@
+libxkbcommon 0.8.0 - UNRELEASED
+
+- Add xkb_keysym_to_{upper,lower} to perform case-conversion directly on
+ keysyms. This is useful in some odd cases, but working with the Unicode
+ representations should be preferred when possible.
+
+- Added Unicode conversion rules for the signifblank and permille keysyms.
+
+- New API:
+ xkb_keysym_to_upper()
+ xkb_keysym_to_lower()
+
+==================
libxkbcommon 0.7.2 - 2017-08-04
==================
diff --git a/src/keysym.c b/src/keysym.c
index 9e7b4fb..6d06de0 100644
--- a/src/keysym.c
+++ b/src/keysym.c
@@ -264,7 +264,7 @@ xkb_keysym_is_upper(xkb_keysym_t ks)
return (ks == upper ? true : false);
}
-xkb_keysym_t
+XKB_EXPORT xkb_keysym_t
xkb_keysym_to_lower(xkb_keysym_t ks)
{
xkb_keysym_t lower, upper;
@@ -274,7 +274,7 @@ xkb_keysym_to_lower(xkb_keysym_t ks)
return lower;
}
-xkb_keysym_t
+XKB_EXPORT xkb_keysym_t
xkb_keysym_to_upper(xkb_keysym_t ks)
{
xkb_keysym_t lower, upper;
diff --git a/src/keysym.h b/src/keysym.h
index ca2bd5e..2633963 100644
--- a/src/keysym.h
+++ b/src/keysym.h
@@ -62,10 +62,4 @@ xkb_keysym_is_keypad(xkb_keysym_t keysym);
bool
xkb_keysym_is_modifier(xkb_keysym_t keysym);
-xkb_keysym_t
-xkb_keysym_to_upper(xkb_keysym_t ks);
-
-xkb_keysym_t
-xkb_keysym_to_lower(xkb_keysym_t ks);
-
#endif
diff --git a/xkbcommon.map b/xkbcommon.map
index cc468c6..f28f68f 100644
--- a/xkbcommon.map
+++ b/xkbcommon.map
@@ -97,3 +97,9 @@ global:
xkb_state_key_get_consumed_mods2;
xkb_state_mod_index_is_consumed2;
} V_0.6.0;
+
+V_0.8.0 {
+global:
+ xkb_keysym_to_lower;
+ xkb_keysym_to_upper;
+} V_0.7.0;
diff --git a/xkbcommon/xkbcommon.h b/xkbcommon/xkbcommon.h
index 8b05835..3e7a68d 100644
--- a/xkbcommon/xkbcommon.h
+++ b/xkbcommon/xkbcommon.h
@@ -493,6 +493,26 @@ xkb_keysym_to_utf8(xkb_keysym_t keysym, char *buffer, size_t size);
uint32_t
xkb_keysym_to_utf32(xkb_keysym_t keysym);
+/**
+ * Convert a keysym to its uppercase form.
+ *
+ * If there is no such form, the keysym is returned unchanged.
+ *
+ * The conversion rules may be incomplete; prefer to work with the Unicode
+ * representation instead, when possible.
+ */
+xkb_keysym_t
+xkb_keysym_to_upper(xkb_keysym_t ks);
+
+/**
+ * Convert a keysym to its lowercase form.
+ *
+ * The conversion rules may be incomplete; prefer to work with the Unicode
+ * representation instead, when possible.
+ */
+xkb_keysym_t
+xkb_keysym_to_lower(xkb_keysym_t ks);
+
/** @} */
/**