Bug 26747 - X does not allow input of Unicode characters using Ctrl+Shift followed by the character code
X does not allow input of Unicode characters using Ctrl+Shift followed by the...
Status: NEW
Product: xorg
Classification: Unclassified
Component: Lib/Xlib
unspecified
Other All
: medium enhancement
Assigned To: Xorg Project Team
Xorg Project Team
2011BRB_Reviewed
: love
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2010-02-25 00:27 UTC by Dotan Cohen
Modified: 2014-12-29 19:01 UTC (History)
14 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Dotan Cohen 2010-02-25 00:27:17 UTC
There is currently no way to enter Unicode character codes in X. Some downstream implementations, such as Gnome, have implemented this independently. However, others such as Qt and KDE are waiting for a native X implementation. Currently, X users must copy and paste non-letter unicode characters from application to application.
Comment 1 Dotan Cohen 2010-02-25 00:31:37 UTC
Here is the downstream Qt bug:
http://bugreports.qt.nokia.com/browse/QTBUG-8

Here is the downstream KDE bug:
https://bugs.kde.org/show_bug.cgi?id=103788
Comment 2 Julien Cristau 2010-02-25 02:37:53 UTC
Moving to xlib, this is an input method issue.
Comment 3 Daniel Stone 2010-03-20 02:08:25 UTC
er, any 'native x solution' would be in the standard xlib input method, which both qt and gtk bypass completely ...
Comment 4 Dotan Cohen 2010-03-20 06:34:04 UTC
Daniel, please mention that on the downstream Qt and KDE bugs. Thanks!
http://bugreports.qt.nokia.com/browse/QTBUG-8
https://bugs.kde.org/show_bug.cgi?id=103788
Comment 5 Dotan Cohen 2010-04-08 20:06:09 UTC
The Qt dev says that Qt does use XIM by default, and that this is really something that should be implemented by the input method. The bug is thus remaining closed at Qt, and closed at KDE.

Please fix this.
Comment 6 Navid Zamani 2011-01-06 23:50:32 UTC
Lol, it’s 2011, and X still can’t do this. *facepalm*
Even Windows 2000 could do this, over, you guessed it, 11 years ago.
Comment 7 Shriramana Sharma 2011-01-07 09:00:35 UTC
...*and* there is an ISO standard for this: ISO 14755: http://www.cl.cam.ac.uk/~mgk25/volatile/ISO-14755.pdf
Comment 8 Alan Coopersmith 2011-01-07 09:10:07 UTC
Yep, it's 2011 and X still has many fewer developers than it would take
to implement every feature someone wants to see.   Patches welcome if
this is important to you.
Comment 9 Daniel Stone 2011-01-07 09:12:40 UTC
On Thu, Jan 06, 2011 at 11:50:39PM -0800, bugzilla-daemon@freedesktop.org wrote:
> Lol, it’s 2011, and X still can’t do this. *facepalm*
> Even Windows 2000 could do this, over, you guessed it, 11 years ago.

