#Improving CCOS language support
226 messages Β· Page 1 of 1 (latest)
So @fading sedge, made the thread here
there are several concepts that people mix up all the time
Looks good to me. You might want to brief yourself on previous suggestions by other multilingual members
yeah I already keep an eye on that all the time, and feel free to point me to any I might have missed π
sooooo
there are several concepts that people mix up all the time
hardware layout
software layout
and language
hardware layout is what is on the keys
that is kinda fuzzy with the CC1 because there are no labels on the keys
but that also means that changing the hardware layout is easier and more expected than in most cases
software layout is what the computer does with the keys it receives
and for you, want to make you are aware of the current CharaChorder workings relative to hardware layout, software layout, and language.
Currently, the CharaChorder has a default mapping. You can remap. When you remap, it stays on the device, with the device, meaning you can take it to any computer and it will have that mapping........with one caveat---that the host OS is set to QWERTY.
LOTS of people run into this problem where everything is currently based on QWERTY and lots of multilingual users use for example their native tongue OS keyboard layout (German (QWERTZ), for example)
We don't have anything that currently lets you on-the-fly swap between keymap layouts
(a la a dvorak or qwerty or colemak switch)
although WE USED to have that in GTM for lite, for example
(so it's not that it isn't possible, we just don't have it in the current CCOS) (also, shutting up now to let you have your thread to talk through your thoughts π )
for MOST countries, their language is generally supported by a specific layout labelled by people with that language
I think step one for teaching users about CC1 and language support is explaining that their computer keyboard layout DOES NOT define their language, and in MOST cases it's actually best to set the computer to US international, if the language is supported by that
US international is default US layout plus accents for most languages
that eases up a lot of things
as the Colemak and Dvorak logical layouts are just rearranged qwerty, including the number and symbol keys, it is actually possible for the TypeMatrix keyboard to just swap the keys around and have the computer at Qwerty for a physical Dvorak/Colemak layout
this is useful because the Dvorak layout on Windows doesn't have accents
but the Qwerty layout does
so in practice this means I have a Dvorak international layout
you see how that works?
the same way the CC1 layout becomes supercharged by changing from US to US international
so the catch with language support is that MOSTLY CCOS can only support what the software layout supports
I say mostly, because we can trick characters that are not included using OS specific Unicode support mechanisms
on Linux that is ctrl-shift-u, unicode code point
on Windows that is the left alt plus numpad numbers (which is limited to ANSI characters), unicode code point followed by alt-x in programs like Word, LibreOffice, OneNote etc... or otherwise you are expected to use the character mapper (so support is kinda limited...)
on Mac there is this unicode hex input thing, which might be the most complicated of them all...
ChromeOS is the same as Linux (and my main machine is a Chromebook so I can test on that, it will be nice if we can add "Works with ChromeOS to the list")
so I would say that other than the layout stuff, we might want to have support for unicode characters in chords that are handled transparently depending on the OS
because you might switch your CharaChorder between Mac and Windows for example
Right now we have windows handling unicode ansi based cp characters
mac isn't working, I think
yeah I think for Mac you would basically need to configure the machine to this unicode hex input keyboard thing
Right, that is what I read
that said, if you can get that working, you can have full unicode support on mac
full unicode support on linux should be possible too
just Windows has a gap there
and handing "shift" right now is a modifier, let handled by OS
but for those characters, I don't think it works
you would need a unicode table lookup for that
supporting Unicode from a device like this is definitely not easy...
it's probably good to have a Linux/Mac/Windows switch to enable different tricks per OS
also because the software layouts on each OS are different!
I think the US layout is the same...
CharaChorder > Keyboard [ >S<can Rate=2ms || Debounce >P<ress=7ms || Debounce >R<elease=7ms || Keystroke >D<elay=80us || >C<apslock=off || >O<perating_System=Windows ]
most other languages are NOT
We have an OS switch in the GTM
ah you already have an OS switch, cool π
Windows/MacOS/Linux/iOS/Android
who programs CCOS?
Matt
and what is it written in? xD
and Riley (I think)
cool π
Curious your thoughts/desires related to swapping chord libraries/hardware layouts on the fly.
And if in the GTM would be sufficient
you might have noticed that swapping languages in the OS is usually a modifier and e.g. the space key
or only modifiers
that's because those are the only keys that are basically guaranteed to stay the same
you might have a layout that has no abc... etc
so that might mess up the GTM
if not actually, at least visually
Wait
I thought we would be keeping it on "QWERTY international"
and only swapping layout, CharaChorder side
that works for Spanish, German etc
languages that have their characters on QWERTY international
ah yes, but for the others
doesn't work for indian languages
for russian
etc etc
Greek is still mostly Qwerty-based
Russian is NOT
it's not possible for CharaChorder to know what the OS language is, right?
as a USB peripheral
nope
this is definitely NEVER going to be trivial
but we can do trivial steps to improve user experience ofc
I know a bit of russian, a bit of chinese etc
so we can do proper work on those as well over time
Currently,the GTM menu gets jumbled if your host OS layout is russian, etc
so you'd have to know the GTM by heart to use it
yep...
or know the QWERTY to Russian mapping
we can probably figure out a fix for all that...
I have an idea for this one
you can tell CCOS what the keyboard switch combo is
and have a panic key for when it's scrambled
then GTM erases itself, switches keyboard and tries again
ha
ofc you can link this to the OS setting again π
if you have an OS switch chord or key
might be a press option on the CC1 for example
with this option you can mostly automate this kind of stuff
e.g. you could ask a Mac user to add the unicode hex layout as the second layout and ask the switch key to enable partial unicode input etc
just an idea, this specific version is probably too clunky to work well
but you get the point π
if you only need sporadic Unicode support, that is probably good enough
I think you have lots of good thoughts. Once you get your device, I would love it if you could write your thought down in a big wishlist of how you think things should work. I think this thread is fine for discussion/talking, but at some point would like to summarize it
I think long term it's probably good to have a simple Domain Specific Language for the more complicated language support options
I want you to try out remapping etc when you get it
of course π
to get a feel for how it all currently works
yeah for sure! π
keyboard language support on an OS level is designed mostly by monolingual english speakers, it's a horrible mess xD
GG @night ledge, you just advanced to level 6!
also I found out my friend @tranquil solstice is in this Discord, not having a device yet especially because Esperanto support is very important for them, but it looks like it might be increasingly useful π
so @tranquil solstice you can see here how we will deal with the language stuff xD
yeah for sure, and I think I might need to talk through with the dev what would be possible in the first place
just for reference: QWERTY (with many variants), QWERTZ and AZERTY difference is mostly a historical quirk, and for the languages this relates to (german and french for qwertz and azerty, spanish, italian, portuguese, dutch and probably a good bit more) it is best to teach that the best way to work with this is configuring the computer as US International. Languages like Polish, Latvian, Lituanian, Esperanto etc don't work with US international and have several possible solutions usually on qwerty derived layouts. You might need a switch for these to pick which solution your system uses (and for some of the layouts used for these base letters like Q and W are swapped out, possible GTM issues). Greek has a qwerty-based layout, just different characters, russian has a completely different layout, all create GTM issues. Chinese when using pinyin actually uses a qwerty based layout, but that is not the only option out there and actually using a different software layout can prove useful to make the CharaChorder more useful as pinyin relies on picking from a list, which messes with chording. the Wubi and Cangjie layouts enable picking characters with a set string of keystrokes, which would enable improved chording (advanced option for way down on the wishlist). Indian languages use a common system for transliteration so that should actually be relatively easy, but for languages with different scripts we deal with GTM and display issues that we need a good solution for.
I think that gives a quick reference for the most common issues to face. details might entail things like software layouts with dead keys etc for specific languages, but that should work well if those of this wall of text are properly dealt with
I think you can use that wall of text to 1. check your understanding of computer language support and 2. verify how far we are with supporting everything people might want from the device properly
I left out japanese here, but honestly with these things dealt with it should be relatively easy, same with korean etc. japanese and korean use pretty simple input methods compared to the chinese stuff
also, re: chinese, I think most users would just put long pinyin chains in the chording stuff, pick the right option from the list and go on, what I am thinking of is probably way to advanced for most users (in the ballpark of dealing with random unicode input)
https://ladedu.com/how-to-enter-unicode-characters-on-a-mac/ holy shit, Mac unicode input relies on UTF-16 input, just to make it easy π
your dev is going to loooove that π
I am not sure if this is the right approach. Normally a keyboard sends Scancodes to the OS. I don't think that any normal keyboard uses Unicode or CP-1252. There is usually a Scancodes dedicated for each key on the keyboard. The software layout in the OS then uses a table to map the Scancodes to the character, symbols, ... The table that is used depends on the language setting. The modifiers are send as part of the message from the keyboard to the OS. So to my opinion, all we need is the ability to configure the modifiers that should be added for each key that I press on the CC1. That way we would be able to emulate anything that I can do on a normal keyboard. I don't think that forcing the user to use US International would be very intuitive.
GG @rough bear, you just advanced to level 2!
Have a look at the Oryx configurator for the Moonlander keyboard at https://configure.zsa.io That is what I use and there you can enable the different languages in the settings. These are just helper mappings. They define that for the "ΓΆ" it should send the scancode that is used for ";" in the US Layout. This also works for keys that require shift in the German layout for instance.
A powerful, visual tool to configure your keyboard. Based on the open-source QMK firmware.
All the key maps for the different languages are defined here https://github.com/qmk/qmk_firmware/tree/master/quantum%2Fkeymap_extras
Combining this with with the ability to set different key maps for OSs would be cool as the Mac for instance uses the symbols differently. That is why I have separate layers for Linux and Mac on my Moonlander.
I think the issue with the CC1 will be that the chords are defined in the keyboard, which is great. But this means that the CC1 itself might have to be aware of the language that is being used to use the correct table for the chords.
I already have a plan, don't worry. Unicode support is a possible nice extra.
this is part of my idea
will write it out
this thread is mostly to establish issues and challenges, not yet full solution
yes, but that is still a little bit too simple
but close
I think it is helpful context to see how others are handling it. Thanks for chiming in @rough bear
I do think that the majority of the time we've seen users prefer to keep their OS language setting on their language instead of switching to QWERTY.
A software solution that connects to the device and sends a command to tell it what language the computer is set to could be an option in some cases. But for the most part, we've really tried to stay away from OS specific applications that are needed to use the device so want to be mindful of that, too.
I agree with that. For me it would be ok to have a shortcut on the CC1 to switch the layout.
I don't think there's a way on the CC itself to switch the host OS layout without the user setting up at least the international or us qwerty layout.
So it seems like part of the instructions would always need them to at least initially do that so they could set their GTM correctly, I think
Or like you mentioned. Having a configuration software
I think you misunderstood me. I only want to change the layout internally in the CC1. If I wanted to switch the layout in the OS then I could simply use the shortcut that the OS provides.
The reason why I want to be able to switch the hardware layout in the CC1 is, because the Mac for instance required different keys to be pressed for some symbols. So when using the CC1 then I would like to be able to set the OS in the CC1 and then use the same keys for the symbols . Under the hood the CC1 will then send the scancode corresponding to the OS that I have currently set in GTM. I hope you understand what I mean.
My Moonlander always activates the Linux/Mac layer when I connect it. When I am using my Mac then I press a single key and it permanently activates the Mac layer.
but, to send the right scancodes we need to know what the host OS layout is
if you are using german on OS vs spanish, the scancodes we have to send to get certain characters is different
so perhaps you could say, in the GTM, I .am using spanish, or german. or any of the other 4000... but...you need to be able to see the GTM in the first place
which you won't be able to do if your OS is already set to russian, for example
does that make sense what I mean?
Yes, I know what you mean. For the login password that will be an issue. On the other hand the settings in GTM are persisted, right?
They are. So yeah, it's an initial setup problem
and anytime you change the host OS keyboard layout problem
because the CC1 can't / doesn't know that you changed that
I don't think that is an issue. Most users will not change the OS layout often. In fact most of them only set it once.
It is still possible to use US International, if someone wants to do that
This is a totally valid option if someone uses multiple languages at the same time
I think it's clear so far from this thread... that both are valid, desirable options
Ability to support fluent switching of languages for polyglots and also allowing users to use their OS with their native language selected
For German and US, I always stay in the German one as that includes all the characters that qwerty has
GG @rough bear, you just advanced to level 3!
@rough bear I speak 11 languages, so I will switch a lot
damit auch Deutsch π
nicht perfekt aber ich habe zB ein Deutsche Mitbewohner hier in Lissabon
on my way to the IKEA to have a free coffee and write out a proposal
should cater for all concerns
And you should be able to do so
@rough bear read and shoot π
@fading sedge I made a writeup of a coherent way to implement proper language support that enhances the capabilities of the devices instead of being hurt by it
if I missed anything etc, happy to rework things
and please let the dev read it too and see what he thinks about this
notably it defines a language as a software layout, a hardware layout and a set of shorthands/macros to fully separate it from the chord list, which doesn't have to be specific to a language this way
the key for this proposal is simplifying, not complicating xD
I think @rough bear will love that xD
I think if it's set up like I propose you can do all the magical things that people have been dreaming about too
(not mentioned in the document, but if the software layout configuration support is done well, you should be able to add random unicode characters for hardware keys like beyond F12 and media keys etc, and because you now have a character for it you can make macros for them and add support for pressing these to chords, too. Also of course you can have a direct press via the hardware mapping support)
(the sky is the limit)
(also this means that you can add support for these things incrementally, it shouldn't be hard to start adding this partially with very basic layouts that come with the system, and import / update more complete versions and community versions later)
Thanks, I will give it a read and also pass it along to the team.
I am not really convinced by using Unicode for all this. This means that the protocol for communicating with the OS is completely different. Every OS works perfectly when it gets plain scancodes, but for unicode I don't think that this will work out of the box on every OS on all levels. For me the Charachorder is a keyboard and it should act like it, when it talks to the OS.
Another problem I see is that the modifiers are not working out of the box anymore.
But that I am not convinced doesn't mean that it is not the right solution.
The devs have to have a look at it as only they know the current design of the firmware.
The solution should build in too of the current design and not require a complete change in the design as that would make things unstable.
unicode is an aside trick that uses OS tricks, it doesn't go against what you say
it's an advanced hack
you don't know what I do with normal keyboards xD
I totally understand that for your use case, things get a lot more complicated
also, German can be typed on Swiss, German or US INTL keyboards software-wise, which differs between Mac and Windows too
you want to have a foundation that can make this just work as much as possible without too much thinking
the european languages if anything are more messed up xD
@timber summit can you also give this a read/look?
from your experience etc
@night ledge π i read this thread diagonally and must say i love your enthusiasm and cant wait to see it slowly die π
πππ
hey, I'm the only one around here unreasonably excited about the bus network even when it is frequently late
portugal is chill indeed.
me: I'm a big Carris Metropolitana fan
bus driver looking at me as if I'm mad
πππ
i love trains and trams so i do relate π
add keyboards to that and you see what I mean xD
if you show me your collection ill show you mine π
I know what it can and cannot do now, and it has upgradable firmware
I'm never not excited when things are possible even just in the wildest dreams
(I only have a typematrix and a bunch of laptops, I'm more a software type)
what do you think of my approach based on the meat of it though? π
software dosent do it for me, it dosent give me that haptic, clicky and motor feed back a mechanical keyboard dose π
from what i can gather its a good way to give in input, but my code understanding is limited to non existent.
id love to be able to remap all symboles on the cc1 without any βfrench 90sβ methods.
also being able to change what cc1 modifiers do to a chord would be nice, im currently waiting for compound chording to see if this might improve my experience of the device.
yeah so my approach is basically trying to bridge between how computers and keyboards work, and what people want
many things are impossible at the moment bc the firmware models in a way that is more limited than what would be possible
in a way it tries to do too much?
so what helps for english actually hurts other languages atm
as I said, improving it by making it more simple
simple is not always easy xD
the simplicity of english makes it harder to think in terms of other languages. but i think being able to edit what a modifier dose to a chord would solve a lot of that π
and not just add an s at the end or ed π
oh yeah that too. but that is VERY language specific.
also, you can fit those things in easily with the proposed structure
$UGI!$gy)$(sq\;S\tqUD<$XK)mqjn$GSuh;ZTSRToU$ghsrzh{ITU$zxmuIGKXUugsSRIUGUIIKuSU$uf,ST$RSQsUFHxSTIofqqhI<XtSUI)Y$DkI(L/Un_UC)U____
GG @iron tartan, you just advanced to level 1!