[Cuis-dev] [IMPROV] Unicode Input in Editor

Szabolcs Komáromi cuis at mnqpr.com
Thu Oct 19 13:08:14 PDT 2023


I'm working on an implementation of the old Palm OS' alternate symbol input method. (Interface for processing of an alternate symbol in a computer device <https://patents.google.com/patent/US6975304B1/en>) I was a great fan of the design philosophy of the Zen of Palm <https://www.cs.uml.edu/~fredm/courses/91.308-fall05/palm/zenofpalm.pdf>. The interesting point of this input method is that it is non-modal. Any time the user can go back to a character and cycle through the defined alternative symbols. Most input solutions, I know of, are modals and I'm not a vi/vim type of guy. (Eg. I use https://github.com/damienleroy/PowerAccent  on Windows which also modal unfortunately.)

Demo video: Palm Input Manager for Cuis-Smalltalk  <https://www.youtube.com/watch?v=0CPRTP2IxsE>

It is in a work in progress status but most functionality is implemented. The user can define new languages, new "base symbols" aka keys and theirs alternatives. The feature can be activated on any InnerTextMoprh by Morphic properties to enable keyDown handling. 
Using the Sensor test message I deduced that I can use the Insert, F11 or F12 keys to trigger the switching between alternatives. Maybe modifying the HandMorph>>generateKeyboardEvent: would allow to use the Alt or Ctrl to trigger the action. These would be more convenient during touch typing. 
Right now I'm working on the toast/popup like widget which shows the alternative characters (it is off by one character on the video) during typing.

Working in Cuis gives me a lot of fun. :-)
This will be my first 1000 lines of code in any general-purpose programming language so it won't be pretty, at least not in the first version.

Any feature proposal or comments are welcomed.


This will be my first 1000 line of code in Smalltalk, so the code quality won't be pretty.
On Thu, Oct 19, 2023, at 10:05, Gerald Klix via Cuis-dev wrote:
> Hi Hannes,
> I am glad that this feature works after some updates.
> Just to avoid any confusion:
> By 'IPA' you "International Phonetic Alphabet"?
> What you describe is some "optimized" keyboard handling,
> which reminds me a bit of a virtual smartphone or tablet
> keyboard. I presume a separate (extension-)package for
> this feature is best. Personally I dislike this compose key stuff.
> I strongly prefer either completely stateless UIs like Cuis'
> or statefull interfaces done right, like vi or vim.
> Anything in-between is just confusing.
> In other words:
> I don't care whether the sun rises in the east or the west,
> but it should be the same all over the globe :)
> There is also a non-integrated change-set
> for code completion of \<latex symbol> input.
> (https://lists.cuis.st/mailman/archives/cuis-dev/2023-July/007876.html)
> I integrated this change into Haver and discovered that I use it
> maybe once or two times a month. My current impression
> is, that this sort of code completion is of little use, albeit
> I promised to fix its issues and re-post it.
> Maybe it makes sense, to add a complete solution,
> including Unicode input with symbolic names and some
> sort of character table in, the aforementioned
> and yet to be written extension package.
> Best Regards,
> Gerald
> On 10/16/23 9:02 PM, H. Hirzel wrote:
> > Hi Gerald
> >
> > Thank you for checking the Unicode input in Cuis. In the meantime I also
> > installed the latest version of Cuis. So
> >
> > \+161<space>
> >
> > works fine for Unicode input.
> >
> > You asked for my IPA requirements. I have started preparing a list and will
> > post it when ready. It will also include characters from the Latin Extended
> > area for orthography purposes for many languages.
> >
> > The <backslash> key acts as a compose character in this case[1].
> > We could also use other compose keys in addition.
> > For example after a semicolon in nearly all cases there will be a space. So
> > <semicolon><ASCII character> gives 25 more options. A comma is also a
> > candidate.  <comma><c> could be used for c cedilla. Even the letter q may
> > serve this purpose as with only very few exceptions there will always be a
> > 'u' following it.
> >
> > I discovered
> >     UnicodeCodePoint namedCharactersMap
> >
> > I did
> > UnicodeCodePoint namedCharactersMap at: #openo put: $ɔ
> > UnicodeCodePoint namedCharactersMap at: #o put: $ɔ
> >
> > this now allows me to have a new combinartion
> > \openo<space>      The space is still necessary and it needs to followed by
> > a backspace.
> > \o
> >
> > So this is easily extendable.
> >
> > You gave the link
> > https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev/commit/2c52852e716348f6350a461b0081ebe59971674d
> > which contains method
> > Editor>> normalCharacter: aKeyboardEvent
> >
> > I pasted the code into DrGro 23.06 and it made it work! So it seems that
> > all the input logic is contained in this method and the data is in the
> > dictionary UnicodeCodePoint namedCharactersMap. Is this so?
> >
> > I am yet to understand the full logic of this #normalCharacter: method. The
> > method also seem to deal with diacritical marks [2] but I did not manage to
> > add diacritical marks on top of vowels.
> >
> > Kind regards
> > Hannes
> >
> >
> >
> > [1] https://en.wikipedia.org/wiki/Compose_key
> > [2] Of main interest are acute, gravis, diaresis (trema) e.g. for Umlaut in
> > German and also for writing in French, and nasalization. This is on a UK or
> > US keyboard. https://en.wikipedia.org/wiki/Acute_accent gives a list of
> > some languages using it.
> >
> -- 
> Cuis-dev mailing list
> Cuis-dev at lists.cuis.st
> https://lists.cuis.st/mailman/listinfo/cuis-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20231019/a68ebc41/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image.png
Type: image/png
Size: 55388 bytes
Desc: not available
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20231019/a68ebc41/attachment-0001.png>

More information about the Cuis-dev mailing list