#Improving CCOS language support

226 messages Β· Page 1 of 1 (latest)

night ledge
#

Random ramblings and active work towards making CharaChorder devices the best option for multilanguage use

#

So @fading sedge, made the thread here

#

there are several concepts that people mix up all the time

fading sedge
#

Looks good to me. You might want to brief yourself on previous suggestions by other multilingual members

night ledge
#

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

night ledge
#

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

fading sedge
#

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 πŸ™‚ )

night ledge
#

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

fading sedge
#

Right now we have windows handling unicode ansi based cp characters

#

mac isn't working, I think

night ledge
#

yeah I think for Mac you would basically need to configure the machine to this unicode hex input keyboard thing

fading sedge
#

Right, that is what I read

night ledge
#

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

fading sedge
#

and handing "shift" right now is a modifier, let handled by OS

#

but for those characters, I don't think it works

night ledge
#

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...

fading sedge
#

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 ]

night ledge
#

most other languages are NOT

fading sedge
#

We have an OS switch in the GTM

night ledge
#

ah you already have an OS switch, cool πŸ˜„

fading sedge
#

Windows/MacOS/Linux/iOS/Android

night ledge
#

who programs CCOS?

fading sedge
#

Matt

night ledge
#

and what is it written in? xD

fading sedge
#

and Riley (I think)

night ledge
#

cool πŸ˜„

fading sedge
#

I have no idea

#

ha

night ledge
#

Linux should work 100% for ChromeOS

#

if not I will tell πŸ˜›

fading sedge
#

Curious your thoughts/desires related to swapping chord libraries/hardware layouts on the fly.

And if in the GTM would be sufficient

night ledge
#

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

fading sedge
#

Wait

#

I thought we would be keeping it on "QWERTY international"

#

and only swapping layout, CharaChorder side

night ledge
#

that works for Spanish, German etc

#

languages that have their characters on QWERTY international

fading sedge
#

ah yes, but for the others

night ledge
#

doesn't work for indian languages

#

for russian

#

etc etc

#

Greek is still mostly Qwerty-based

#

Russian is NOT

fading sedge
#

it's not possible for CharaChorder to know what the OS language is, right?

#

as a USB peripheral

night ledge
#

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

fading sedge
#

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

night ledge
#

yep...

fading sedge
#

or know the QWERTY to Russian mapping

night ledge
#

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

fading sedge
#

ha

night ledge
#

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

fading sedge
#

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

night ledge
#

I think long term it's probably good to have a simple Domain Specific Language for the more complicated language support options

fading sedge
#

I want you to try out remapping etc when you get it

night ledge
#

of course πŸ˜„

fading sedge
#

to get a feel for how it all currently works

night ledge
#

yeah for sure! πŸ˜„

night ledge
plush spindleBOT
#

GG @night ledge, you just advanced to level 6!

night ledge
#

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

night ledge
night ledge
#

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)

#

your dev is going to loooove that πŸ™ƒ

rough bear
#

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.

plush spindleBOT
#

GG @rough bear, you just advanced to level 2!

rough bear
#

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.

rough bear
#

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.

night ledge
#

I already have a plan, don't worry. Unicode support is a possible nice extra.

night ledge
#

will write it out

#

this thread is mostly to establish issues and challenges, not yet full solution

night ledge
#

but close

fading sedge
#

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.

rough bear
fading sedge
#

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

rough bear
#

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.

fading sedge
#

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?

rough bear
#

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?

fading sedge
#

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

rough bear
#

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

fading sedge
#

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

rough bear
#

For German and US, I always stay in the German one as that includes all the characters that qwerty has

plush spindleBOT
#

GG @rough bear, you just advanced to level 3!

night ledge
#

@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

night ledge
#

on my way to the IKEA to have a free coffee and write out a proposal

#

should cater for all concerns

rough bear
night ledge
#

@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)

fading sedge
rough bear
#

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.

rough bear
#

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.

night ledge
#

it's an advanced hack

#

you don't know what I do with normal keyboards xD

rough bear
#

I totally understand that for your use case, things get a lot more complicated

night ledge
#

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

night ledge
#

from your experience etc

brave geyser
#

@night ledge πŸ˜„ i read this thread diagonally and must say i love your enthusiasm and cant wait to see it slowly die πŸ˜„

night ledge
#

πŸ˜‚πŸ˜‚πŸ˜‚

#

hey, I'm the only one around here unreasonably excited about the bus network even when it is frequently late

brave geyser
#

portugal is chill indeed.

night ledge
#

me: I'm a big Carris Metropolitana fan

#

bus driver looking at me as if I'm mad

#

πŸ˜‚πŸ˜‚πŸ˜‚

brave geyser
#

i love trains and trams so i do relate πŸ™‚

night ledge
#

add keyboards to that and you see what I mean xD

brave geyser
#

if you show me your collection ill show you mine πŸ˜„

night ledge
#

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? πŸ™‚

brave geyser
#

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.

night ledge
#

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

brave geyser
#

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 πŸ˜„

night ledge
#

oh yeah that too. but that is VERY language specific.

#

also, you can fit those things in easily with the proposed structure

iron tartan
#

$UGI!$gy)$(sq\;S\tqUD<$XK)mqjn$GSuh;ZTSRToU$ghsrzh{ITU$zxmuIGKXUugsSRIUGUIIKuSU$uf,ST$RSQsUFHxSTIofqqhI<XtSUI)Y$DkI(L/Un_UC)U____

plush spindleBOT
#

GG @iron tartan, you just advanced to level 1!

iron tartan
#

S)O(S)IOk/$)usDI!Odz$$USID

#

LoL... πŸ˜›