[PATCH xinput] use ASCII art when UTF-8 environment is not available
Matthieu Herrb
matthieu.herrb at laas.fr
Wed Dec 8 13:31:37 PST 2010
Based on an initial patch by Jasper Lievisse Adriaanse.
Signed-off-by: Matthieu Herrb <matthieu.herrb at laas.fr>
---
src/list.c | 37 ++++++++++++++++++++++++++++++++-----
1 files changed, 32 insertions(+), 5 deletions(-)
diff --git a/src/list.c b/src/list.c
index 8633c62..7f882ab 100644
--- a/src/list.c
+++ b/src/list.c
@@ -241,10 +241,13 @@ list_xi2(Display *display,
dev = &info[i];
if (dev->use == XIMasterPointer || dev->use == XIMasterKeyboard)
{
- if (dev->use == XIMasterPointer)
- printf("⎡ ");
- else
- printf("⎣ ");
+ if (have_utf8())
+ if (dev->use == XIMasterPointer)
+ printf("⎡ ");
+ else
+ printf("⎣ ");
+ else
+ printf("+ ");
print_info_xi2(display, dev, shortformat);
for (j = 0; j < ndevices; j++)
@@ -254,7 +257,10 @@ list_xi2(Display *display,
if ((sd->use == XISlavePointer || sd->use == XISlaveKeyboard) &&
(sd->attachment == dev->deviceid))
{
- printf("%s ↳ ", dev->use == XIMasterPointer ? "⎜" : " ");
+ if (have_utf8())
+ printf("%s ↳ ", dev->use == XIMasterPointer ? "⎜" : " ");
+ else
+ printf("%s + ", dev->use == XIMasterPointer ? "|" : " ");
print_info_xi2(display, sd, shortformat);
}
}
@@ -324,4 +330,25 @@ list(Display *display,
}
}
+Bool
+have_utf8(void){
+ char *t;
+
+ /*
+ * There is no standard way to detect UTF-8 capabilities of a
+ * given terminal, but this gets pretty close as a good heuristic.
+ */
+ if ((t = getenv("LC_ALL")) == NULL) {
+ if ((t = getenv("LC_CTYPE")) == NULL) {
+ t = getenv("LANG");
+ }
+ }
+
+ if (t != NULL && (strcasestr(t, "UTF-8") != NULL ||
+ strcasestr(t, "UTF8") != NULL))
+ return True;
+
+ return False;
+}
+
/* end of list.c */
--
1.7.3.2
--
Matthieu Herrb
More information about the xorg-devel
mailing list