Thanks so much for your valuable contribution to this bug report.
Comment 10 Navid Zamani 2011-01-07 09:55:18 UTC
(In reply to comment #8)
> Yep, it's 2011 and X still has many fewer developers than it would take
> to implement every feature someone wants to see.   Patches welcome if
> this is important to you.

(In reply to comment #9)
> Thanks so much for your valuable contribution to this bug report.

Guys, since I get X for free, I’m not expecting anything, and think it’s really nice of you to do this work. But I’m not talking about implementing some colorful clickables or display bling. I’m talking about one of the most basic features. So basic it has its own ISO standard. And also about 50 lines of code. Max.

What I meant to say is, that if it were my code, and yes I am a professional programmer for 20 years now, I would be ashamed of overlooking something like this. It’s a thing of pride. Maybe because I see it as more fundamental than you.

I would also love to submit a patch. If the thing weren’t written in that horrible horrible excuse of a programming language called C. I know lots of languages, including Haskell (my favorite and main languages), but I have no intention in torturing myself with C-like languages.
Maybe if the thing was written in Haskell or OCaml, there would be more free time…

Whatever. Maybe I’ll save 50€ and send them to you to implement it. 1€ a line should be enough, no? ;)
Comment 11 Daniel Stone 2011-01-07 10:09:19 UTC
On Fri, Jan 07, 2011 at 09:55:19AM -0800, bugzilla-daemon@freedesktop.org wrote:
> Guys, since I get X for free, I’m not expecting anything, and think it’s really
> nice of you to do this work. But I’m not talking about implementing some
> colorful clickables or display bling. I’m talking about one of the most basic
> features. So basic it has its own ISO standard. And also about 50 lines of
> code. Max.

I look forward to your 50-line patch then.

> What I meant to say is, that if it were my code, and yes I am a professional
> programmer for 20 years now, I would be ashamed of overlooking something like
> this. It’s a thing of pride. Maybe because I see it as more fundamental than
> you.

Well, either we are rubbish programmers with no pride, or are simply too
busy with the other 2.532 million (I just checked) lines of code that X
has.

> I would also love to submit a patch. If the thing weren’t written in that
> horrible horrible excuse of a programming language called C. I know lots of
> languages, including Haskell (my favorite and main languages), but I have no
> intention in torturing myself with C-like languages.

So what you're saying is that you're not going to help, but instead sit
here banging on about pride and how Windows 2000 did it and it's really
easy.  Helpful!

(Oh, and Windows 2000 may have had Ctrl+Shift+[codepoint] for generating
 Unicode for ten years now, but people have been unconstructive assholes
 on the internet for at least 20 years now.  So you're even further
 behind than we are.)

Sorry to everyone else Cc'ed ...
Comment 12 Jeremy Huddleston 2011-10-08 20:03:39 UTC
Hey Navid, have you learned C yet?  I think we're all still looking forward to 
your 50line patch...

In all honesty, I don't expect this to be 50 lines, and I don't expect it to be 
popular enough to demand attention over higher priority issues.
Comment 13 Dotan Cohen 2011-10-08 23:45:34 UTC
Daniel, Jeremy, please don't feed a possible troll. Just take his badly-worded comment as another ++ vote for the feature and be done with it. It would be a shame if this feature were ignored due to a single troll's heckling.

In fact, let's look at it another way. I am willing to learn C and fix this issue if a current X dev will mentor me. I'm serious. Of course it would take _more_ time to fix the bug this way, but then X gains another enthusiastic developer. I've done a simple C course in university and I know a bit of PHP and Java. Are there any X devs who would mentor me through this bug?

Thanks.
Comment 14 Navid Zamani 2011-11-05 03:58:39 UTC
(In reply to comment #11)

> I look forward to your 50-line patch then.
As I said, I have no intention in learning a language as bad as C. I’d rather rewrite the whole thing in a modern language. And I’d like even more to have someone else do it, while I do some other contribution in return. How about that? :)

> Well, either we are rubbish programmers with no pride, or are simply too
> busy with the other 2.532 million (I just checked) lines of code that X
> has.
So you’re essentially suggesting that it’s just extremely bloated? ^^
But hey, there doesn’t have to be a “or”. Usually the latter comes from the former. ;)

> So what you're saying is that you're not going to help, but instead sit
> here banging on about pride and how Windows 2000 did it and it's really
> easy.  Helpful!
No, (Windows * still sucked). I was saying:

> Maybe I’ll save 50€ and send them to you to implement it. 1€ a line
> should be enough, no? ;)

But I already see where this is going: Straw man arguments: First you deliberately misinterpret my statements, and then you call me an idiot because of them. Sorry mate, that won’t work. ^^

------------------------------------------------------------

(In reply to comment #12)

> Hey Navid, have you learned C yet?
Maybe the Navid in your delusional parallel world where I didn’t say I despised C did.
Why don’t you check?

> In all honesty, I don't expect this to be 50 lines, and I don't expect it to > be popular enough to demand attention over higher priority issues.

Well, if it doesn’t take 50 lines, something is deeply wrong with the code. Then again it’s C and it’s 2.532 million lines of it, so that kinda answers that. ^^

PROTIP: Quick sort in Haskell:

  qsort (x:xs) = qsort [ i | i <- xs, i < x ] ++ [x] ++ qsort [ i | i <- xs, i >= x ]
  qsort [] = []


50 lines? Hell yeah! ^^

------------------------------------------------------------

I have no interest in the typical Internet dicks calling everyone who isn’t fitting their mind a “troll”. So you can fail with your archaic C, bloat, weird priorities and distorted perception until the end of time.
Actually it’s a good thing, because the more you’re ignorant of the unfolding reality, the more those who don’t gain an edge over you. So, hey… in a way you’re still helping me. Thanks!
And good bye. ^^
Comment 15 Shriramana Sharma 2011-11-05 05:56:00 UTC
Navid, please cease and desist from making unhelpful comments. I myself would like to see this bug fixed soon, and I also do not have enough C-knowledge to contribute a patch, and I do occasionally post "hello can anybody please fix this bug" kind of comments to bug reports, but at least I try to stay polite and *request* something of the developers who obviously have a particular skill which I don't. It is my experience that more often than not, developers are quite polite and at least explain why the bug can't be fixed soon or something like that.

Now my polite request: can any of the kind developers fix this bug please? I'm sure with your skills it would be a simple job if someone just allocated a small amount of time to it? 

After upgrading my Kubuntu system to Oneiric, the ibus stopped working (https://bugs.launchpad.net/ubuntu/+bug/854333) so I'm falling back to XIM which IMHO is much cleaner even if not context-sensitive. So I would really like to see this soon. Thanks! :)
Comment 16 Dotan Cohen 2011-11-05 06:20:51 UTC
I think that it is about time that we had this Navid character banned. I'll see who to contact about that.

I reiterate my pledge. I am willing to learn C and fix this
issue if a current X dev will mentor me. I'm serious. Of course it would take
_more_ time to fix the bug this way, but then X gains another enthusiastic
developer. I've done a simple C course in university and I know a bit of PHP
and Java. Are there any X devs who would mentor me through this bug?

Thanks.
Comment 17 Jeremy Huddleston 2011-11-07 14:54:30 UTC
Dotan,

I'd love to help you learn C.  My advise to you is to check out this course at 
UC Berkeley designed to teach C to students who already know how to program in 
another language:
http://inst.eecs.berkeley.edu/~selfpace/class/cs9c

Most of the materials are available online.  You just need to buy or borrow the 
book, and you don't have access to the SPC tutors and obviously don't get a 
grade or course credit.  I used to tutor the course back in the day, so I'd 
love to help you out if that means we'd have another X11 contributor.

But let's take this offline for now... just send me an email when you want to 
get started and need some help/questions.
Comment 18 Jehan 2012-04-13 21:33:06 UTC
Hello everyone,

If none steps in, I am willing to implement such a feature. But first I would need more information before diving into any code, because I want it to be in the right place for the feature to matter.
In particular that would mean that it would be usable in most (if not all) X environments.

Daniel Stone wrote above:
« any 'native x solution' would be in the standard xlib input method, which
both qt and gtk bypass completely ... »

Is it true? If that is true, probably X is not the right place, is it? Also aren't the Xlib Input Method and the X Input Method (XIM) the same thing? Because others claim that KDE uses XIM, so it seems contradictory to me.
Or is there something I missed?
I am not especially a KDE or Gnome user, but I do use them from time to time, depending on circumstances. And in any case, generic and standard is better.

Secondly there is also the set of features which needs to be discussed. Because the code point input method is probably necessary but really user-unfriendly.

Unicode Code Point
===================

ISO-14755 proposes to enter Unicode code point (Gnome supports with ctrl-shift-u, and vim with ctrl-v-u). That's the most extensive solution (whole Unicode supported), but also the more annoying in real life (how many code point do you actually know out of ASCII?).

Function Key Symbols
====================

ISO-14755 again proposes to associate symbols to usual "generic" keyboard keys, like tab, insert, pause, etc. The full list is in ISO-9995-7: http://www.msg.gouv.qc.ca/documents/standards/ISO_9995-7.pdf
That's nice to input easily stuff like arrows, because mnemonics are pretty good. But this is a very limited set of characters.
If we look Unicode charts, they also plan these association (written under a character when there is one, for instance ⇱ is the "home" key):
http://www.unicode.org/charts/PDF/U2190.pdf
I don't know of any system actually supporting this.

Defined Character Mnemonics
===========================

RFC-1345 (http://tools.ietf.org/html/rfc1345) defines a list of mnemonics for a whole bunch of characters. They are good mnemonics and the range of character is big but still I will never remember them all and will always end up checking up the internet list at some point for a character I don't use often.
vim supports these with ctrl-k.

Keywords Input?
================

A kind of input I would really like to see (or to develop) is a word base input. Let's say I want to write a quarter note. I obviously don't remember its code point (2669). I don't know either the mnemonics 'Md' if that's the first time I input it (or it has been a long time since). I'd like to be able to write 'note' and be proposed a significant list of Unicode characters related to notes.
Similar to what anthy (Japanese input method) does when it proposes you Kanjis after you enter a "sound description" in romanji (which then becomes hiragana, and from there kanjis). Except that here we could enter a keyword (searched from the name of the characters probably).

I don't know if there is any RFC/ISO about such a feature, but I could not find one. The closer is the "screen selection entry method" (section 5.3 in ISO-14755) but that's not very detailed.

This is the most user-friendly method. That's also the most bloated if we want to do it right, so I wonder if Xlib is the best place for it. For it to be perfect indeed, name and keywords would be better localized and it could also learn from previous inputs (which characters you use the most when you type "note" is the first proposed, etc.).

I hope this all makes sense.
Comment 19 James Cloos 2012-04-14 12:48:15 UTC
> If we look Unicode charts, they also plan these association (written
> under a character when there is one, for instance ⇱ is the "home" key)
> I don't know of any system actually supporting this.

rxvt-unicode does, using ctrl-shift as the introducer.

It also supports C-S + code point entry and C-S + left click to get the
code point of the character under the mouse cursor.
Comment 20 Ruslan Kabatsayev 2014-09-05 14:15:45 UTC
There's a project (created by me) which tries to work around this limitation of X by providing a daemon-like app intercepting Ctrl+Shift+U and allowing to enter UTF-32 character codes:

https://gitorious.org/ucode/ucode/
Comment 21 Dotan Cohen 2014-09-08 11:22:27 UTC
Thank you Ruslan. I do stress to the developers that this is a workaround, not a solution, due to issues such as the user of "sticky keys".
Comment 22 Ivo Anjo 2014-09-11 13:28:21 UTC
+1 thank you Ruslan.

I'm guessing that at this point we should be asking for this to be implemented on Wayland, as it seems that X will be deprecated soon enough and its input code is complex and strange enough (no screensaver when a pop-up menu is open, for instance) that this won't make it.
Comment 23 rethus 2014-12-29 19:01:42 UTC
+ 10 for the implementation of this UNICODE-FEATURE.

At the moment I'm coding on a Keyboard-Firmware (ErgoDox). Problem is that I can send UNICODE-Chars easy and nice with the GNOME-Method : CTRL+Shift+<digits, but there is no way to send them to QT-Based Programms.

So keep calm and implement the Shortcut which is still implemented in Gnome (and please, please, please don't choose another one like CTRL+ META or such different Stuff...) Keep things easy and implement like it still works in Gnome.

BTW: Thanks a lot for all your work. I love KDE.