Page 3 of 7

Re: Conkey keyboard layout [v1.1.0 now out!]

Posted: Wed Nov 27, 2019 5:08 pm
by bradrn
Richard W wrote: Wed Nov 27, 2019 4:33 pm I got a bit nervous of pushing my advice beyond what I had actually done, so I went ahead and did the translation as proof of principle. It's currently available at http://wrdingham.co.uk/sounds/Conkey.mim . I'll probably take it down when the official conversion becomes available. Testing has been sketchy, and it contains typos. There are no deliberate errors.
Oh wow, thank you! Did you do that by hand, or did you use a script? I was planning to write something short in Haskell to parse the MSKLC file and turn it into a .mim, but if you’ve written something already, maybe I could use that instead.
I learnt two things during the process - hex numbers must start '0x'. not '0X' - and that if there are syntax errors, the keyboard file will be interpreted up to the point at which it deviated from the syntax.
That will certainly be useful, especially since I didn’t even know that .mim files supported hexadecimal.
I haven't addressed 'caps lock' - there might be a lot of work to do there. Also, as I said earlier, the dead keys aren't dead. I believe one can use states to implement them if one really wants dead key behaviour. After all, the M17n formalism seems to be designed to support, inter alia, the implementation of a Japanese IME.
I don’t think I’ll worry about caps lock (although I’ll do it if anyone complains). Anyway, I thought that caps lock was implemented automatically? And I definitely wouldn’t worry about the dead keys — it really doesn’t make any difference whether the key is shown before it gets combined.
AltGr worked for me - but then I patched fcitix to stop it deliberately ignoring it. I use it on Ubuntu 16.04. For later releases, one would, it seems, be back to IBus. At least package ibus-m17n has been reinstated.
The VM I’ve been using is the latest Ubuntu version, 18.something. (Too lazy to check right now.) Any idea how that affects me?
As English is a known language, it was fairly straightforward to add the keyboard. I clicked 'configure' on the fcitix control button, and then the button labelled '+' to add the keyboard. There is another button to control whether it be added for 'other' languages. In general, there's the subtlety that keyboards are ordered by language code, so unknown codes are in alphabetical order but displayed as 'unknown'. M17n keyboards are further identified by (M17N) being added after the name form the keyboard file.
I’m confused now — I just restarted ibus to get my new layout loaded. What is fcitix, and what does it do in terms of keyboard layouts?
Richard W wrote: Wed Nov 27, 2019 12:34 pm
Ser wrote: Wed Nov 27, 2019 10:06 am I don't know how that's solved of course, but I imagine it either has to do with M17n or maybe some misconfiguration somewhere... IBus and GNOME Terminal have no problems using with a distinct AltGr in the provided US-international and Spanish keyboards.
I think that is the reason for

Code: Select all

xmodmap -e 'keysym Mode_switch = Mode_switch Alt_R'
in my .profile.
I’ll try doing this then. (Not entirely sure whether it’ll help for an ibus/m17n keyboard, but it’s worth a try.)

(Or maybe this site? I’ll keep on looking up solutions to see if I can find anything…)

Re: Conkey keyboard layout [v1.1.0 now out!]

Posted: Thu Nov 28, 2019 2:20 am
by Richard W
bradrn wrote: Wed Nov 27, 2019 5:08 pm
Richard W wrote: Wed Nov 27, 2019 4:33 pm I got a bit nervous of pushing my advice beyond what I had actually done, so I went ahead and did the translation as proof of principle. It's currently available at http://wrdingham.co.uk/sounds/Conkey.mim . I'll probably take it down when the official conversion becomes available. Testing has been sketchy, and it contains typos. There are no deliberate errors.
Oh wow, thank you! Did you do that by hand, or did you use a script? I was planning to write something short in Haskell to parse the MSKLC file and turn it into a .mim, but if you’ve written something already, maybe I could use that instead.
I did it by hand, but quickly wondered whether a program might be quicker. Character escaping is going to be fiddly, I suddenly found myself wondering how I would handle the difference between 'R' which is not a dead key, and 'R' resulting from AltGr/v, which is. A program ought to handle there being two different ways of entering the same dead key. If there's going to be Conkey 1.2.0, you probably need a program for long term maintenance. The 'dead key' combinations were automated by emacs macros, but wow, there are a lot of them.
bradrn wrote: Wed Nov 27, 2019 5:08 pm
Richard W wrote: Wed Nov 27, 2019 4:33 pm I learnt two things during the process - hex numbers must start '0x'. not '0X' - and that if there are syntax errors, the keyboard file will be interpreted up to the point at which it deviated from the syntax.
That will certainly be useful, especially since I didn’t even know that .mim files supported hexadecimal.
The other formats are decimal and question mark plus Unicode character (so normalisation can remove the meaning of .mim files), which is what you mostly see in others' .mim files. I always convert 'defective sequences', i.e. those starting with (non-spacing) combination marks, to hex of some form. It's not easy to read combining marks applied to syntax characters, especially if the combining marks don't stack.
bradrn wrote: Wed Nov 27, 2019 5:08 pm
Richard W wrote: Wed Nov 27, 2019 4:33 pm I haven't addressed 'caps lock' - there might be a lot of work to do there. Also, as I said earlier, the dead keys aren't dead. I believe one can use states to implement them if one really wants dead key behaviour. After all, the M17n formalism seems to be designed to support, inter alia, the implementation of a Japanese IME.
I don’t think I’ll worry about caps lock (although I’ll do it if anyone complains). Anyway, I thought that caps lock was implemented automatically? And I definitely wouldn’t worry about the dead keys — it really doesn’t make any difference whether the key is shown before it gets combined.
Caps lock seems to affect the interpretation of the key presses - it can cause trouble with unicameral output, where the shifted and unshifted keys are for unrelated characters. If I accidental leave caps lock on (wireless keyboard, so no indicator light), i suddenly get weird outputs,
bradrn wrote: Wed Nov 27, 2019 5:08 pm
Richard W wrote: Wed Nov 27, 2019 4:33 pm AltGr worked for me - but then I patched fcitix to stop it deliberately ignoring it. I use it on Ubuntu 16.04. For later releases, one would, it seems, be back to IBus. At least package ibus-m17n has been reinstated.
The VM I’ve been using is the latest Ubuntu version, 18.something. (Too lazy to check right now.) Any idea how that affects me?
Must be latest Long Time Support (LTS) version, which would make it 18.04, Bionic Beaver. I'm pessimistic. Some people seem to think AltGr is obsolete! 19.10 should already be out. Next LTS will be 20.04, due out in April.
bradrn wrote: Wed Nov 27, 2019 5:08 pm I’m confused now — I just restarted ibus to get my new layout loaded. What is fcitix, and what does it do in terms of keyboard layouts?
'Fcitix' is a misspelling of 'fcitx', an alternative framework/engine to IBus and SCIM. IBus may have the same method of choosing a keyboard now; it used to use drop down picklists, and all the M17N keyboards appeared in one enormous list. When I moved to 16.04 Xenial, I read that Canonical's focus was on getting fcitx to work well and that IBus was being dropped. Ubuntu was being slow to pick up IBus enhancements. Some of these frameworks and invoked engines (I think of them as keyboard programming languages) were having trouble when people had French or Danish XKB keyboards as their system keyboards. Anyway, I gritted my teeth and moved to fcitx, which meant I had to convert my KMfL layouts to M17N so as to interface them with fcitx. Some of my keyboards have evolved MSKLC → KMfL → M17N, with quail offshoots for Emacs. Conversion to CLDR format will have to await clarification of the CLDR semantics - CLDR/ICU seems to lack the concept of rigorous definition.
bradrn wrote: Wed Nov 27, 2019 5:08 pm (Or maybe this site? I’ll keep on looking up solutions to see if I can find anything…)
That's a different issue. The keyboard selection method used to be XKB (i.e. X11 keyboards) v. framework, and then for the XKB system, one could have a dynamic picklist of up to four XKB keyboards. The XKB keyboards are now selectable from the frameworks' menus.

Re: Conkey keyboard layout [v1.1.0 now out!]

Posted: Thu Nov 28, 2019 2:43 am
by bradrn
Richard W wrote: Thu Nov 28, 2019 2:20 am
bradrn wrote: Wed Nov 27, 2019 5:08 pm
Richard W wrote: Wed Nov 27, 2019 4:33 pm I got a bit nervous of pushing my advice beyond what I had actually done, so I went ahead and did the translation as proof of principle. It's currently available at http://wrdingham.co.uk/sounds/Conkey.mim . I'll probably take it down when the official conversion becomes available. Testing has been sketchy, and it contains typos. There are no deliberate errors.
Oh wow, thank you! Did you do that by hand, or did you use a script? I was planning to write something short in Haskell to parse the MSKLC file and turn it into a .mim, but if you’ve written something already, maybe I could use that instead.
I did it by hand, but quickly wondered whether a program might be quicker. Character escaping is going to be fiddly, I suddenly found myself wondering how I would handle the difference between 'R' which is not a dead key, and 'R' resulting from AltGr/v, which is.
Surely that’s not too difficult to handle? The former would get translated into ((R) ?R), and the latter would be ((G-v R) ?ℝ) or something. Translation of a dead key would get done by a different routine than translation of a non-dead key.
A program ought to handle there being two different ways of entering the same dead key.
I don’t understand what you’re saying here at all — could you elaborate?
If there's going to be Conkey 1.2.0, you probably need a program for long term maintenance. The 'dead key' combinations were automated by emacs macros, but wow, there are a lot of them.
My plan is to use the MSKLC file as a sort of ‘master copy’ (or ‘source code’ if you prefer), and then use a program to convert it to a .mim file when I need to do that. I’ll include the generated file with every release, as well as writing up a section on ‘build instructions’ for anyone who wants to do the conversion themselves.
bradrn wrote: Wed Nov 27, 2019 5:08 pm
Richard W wrote: Wed Nov 27, 2019 4:33 pm I haven't addressed 'caps lock' - there might be a lot of work to do there. Also, as I said earlier, the dead keys aren't dead. I believe one can use states to implement them if one really wants dead key behaviour. After all, the M17n formalism seems to be designed to support, inter alia, the implementation of a Japanese IME.
I don’t think I’ll worry about caps lock (although I’ll do it if anyone complains). Anyway, I thought that caps lock was implemented automatically? And I definitely wouldn’t worry about the dead keys — it really doesn’t make any difference whether the key is shown before it gets combined.
Caps lock seems to affect the interpretation of the key presses - it can cause trouble with unicameral output, where the shifted and unshifted keys are for unrelated characters. If I accidental leave caps lock on (wireless keyboard, so no indicator light), i suddenly get weird outputs,
That is indeed a problem, but in my opinion it’s insignificant enough that I can safely ignore it. I would suggest that the bigger problem is having caps lock on and not knowing about it! (Which happens to me plenty as well, usually I only realise once I’ve typed something…)

(Hmm, that makes me wonder: what does the current keyboard layout do with caps lock? Testing it now, it seems to capitalise some keys but not others.)
bradrn wrote: Wed Nov 27, 2019 5:08 pm
Richard W wrote: Wed Nov 27, 2019 4:33 pm AltGr worked for me - but then I patched fcitix to stop it deliberately ignoring it. I use it on Ubuntu 16.04. For later releases, one would, it seems, be back to IBus. At least package ibus-m17n has been reinstated.
The VM I’ve been using is the latest Ubuntu version, 18.something. (Too lazy to check right now.) Any idea how that affects me?
Must be latest Long Time Support (LTS) version, which would make it 18.04, Bionic Beaver. I'm pessimistic. Some people seem to think AltGr is obsolete! 19.10 should already be out. Next LTS will be 20.04, due out in April.
Yes, 18.04 sounds about right. But I can’t imagine who would seriously think AltGr is obsolete!
bradrn wrote: Wed Nov 27, 2019 5:08 pm I’m confused now — I just restarted ibus to get my new layout loaded. What is fcitix, and what does it do in terms of keyboard layouts?
'Fcitix' is a misspelling of 'fcitx', an alternative framework/engine to IBus and SCIM. IBus may have the same method of choosing a keyboard now; it used to use drop down picklists, and all the M17N keyboards appeared in one enormous list.
To choose a keyboard with IBus, I just needed to go to the Ubuntu ‘Settings’ program and select a keyboard there. All the builtin Ubuntu keyboards and the M17N keyboards all appeared in the same list.
When I moved to 16.04 Xenial, I read that Canonical's focus was on getting fcitx to work well and that IBus was being dropped. Ubuntu was being slow to pick up IBus enhancements. Some of these frameworks and invoked engines (I think of them as keyboard programming languages) were having trouble when people had French or Danish XKB keyboards as their system keyboards. Anyway, I gritted my teeth and moved to fcitx, which meant I had to convert my KMfL layouts to M17N so as to interface them with fcitx. Some of my keyboards have evolved MSKLC → KMfL → M17N, with quail offshoots for Emacs. Conversion to CLDR format will have to await clarification of the CLDR semantics - CLDR/ICU seems to lack the concept of rigorous definition.
The online materials I read lead me to use IBus. Maybe I’ll try using fcitx instead and see if it works any better!

Re: Conkey keyboard layout [v1.1.0 now out!]

Posted: Thu Nov 28, 2019 5:42 am
by Xwtek
I won't write a Haskell program with -XUnicodeSyntax. I don't know why GHC dev team introduced it.

Re: Conkey keyboard layout [v1.1.0 now out!]

Posted: Thu Nov 28, 2019 6:42 am
by bradrn
Xwtek wrote: Thu Nov 28, 2019 5:42 am I won't write a Haskell program with -XUnicodeSyntax. I don't know why GHC dev team introduced it.
I don’t much like -XUnicodeSyntax either. The reason I added symbols for -XUnicodeSyntax to Conkey is because I know that other people do like it. (Also, they’re useful for maths, and I was looking for some more useful characters to add to the keyboard.)

But on the other hand, something like (∘) ∷ (β → γ) → (α → β) → (α → γ) is much easier to read than (.) :: (b -> c) -> (a -> b) -> (a -> c), even if the latter is much easier to type. Who knows, maybe I’ll start using Unicode Syntax a bit myself now that I can type it at all!

Re: Conkey keyboard layout [v1.1.0 now out!]

Posted: Thu Nov 28, 2019 1:16 pm
by Richard W
bradrn wrote: Thu Nov 28, 2019 2:43 am
Richard W wrote: Thu Nov 28, 2019 2:20 am I suddenly found myself wondering how I would handle the difference between 'R' which is not a dead key, and 'R' resulting from AltGr/v, which is.
Surely that’s not too difficult to handle? The former would get translated into ((R) ?R), and the latter would be ((G-v R) ?ℝ) or something. Translation of a dead key would get done by a different routine than translation of a non-dead key.
Richard W wrote: Thu Nov 28, 2019 2:20 am A program ought to handle there being two different ways of entering the same dead key.
I don’t understand what you’re saying here at all — could you elaborate?
To handle just the entry of the dead key, ((G-v) ?R) does the job. When one comes to translate the dead key section, one doesn't use 'R', but remembers the keystrokes that lead to the dead key, and translates the sequence as above. The complication is that a program needs to record all such sequences. This may become very relevant if you add synonymous modifier combinations, such as C-A- or s-, to G-.

Re: Conkey keyboard layout [v1.1.0 now out!]

Posted: Thu Nov 28, 2019 4:05 pm
by bradrn
Richard W wrote: Thu Nov 28, 2019 1:16 pm
bradrn wrote: Thu Nov 28, 2019 2:43 am
Richard W wrote: Thu Nov 28, 2019 2:20 am I suddenly found myself wondering how I would handle the difference between 'R' which is not a dead key, and 'R' resulting from AltGr/v, which is.
Surely that’s not too difficult to handle? The former would get translated into ((R) ?R), and the latter would be ((G-v R) ?ℝ) or something. Translation of a dead key would get done by a different routine than translation of a non-dead key.
Richard W wrote: Thu Nov 28, 2019 2:20 am A program ought to handle there being two different ways of entering the same dead key.
I don’t understand what you’re saying here at all — could you elaborate?
To handle just the entry of the dead key, ((G-v) ?R) does the job. When one comes to translate the dead key section, one doesn't use 'R', but remembers the keystrokes that lead to the dead key, and translates the sequence as above. The complication is that a program needs to record all such sequences. This may become very relevant if you add synonymous modifier combinations, such as C-A- or s-, to G-.
Yes, that’s pretty much what I was saying. I just don’t see what the difficulty is — this seems like a pretty simple procedure.

Re: Conkey keyboard layout [v1.1.0 now out!]

Posted: Thu Nov 28, 2019 5:20 pm
by Richard W
bradrn wrote: Thu Nov 28, 2019 4:05 pm Yes, that’s pretty much what I was saying. I just don’t see what the difficulty is — this seems like a pretty simple procedure.
I think I would have missed the subtle issues here if I'd leapt into encoding a conversion program.

Re: Conkey keyboard layout [v1.1.0 now out!]

Posted: Fri Nov 29, 2019 1:25 am
by bradrn
So I finally tried fcitx — and ran into even more issues than I did with IBus. Most importantly, I couldn’t change my keyboard layout out of English US. So I changed back to IBus. I still have that problem with AltGr — I can’t access AltGr on any key, at least when I tried in gedit and Terminal. I’m really stumped right now… Does anyone have any ideas?

Re: Conkey keyboard layout [v1.1.0 now out!]

Posted: Fri Nov 29, 2019 2:56 am
by Richard W
bradrn wrote: Fri Nov 29, 2019 1:25 am So I finally tried fcitx — and ran into even more issues than I did with IBus. Most importantly, I couldn’t change my keyboard layout out of English US. So I changed back to IBus. I still have that problem with AltGr — I can’t access AltGr on any key, at least when I tried in gedit and Terminal. I’m really stumped right now… Does anyone have any ideas?
The first problem is useful to know. Of late, I've had difficulty changing keyboard a second time in fcitx in Ubuntu 16.04. Sounds like sabotage backported from 18.04! (Are they telling multilingualists to bugger off!) Mind you, fcitx was originally missing from vanilla 18.04. It's not too dire; the work around is to change to the default keyboard by clicking the fcitx 'restart' option.

Have you tried my xmodmap trick? You may need to run it in a terminal and then fire up the application in a terminal, though that's not been necessary for me. For Conkey, you could sacrifice one ordinary key to serve as AltGr, as I do with '!' for my keyboards. Is AltGr failing with XKB keyboards?

Re: Conkey keyboard layout [v1.1.0 now out!]

Posted: Fri Nov 29, 2019 3:20 am
by bradrn
Richard W wrote: Fri Nov 29, 2019 2:56 am (Are they telling multilingualists to bugger off!)
To be fair, OSs of all sorts do this regularly. I have vague memories of custom keyboards in Windows XP and Windows 7 working much better than those in Windows 10, although I could be wrong.
Mind you, fcitx was originally missing from vanilla 18.04. It's not too dire; the work around is to change to the default keyboard by clicking the fcitx 'restart' option.
I’ll try that if I go back to fcitx.
Have you tried my xmodmap trick? You may need to run it in a terminal and then fire up the application in a terminal, though that's not been necessary for me.
I did try it, but not in a terminal like you say here. I’ll try again now.
For Conkey, you could sacrifice one ordinary key to serve as AltGr, as I do with '!' for my keyboards.
If nothing else works, I’ll do this. It doesn’t seem like such a bad option, although I’d need to find a good key to use. (Perhaps %, since I’m not using it for anything right now?)
Is AltGr failing with XKB keyboards?
Not sure; I’ll check now. US-International seems like a good test case.

Re: Conkey keyboard layout [v1.1.0 now out!]

Posted: Fri Nov 29, 2019 4:07 am
by bradrn
So this is interesting! AltGr works just fine on an XKB keyboard (specifically, the one for Fula, where AltGr+e yields €), but it doesn’t work at all for an M17N keyboard in IBus. The xmodmap trick doesn’t do anything, even when I run gedit from the terminal afterwards.

Re: Conkey keyboard layout [v1.1.0 now out!]

Posted: Fri Nov 29, 2019 1:50 pm
by Richard W
Well, AltGR works in some ibus-m17n environments - see https://wikis.swarthmore.edu/ling073/Ma ... using_IBus. Possibly the relevant detail is in https://askubuntu.com/questions/779448/ ... untu-16-04 . The second article might actually be how I got AltGr working well enough for patching fcitx to work.

Re: Conkey keyboard layout [v1.1.0 now out!]

Posted: Fri Nov 29, 2019 7:02 pm
by bradrn
Richard W wrote: Fri Nov 29, 2019 1:50 pm Well, AltGR works in some ibus-m17n environments - see https://wikis.swarthmore.edu/ling073/Ma ... using_IBus. Possibly the relevant detail is in https://askubuntu.com/questions/779448/ ... untu-16-04 . The second article might actually be how I got AltGr working well enough for patching fcitx to work.
It works now! Thank you! The correct method turned out to be to install gnome-tweaks, and then set Keyboard & Mouse > Additional Layout Options > Key to choose the 3rd level to Right Alt. Now I can get started on actually making the Conkey layout…

Re: Conkey keyboard layout

Posted: Sun Dec 01, 2019 5:39 am
by bradrn
Well, I’ve finished my program to convert an MSKLC keyboard to an M17N one, and it seems to work! Here’s an unofficial Ubuntu version of Conkey:
More: show

Code: Select all

(input-method t Conkey )
(description "Conkey")
(title "Conkey")
(map (simple ((\;) 59) ((:) 58) ((G-\;) 733) ((G-\; 32) 779) ((G-\; 79) 336) ((G-\; 85) 368) ((G-\; 111) 337) ((G-\; 117) 369) ((G-:) 58) ((G-: 58) 42889) ((G-: 59) 720) ((/) 47) ((\?) 63) ((G-/) 62) ((G-/ 97) 8592) ((G-/ 98) 8651) ((G-/ 99) 8656) ((G-/ 100) 8594) ((G-/ 101) 8648) ((G-/ 102) 8650) ((G-/ 103) 10524) ((G-/ 104) 10523) ((G-/ 105) 8610) ((G-/ 109) 8614) ((G-/ 110) 8652) ((G-/ 114) 8649) ((G-/ 115) 8595) ((G-/ 116) 10522) ((G-/ 117) 8611) ((G-/ 118) 8658) ((G-/ 119) 8593) ((G-/ 120) 8597) ((G-/ 121) 10521) ((G-/ 122) 8596) ((G-\?) 191) ((`) 96) ((~) 126) ((G-`) 715) ((G-` 32) 768) ((G-` 65) 192) ((G-` 69) 200) ((G-` 73) 204) ((G-` 78) 504) ((G-` 79) 210) ((G-` 85) 217) ((G-` 87) 7808) ((G-` 89) 7922) ((G-` 97) 224) ((G-` 101) 232) ((G-` 105) 236) ((G-` 110) 505) ((G-` 111) 242) ((G-` 117) 249) ((G-` 119) 7809) ((G-` 121) 7923) ((G-~) 732) ((G-~ 32) 771) ((G-~ 65) 195) ((G-~ 69) 7868) ((G-~ 73) 296) ((G-~ 78) 209) ((G-~ 79) 213) ((G-~ 85) 360) ((G-~ 86) 7804) ((G-~ 89) 7928) ((G-~ 97) 227) ((G-~ 101) 7869) ((G-~ 105) 297) ((G-~ 110) 241) ((G-~ 111) 245) ((G-~ 117) 361) ((G-~ 118) 7805) ((G-~ 121) 7929) (([) 91) (({) 123) ((C-[) 27) ((G-[) 731) ((G-[ 32) 808) ((G-[ 65) 260) ((G-[ 69) 280) ((G-[ 73) 302) ((G-[ 79) 490) ((G-[ 85) 370) ((G-[ 97) 261) ((G-[ 101) 281) ((G-[ 105) 303) ((G-[ 111) 491) ((G-[ 117) 371) ((G-{) 734) ((G-{ 66) 385) ((G-{ 68) 393) ((G-{ 70) 401) ((G-{ 75) 408) ((G-{ 78) 413) ((G-{ 84) 428) ((G-{ 86) 434) ((G-{ 89) 435) ((G-{ 98) 595) ((G-{ 100) 598) ((G-{ 102) 402) ((G-{ 107) 409) ((G-{ 110) 626) ((G-{ 116) 429) ((G-{ 118) 651) ((G-{ 121) 436) ((G-{ 222) 430) ((G-{ 254) 648) ((G-{ 395) 394) ((G-{ 396) 599) ((]) 92) ((}) 124) ((C-]) 28) ((G-]) 821) ((G-] 32) 821) ((G-] 65) 570) ((G-] 66) 579) ((G-] 67) 571) ((G-] 68) 208) ((G-] 69) 582) ((G-] 71) 484) ((G-] 72) 294) ((G-] 73) 407) ((G-] 74) 584) ((G-] 75) 42816) ((G-] 76) 321) ((G-] 79) 216) ((G-] 80) 11363) ((G-] 81) 42838) ((G-] 82) 588) ((G-] 84) 358) ((G-] 85) 580) ((G-] 89) 590) ((G-] 90) 437) ((G-] 92) 823) ((G-] 97) 11365) ((G-] 98) 384) ((G-] 99) 572) ((G-] 100) 240) ((G-] 101) 583) ((G-] 103) 485) ((G-] 104) 295) ((G-] 105) 616) ((G-] 106) 585) ((G-] 107) 42817) ((G-] 108) 322) ((G-] 111) 248) ((G-] 112) 7549) ((G-] 113) 42839) ((G-] 114) 589) ((G-] 116) 359) ((G-] 117) 649) ((G-] 121) 591) ((G-] 122) 438) ((G-] 222) 42852) ((G-] 254) 42853) ((G-] 955) 411) ((G-}) 822) ((G-} 32) 822) ((G-} 68) 272) ((G-} 76) 573) ((G-} 79) 415) ((G-} 80) 42832) ((G-} 92) 824) ((G-} 100) 273) ((G-} 106) 607) ((G-} 108) 410) ((G-} 111) 629) ((G-} 112) 42833) ((G-} 222) 42854) ((G-} 254) 42855) ((\\) 93) ((|) 125) ((C-\\) 29) ((G-\\) 61) ((G-\\ 33) 8252) ((G-\\ 35) 8713) ((G-\\ 37) 8859) ((G-\\ 38) 8853) ((G-\\ 40) 10631) ((G-\\ 41) 10632) ((G-\\ 42) 9733) ((G-\\ 43) 10746) ((G-\\ 46) 8728) ((G-\\ 47) 8800) ((G-\\ 56) 8258) ((G-\\ 58) 8759) ((G-\\ 60) 8805) ((G-\\ 61) 8801) ((G-\\ 62) 8804) ((G-\\ 63) 8802) ((G-\\ 65) 8704) ((G-\\ 69) 8712) ((G-\\ 73) 8745) ((G-\\ 85) 8746) ((G-\\ 91) 10214) ((G-\\ 92) 8726) ((G-\\ 93) 10215) ((G-\\ 94) 8743) ((G-\\ 95) 10747) ((G-\\ 98) 8869) ((G-\\ 101) 949) ((G-\\ 105) 8920) ((G-\\ 107) 8810) ((G-\\ 108) 8811) ((G-\\ 110) 8709) ((G-\\ 111) 8921) ((G-\\ 118) 8744) ((G-\\ 120) 8901) ((G-\\ 123) 8838) ((G-\\ 124) 10996) ((G-\\ 125) 8839) ((G-\\ 126) 172) ((') 39) ((") 34) ((G-') 714) ((G-' 32) 769) ((G-' 40) 8216) ((G-' 41) 8217) ((G-' 44) 8218) ((G-' 46) 8219) ((G-' 60) 8249) ((G-' 62) 8250) ((G-' 65) 193) ((G-' 67) 262) ((G-' 69) 201) ((G-' 71) 500) ((G-' 73) 205) ((G-' 75) 7728) ((G-' 76) 313) ((G-' 77) 7742) ((G-' 78) 323) ((G-' 79) 211) ((G-' 80) 7764) ((G-' 82) 340) ((G-' 83) 346) ((G-' 85) 218) ((G-' 87) 7810) ((G-' 89) 221) ((G-' 90) 377) ((G-' 97) 225) ((G-' 99) 263) ((G-' 101) 233) ((G-' 103) 501) ((G-' 105) 237) ((G-' 107) 7729) ((G-' 108) 314) ((G-' 109) 7743) ((G-' 110) 324) ((G-' 111) 243) ((G-' 112) 7765) ((G-' 114) 341) ((G-' 115) 347) ((G-' 117) 250) ((G-' 119) 7811) ((G-' 121) 253) ((G-' 122) 378) ((G-' 198) 508) ((G-' 216) 510) ((G-' 230) 509) ((G-' 248) 511) ((G-") 168) ((G-" 32) 776) ((G-" 40) 8220) ((G-" 41) 8221) ((G-" 44) 8222) ((G-" 46) 8223) ((G-" 60) 171) ((G-" 62) 187) ((G-" 65) 196) ((G-" 69) 203) ((G-" 72) 7718) ((G-" 73) 207) ((G-" 79) 214) ((G-" 85) 220) ((G-" 87) 7812) ((G-" 88) 7820) ((G-" 89) 376) ((G-" 97) 228) ((G-" 101) 235) ((G-" 104) 7719) ((G-" 105) 239) ((G-" 111) 246) ((G-" 116) 7831) ((G-" 117) 252) ((G-" 119) 7813) ((G-" 120) 7821) ((G-" 121) 255) ((|) 124) ((= Just) 61) ((+) 43) ((,) 44) ((<) 60) ((G-,) 806) ((G-, 32) 806) ((G-, 83) 536) ((G-, 84) 538) ((G-, 115) 537) ((G-, 116) 539) ((G-<) 184) ((G-< 32) 807) ((G-< 67) 199) ((G-< 68) 7696) ((G-< 69) 552) ((G-< 71) 290) ((G-< 72) 7720) ((G-< 75) 310) ((G-< 76) 315) ((G-< 78) 325) ((G-< 82) 342) ((G-< 83) 350) ((G-< 84) 354) ((G-< 99) 231) ((G-< 100) 7697) ((G-< 101) 553) ((G-< 103) 291) ((G-< 104) 7721) ((G-< 107) 311) ((G-< 108) 316) ((G-< 110) 326) ((G-< 114) 343) ((G-< 115) 351) ((G-< 116) 355) ((G-< 184) 10216) ((-) 45) ((_) 95) ((G--) 713) ((G-- 32) 772) ((G-- 45) 8208) ((G-- 61) 8722) ((G-- 65) 256) ((G-- 69) 274) ((G-- 71) 7712) ((G-- 73) 298) ((G-- 79) 332) ((G-- 85) 362) ((G-- 89) 562) ((G-- 97) 257) ((G-- 101) 275) ((G-- 103) 7713) ((G-- 105) 299) ((G-- 109) 8212) ((G-- 110) 8211) ((G-- 111) 333) ((G-- 117) 363) ((G-- 121) 563) ((G-- 198) 482) ((G-- 230) 483) ((G-_) 717) ((G-_ 32) 817) ((G-_ 66) 7686) ((G-_ 68) 7694) ((G-_ 75) 7732) ((G-_ 76) 7738) ((G-_ 78) 7752) ((G-_ 82) 7774) ((G-_ 84) 7790) ((G-_ 90) 7828) ((G-_ 98) 7687) ((G-_ 100) 7695) ((G-_ 104) 7830) ((G-_ 107) 7733) ((G-_ 108) 7739) ((G-_ 110) 7753) ((G-_ 114) 7775) ((G-_ 116) 7791) ((G-_ 122) 7829) ((.) 46) ((>) 62) ((G-.) 803) ((G-. 32) 803) ((G-. 41) 8226) ((G-. 46) 8230) ((G-. 48) 176) ((G-. 65) 7840) ((G-. 66) 7684) ((G-. 68) 7692) ((G-. 69) 7864) ((G-. 72) 7716) ((G-. 73) 7882) ((G-. 75) 7730) ((G-. 76) 7734) ((G-. 77) 7746) ((G-. 78) 7750) ((G-. 79) 7884) ((G-. 82) 7770) ((G-. 83) 7778) ((G-. 84) 7788) ((G-. 85) 7908) ((G-. 86) 7806) ((G-. 87) 7816) ((G-. 89) 7924) ((G-. 90) 7826) ((G-. 97) 7841) ((G-. 98) 7685) ((G-. 100) 7693) ((G-. 101) 7865) ((G-. 104) 7717) ((G-. 105) 7883) ((G-. 107) 7731) ((G-. 108) 7735) ((G-. 109) 7747) ((G-. 110) 7751) ((G-. 111) 7885) ((G-. 114) 7771) ((G-. 115) 7779) ((G-. 116) 7789) ((G-. 117) 7909) ((G-. 118) 7807) ((G-. 119) 7817) ((G-. 121) 7925) ((G-. 122) 7827) ((G-. 124) 183) ((G->) 729) ((G-> 32) 775) ((G-> 65) 550) ((G-> 66) 7682) ((G-> 67) 266) ((G-> 68) 7690) ((G-> 69) 278) ((G-> 70) 7710) ((G-> 71) 288) ((G-> 72) 7714) ((G-> 73) 304) ((G-> 77) 7744) ((G-> 78) 7748) ((G-> 79) 558) ((G-> 80) 7766) ((G-> 82) 7768) ((G-> 83) 7776) ((G-> 84) 7786) ((G-> 87) 7814) ((G-> 88) 7818) ((G-> 89) 7822) ((G-> 90) 379) ((G-> 97) 551) ((G-> 98) 7683) ((G-> 99) 267) ((G-> 100) 7691) ((G-> 101) 279) ((G-> 102) 7711) ((G-> 103) 289) ((G-> 104) 7715) ((G-> 109) 7745) ((G-> 110) 7749) ((G-> 111) 559) ((G-> 112) 7767) ((G-> 114) 7769) ((G-> 115) 7777) ((G-> 116) 7787) ((G-> 119) 7815) ((G-> 120) 7819) ((G-> 121) 7823) ((G-> 122) 380) ((G-> 729) 10217) ((0) 48) ((\)) 41) ((G-0) 777) ((G-0 32) 777) ((G-0 65) 7842) ((G-0 69) 7866) ((G-0 73) 7880) ((G-0 79) 7886) ((G-0 85) 7910) ((G-0 89) 7926) ((G-0 97) 7843) ((G-0 101) 7867) ((G-0 105) 7881) ((G-0 111) 7887) ((G-0 117) 7911) ((G-0 121) 7927) ((G-\)) 795) ((G-\) 32) 795) ((G-\) 79) 416) ((G-\) 85) 431) ((G-\) 111) 417) ((G-\) 117) 432) ((1) 49) ((!) 33) ((G-1) 617) ((G-1 33) 406) ((G-1 35) 1047) ((G-1 36) 1063) ((G-1 37) 444) ((G-1 49) 617) ((G-1 50) 424) ((G-1 51) 1079) ((G-1 52) 1095) ((G-1 53) 445) ((G-1 54) 389) ((G-1 64) 423) ((G-1 94) 388) ((G-!) 161) ((2) 50) ((@) 64) ((G-2) 215) ((G-2 37) 8240) ((G-2 39) 8242) ((G-2 42) 215) ((G-2 43) 177) ((G-2 47) 247) ((G-2 48) 8709) ((G-2 49) 8242) ((G-2 50) 8243) ((G-2 51) 8244) ((G-2 79) 8709) ((G-2 113) 8730) ((G-2 115) 178) ((G-2 120) 215) ((G-@) 33) ((G-@ 33) 8253) ((G-@ 49) 8224) ((G-@ 50) 8225) ((G-@ 63) 8253) ((G-@ 78) 8470) ((3) 51) ((#) 35) ((G-3) 603) ((G-#) 400) ((4) 52) (($) 36) ((G-4) 164) ((G-4 67) 162) ((G-4 99) 99) ((G-4 101) 8364) ((G-4 108) 163) ((G-4 111) 164) ((G-4 114) 8377) ((G-4 115) 8362) ((5) 53) ((%) 37) ((G-5) 711) ((G-5 32) 780) ((G-5 65) 461) ((G-5 67) 268) ((G-5 68) 270) ((G-5 69) 282) ((G-5 71) 486) ((G-5 72) 542) ((G-5 73) 463) ((G-5 75) 488) ((G-5 76) 317) ((G-5 78) 327) ((G-5 79) 465) ((G-5 82) 344) ((G-5 83) 352) ((G-5 84) 356) ((G-5 85) 467) ((G-5 90) 381) ((G-5 97) 462) ((G-5 99) 269) ((G-5 100) 271) ((G-5 101) 283) ((G-5 103) 487) ((G-5 104) 543) ((G-5 105) 464) ((G-5 106) 496) ((G-5 107) 489) ((G-5 108) 318) ((G-5 110) 328) ((G-5 111) 466) ((G-5 114) 345) ((G-5 115) 353) ((G-5 116) 357) ((G-5 117) 468) ((G-5 122) 382) ((G-5 439) 494) ((G-5 658) 495) ((6) 54) ((^) 94) ((G-6) 710) ((G-6 32) 770) ((G-6 65) 194) ((G-6 67) 264) ((G-6 69) 202) ((G-6 71) 284) ((G-6 72) 292) ((G-6 73) 206) ((G-6 74) 308) ((G-6 79) 212) ((G-6 83) 348) ((G-6 85) 219) ((G-6 87) 372) ((G-6 89) 374) ((G-6 90) 7824) ((G-6 97) 226) ((G-6 99) 265) ((G-6 101) 234) ((G-6 103) 285) ((G-6 104) 293) ((G-6 105) 238) ((G-6 106) 309) ((G-6 111) 244) ((G-6 115) 349) ((G-6 117) 251) ((G-6 119) 373) ((G-6 121) 375) ((G-6 122) 7825) ((7) 55) ((&) 38) ((G-7) 813) ((G-7 32) 813) ((G-7 68) 7698) ((G-7 69) 7704) ((G-7 76) 7740) ((G-7 78) 7754) ((G-7 84) 7792) ((G-7 85) 7798) ((G-7 100) 7699) ((G-7 101) 7705) ((G-7 108) 7741) ((G-7 110) 7755) ((G-7 116) 7793) ((G-7 117) 7799) ((8) 56) ((*) 42) ((G-8) 730) ((G-8 32) 778) ((G-8 65) 197) ((G-8 85) 366) ((G-8 97) 229) ((G-8 117) 367) ((G-8 119) 7832) ((G-8 121) 7833) ((9) 57) ((\() 40) ((G-9) 728) ((G-9 32) 774) ((G-9 65) 258) ((G-9 69) 276) ((G-9 71) 286) ((G-9 73) 300) ((G-9 79) 334) ((G-9 85) 364) ((G-9 97) 259) ((G-9 101) 277) ((G-9 103) 287) ((G-9 105) 301) ((G-9 111) 335) ((G-9 117) 365) ((\ ) 32) ((S-\ ) 32) ((C-\ ) 32) ((G-\ ) 32) ((G-\  32) 160) ((G-\  33) 8239) ((G-\  40) 8204) ((G-\  41) 8205) ((G-\  43) 8287) ((G-\  44) 8201) ((G-\  46) 8200) ((G-\  48) 8203) ((G-\  49) 8199) ((G-\  91) 9251) ((G-\  93) 9085) ((G-\  98) 8196) ((G-\  99) 8198) ((G-\  109) 8195) ((G-\  110) 8194) ((G-\  116) 9) ((G-\  118) 8197) ((G-\  124) 8202) ((a) 97) ((A) 65) ((G-a) 230) ((G-a 65) 11373) ((G-a 69) 198) ((G-a 97) 593) ((G-a 101) 230) ((G-A) 198) ((b) 98) ((B) 66) ((G-b) 42897) ((G-B) 42896) ((c) 99) ((C) 67) ((G-c) 42892) ((G-C) 42891) ((d) 100) ((D) 68) ((e) 101) ((E) 69) ((G-e) 601) ((G-E) 399) ((f) 102) ((F) 70) ((g) 103) ((G) 71) ((G-g) 611) ((G-G) 404) ((h) 104) ((H) 72) ((G-h) 42791) ((G-H) 42790) ((i) 105) ((I) 73) ((G-i) 305) ((j) 106) ((J) 74) ((G-j) 952) ((G-j 68) 916) ((G-j 70) 934) ((G-j 71) 915) ((G-j 76) 923) ((G-j 80) 928) ((G-j 83) 931) ((G-j 84) 920) ((G-j 97) 945) ((G-j 98) 946) ((G-j 100) 948) ((G-j 102) 966) ((G-j 103) 947) ((G-j 108) 955) ((G-j 109) 956) ((G-j 112) 960) ((G-j 114) 961) ((G-j 115) 963) ((G-j 116) 952) ((k) 107) ((K) 75) ((G-k) 596) ((G-K) 390) ((l) 108) ((L) 76) ((G-l) 396) ((G-l 34) 42788) ((G-l 35) 42794) ((G-l 36) 42796) ((G-l 37) 42798) ((G-l 39) 42789) ((G-l 51) 42795) ((G-l 52) 42797) ((G-l 53) 42799) ((G-l 65) 42786) ((G-l 66) 386) ((G-l 68) 395) ((G-l 71) 418) ((G-l 72) 7722) ((G-l 78) 544) ((G-l 79) 546) ((G-l 81) 586) ((G-l 86) 581) ((G-l 87) 503) ((G-l 89) 1068) ((G-l 90) 540) ((G-l 97) 42787) ((G-l 98) 387) ((G-l 100) 396) ((G-l 103) 419) ((G-l 104) 7723) ((G-l 107) 312) ((G-l 110) 414) ((G-l 111) 547) ((G-l 113) 587) ((G-l 118) 652) ((G-l 119) 447) ((G-l 121) 1100) ((G-l 122) 541) ((G-L) 395) ((m) 109) ((M) 77) ((G-m) 712) ((G-m 34) 782) ((G-m 39) 700) ((G-m 42) 856) ((G-m 44) 787) ((G-m 46) 788) ((G-m 60) 786) ((G-m 62) 789) ((G-m 92) 809) ((G-m 93) 712) ((G-m 96) 790) ((G-m 112) 697) ((G-m 124) 781) ((G-m 126) 791) ((n) 110) ((N) 78) ((G-n) 331) ((G-N) 330) ((o) 111) ((O) 79) ((G-o) 248) ((G-o 46) 9676) ((G-o 69) 338) ((G-o 79) 42830) ((G-o 85) 433) ((G-o 87) 42934) ((G-o 101) 339) ((G-o 111) 42831) ((G-o 117) 650) ((G-o 119) 42935) ((G-O) 216) ((p) 112) ((P) 80) ((G-p) 448) ((G-p 33) 451) ((G-p 47) 448) ((G-p 61) 450) ((G-p 64) 664) ((G-p 99) 448) ((G-p 113) 451) ((G-p 118) 450) ((G-p 120) 449) ((G-p 124) 448) ((G-P) 169) ((G-P 99) 169) ((G-P 112) 8471) ((G-P 114) 174) ((G-P 115) 8480) ((G-P 116) 8482) ((q) 113) ((Q) 81) ((G-q) 578) ((G-Q) 577) ((r) 114) ((R) 82) ((s) 115) ((S) 83) ((G-s) 223) ((G-s 72) 425) ((G-s 83) 7838) ((G-s 102) 383) ((G-s 104) 643) ((G-s 112) 182) ((G-s 115) 223) ((G-s 124) 167) ((t) 116) ((T) 84) ((G-t) 254) ((G-T) 222) ((u) 117) ((U) 85) ((G-u) 623) ((G-U) 412) ((v) 118) ((V) 86) ((G-v) 82) ((G-v 67) 8450) ((G-v 78) 8469) ((G-v 81) 8474) ((G-v 82) 8477) ((G-v 90) 8484) ((G-v 99) 8450) ((G-v 110) 8469) ((G-v 113) 8474) ((G-v 114) 8477) ((G-v 122) 8484) ((w) 119) ((W) 87) ((G-w) 695) ((G-w 43) 8314) ((G-w 45) 8315) ((G-w 48) 8304) ((G-w 49) 185) ((G-w 50) 178) ((G-w 51) 179) ((G-w 52) 8308) ((G-w 53) 8309) ((G-w 54) 8310) ((G-w 55) 8311) ((G-w 56) 8312) ((G-w 57) 8313) ((G-w 65) 7468) ((G-w 66) 7470) ((G-w 68) 7472) ((G-w 69) 7473) ((G-w 71) 7475) ((G-w 72) 7476) ((G-w 73) 7477) ((G-w 74) 7478) ((G-w 75) 7479) ((G-w 76) 7480) ((G-w 77) 7481) ((G-w 78) 7482) ((G-w 79) 7484) ((G-w 80) 7486) ((G-w 82) 7487) ((G-w 84) 7488) ((G-w 85) 7489) ((G-w 86) 11389) ((G-w 87) 7490) ((G-w 97) 7491) ((G-w 98) 7495) ((G-w 99) 7580) ((G-w 100) 7496) ((G-w 101) 7497) ((G-w 102) 7584) ((G-w 103) 7501) ((G-w 104) 688) ((G-w 105) 8305) ((G-w 106) 690) ((G-w 107) 7503) ((G-w 108) 737) ((G-w 109) 7504) ((G-w 110) 8319) ((G-w 111) 7506) ((G-w 112) 7510) ((G-w 114) 691) ((G-w 115) 738) ((G-w 116) 7511) ((G-w 117) 7512) ((G-w 118) 7515) ((G-w 119) 695) ((G-w 120) 739) ((G-w 121) 696) ((G-w 122) 7611) ((G-w 952) 7615) ((x) 120) ((X) 88) ((G-x) 660) ((G-X) 699) ((y) 121) ((Y) 89) ((G-y) 477) ((G-Y) 398) ((z) 122) ((Z) 90) ((G-z) 658) ((G-Z) 439)))
(state (init  (init (simple))))
It will become official when I release it in through GitHub in a couple of days, but before I do that, the keyboard needs to be tested. However, when I tried to test it, the AltGr key stopped working again. Does anyone with a better setup want to volunteer to test this? (Or possibly point out any glaring errors I’ve made; that could be tricky though because the output isn’t terribly human-readable.)

Re: Conkey keyboard layout [v1.1.0 now out!]

Posted: Sun Dec 01, 2019 9:58 am
by Richard W
Is the translation deliberately unreadable? (It's almost one very long line, and with decimal rather than hexadecimal scalar values for the characters.)
Is it public domain? I'd expect to see the licence or a reference to it in a file like this. Can you not stamp it with a date or version?

Re: Conkey keyboard layout [v1.1.0 now out!]

Posted: Sun Dec 01, 2019 3:01 pm
by bradrn
Richard W wrote: Sun Dec 01, 2019 9:58 am Is the translation deliberately unreadable? (It's almost one very long line, and with decimal rather than hexadecimal scalar values for the characters.)
No, it’s just that I wanted to keep my prettyprinter simple. But it would be a very minor change to use a newline rather than a space between the mappings — I’ll do that now. As for the decimal values, they were simply a lot easier to do. (Haskell has show to convert an integer to a decimal string, but it’s slightly harder to convert an integer to a hexadecimal string.) This is primarily meant to be computer- rather than human-readable: humans are expected to edit the MSKLC file using the graphical editor.

EDIT: Just changed it, it’s a lot more readable now:
More: show

Code: Select all

(input-method t Conkey )
(description "Conkey")
(title "Conkey")
(map (simple
((\;) 59)
((:) 58)
((G-\;) 733)
((G-\; 32) 779)
((G-\; 79) 336)
((G-\; 85) 368)
((G-\; 111) 337)
((G-\; 117) 369)
((G-:) 58)
((G-: 58) 42889)
((G-: 59) 720)
((/) 47)
((\?) 63)
((G-/) 62)
((G-/ 97) 8592)
((G-/ 98) 8651)
((G-/ 99) 8656)
((G-/ 100) 8594)
((G-/ 101) 8648)
((G-/ 102) 8650)
((G-/ 103) 10524)
((G-/ 104) 10523)
((G-/ 105) 8610)
((G-/ 109) 8614)
((G-/ 110) 8652)
((G-/ 114) 8649)
((G-/ 115) 8595)
((G-/ 116) 10522)
((G-/ 117) 8611)
((G-/ 118) 8658)
((G-/ 119) 8593)
((G-/ 120) 8597)
((G-/ 121) 10521)
((G-/ 122) 8596)
((G-\?) 191)
((`) 96)
((~) 126)
((G-`) 715)
((G-` 32) 768)
((G-` 65) 192)
((G-` 69) 200)
((G-` 73) 204)
((G-` 78) 504)
((G-` 79) 210)
((G-` 85) 217)
((G-` 87) 7808)
((G-` 89) 7922)
((G-` 97) 224)
((G-` 101) 232)
((G-` 105) 236)
((G-` 110) 505)
((G-` 111) 242)
((G-` 117) 249)
((G-` 119) 7809)
((G-` 121) 7923)
((G-~) 732)
((G-~ 32) 771)
((G-~ 65) 195)
((G-~ 69) 7868)
((G-~ 73) 296)
((G-~ 78) 209)
((G-~ 79) 213)
((G-~ 85) 360)
((G-~ 86) 7804)
((G-~ 89) 7928)
((G-~ 97) 227)
((G-~ 101) 7869)
((G-~ 105) 297)
((G-~ 110) 241)
((G-~ 111) 245)
((G-~ 117) 361)
((G-~ 118) 7805)
((G-~ 121) 7929)
(([) 91)
(({) 123)
((C-[) 27)
((G-[) 731)
((G-[ 32) 808)
((G-[ 65) 260)
((G-[ 69) 280)
((G-[ 73) 302)
((G-[ 79) 490)
((G-[ 85) 370)
((G-[ 97) 261)
((G-[ 101) 281)
((G-[ 105) 303)
((G-[ 111) 491)
((G-[ 117) 371)
((G-{) 734)
((G-{ 66) 385)
((G-{ 68) 393)
((G-{ 70) 401)
((G-{ 75) 408)
((G-{ 78) 413)
((G-{ 84) 428)
((G-{ 86) 434)
((G-{ 89) 435)
((G-{ 98) 595)
((G-{ 100) 598)
((G-{ 102) 402)
((G-{ 107) 409)
((G-{ 110) 626)
((G-{ 116) 429)
((G-{ 118) 651)
((G-{ 121) 436)
((G-{ 222) 430)
((G-{ 254) 648)
((G-{ 395) 394)
((G-{ 396) 599)
((]) 92)
((}) 124)
((C-]) 28)
((G-]) 821)
((G-] 32) 821)
((G-] 65) 570)
((G-] 66) 579)
((G-] 67) 571)
((G-] 68) 208)
((G-] 69) 582)
((G-] 71) 484)
((G-] 72) 294)
((G-] 73) 407)
((G-] 74) 584)
((G-] 75) 42816)
((G-] 76) 321)
((G-] 79) 216)
((G-] 80) 11363)
((G-] 81) 42838)
((G-] 82) 588)
((G-] 84) 358)
((G-] 85) 580)
((G-] 89) 590)
((G-] 90) 437)
((G-] 92) 823)
((G-] 97) 11365)
((G-] 98) 384)
((G-] 99) 572)
((G-] 100) 240)
((G-] 101) 583)
((G-] 103) 485)
((G-] 104) 295)
((G-] 105) 616)
((G-] 106) 585)
((G-] 107) 42817)
((G-] 108) 322)
((G-] 111) 248)
((G-] 112) 7549)
((G-] 113) 42839)
((G-] 114) 589)
((G-] 116) 359)
((G-] 117) 649)
((G-] 121) 591)
((G-] 122) 438)
((G-] 222) 42852)
((G-] 254) 42853)
((G-] 955) 411)
((G-}) 822)
((G-} 32) 822)
((G-} 68) 272)
((G-} 76) 573)
((G-} 79) 415)
((G-} 80) 42832)
((G-} 92) 824)
((G-} 100) 273)
((G-} 106) 607)
((G-} 108) 410)
((G-} 111) 629)
((G-} 112) 42833)
((G-} 222) 42854)
((G-} 254) 42855)
((\\) 93)
((|) 125)
((C-\\) 29)
((G-\\) 61)
((G-\\ 33) 8252)
((G-\\ 35) 8713)
((G-\\ 37) 8859)
((G-\\ 38) 8853)
((G-\\ 40) 10631)
((G-\\ 41) 10632)
((G-\\ 42) 9733)
((G-\\ 43) 10746)
((G-\\ 46) 8728)
((G-\\ 47) 8800)
((G-\\ 56) 8258)
((G-\\ 58) 8759)
((G-\\ 60) 8805)
((G-\\ 61) 8801)
((G-\\ 62) 8804)
((G-\\ 63) 8802)
((G-\\ 65) 8704)
((G-\\ 69) 8712)
((G-\\ 73) 8745)
((G-\\ 85) 8746)
((G-\\ 91) 10214)
((G-\\ 92) 8726)
((G-\\ 93) 10215)
((G-\\ 94) 8743)
((G-\\ 95) 10747)
((G-\\ 98) 8869)
((G-\\ 101) 949)
((G-\\ 105) 8920)
((G-\\ 107) 8810)
((G-\\ 108) 8811)
((G-\\ 110) 8709)
((G-\\ 111) 8921)
((G-\\ 118) 8744)
((G-\\ 120) 8901)
((G-\\ 123) 8838)
((G-\\ 124) 10996)
((G-\\ 125) 8839)
((G-\\ 126) 172)
((') 39)
((") 34)
((G-') 714)
((G-' 32) 769)
((G-' 40) 8216)
((G-' 41) 8217)
((G-' 44) 8218)
((G-' 46) 8219)
((G-' 60) 8249)
((G-' 62) 8250)
((G-' 65) 193)
((G-' 67) 262)
((G-' 69) 201)
((G-' 71) 500)
((G-' 73) 205)
((G-' 75) 7728)
((G-' 76) 313)
((G-' 77) 7742)
((G-' 78) 323)
((G-' 79) 211)
((G-' 80) 7764)
((G-' 82) 340)
((G-' 83) 346)
((G-' 85) 218)
((G-' 87) 7810)
((G-' 89) 221)
((G-' 90) 377)
((G-' 97) 225)
((G-' 99) 263)
((G-' 101) 233)
((G-' 103) 501)
((G-' 105) 237)
((G-' 107) 7729)
((G-' 108) 314)
((G-' 109) 7743)
((G-' 110) 324)
((G-' 111) 243)
((G-' 112) 7765)
((G-' 114) 341)
((G-' 115) 347)
((G-' 117) 250)
((G-' 119) 7811)
((G-' 121) 253)
((G-' 122) 378)
((G-' 198) 508)
((G-' 216) 510)
((G-' 230) 509)
((G-' 248) 511)
((G-") 168)
((G-" 32) 776)
((G-" 40) 8220)
((G-" 41) 8221)
((G-" 44) 8222)
((G-" 46) 8223)
((G-" 60) 171)
((G-" 62) 187)
((G-" 65) 196)
((G-" 69) 203)
((G-" 72) 7718)
((G-" 73) 207)
((G-" 79) 214)
((G-" 85) 220)
((G-" 87) 7812)
((G-" 88) 7820)
((G-" 89) 376)
((G-" 97) 228)
((G-" 101) 235)
((G-" 104) 7719)
((G-" 105) 239)
((G-" 111) 246)
((G-" 116) 7831)
((G-" 117) 252)
((G-" 119) 7813)
((G-" 120) 7821)
((G-" 121) 255)
((|) 124)
((= Just) 61)
((+) 43)
((,) 44)
((<) 60)
((G-,) 806)
((G-, 32) 806)
((G-, 83) 536)
((G-, 84) 538)
((G-, 115) 537)
((G-, 116) 539)
((G-<) 184)
((G-< 32) 807)
((G-< 67) 199)
((G-< 68) 7696)
((G-< 69) 552)
((G-< 71) 290)
((G-< 72) 7720)
((G-< 75) 310)
((G-< 76) 315)
((G-< 78) 325)
((G-< 82) 342)
((G-< 83) 350)
((G-< 84) 354)
((G-< 99) 231)
((G-< 100) 7697)
((G-< 101) 553)
((G-< 103) 291)
((G-< 104) 7721)
((G-< 107) 311)
((G-< 108) 316)
((G-< 110) 326)
((G-< 114) 343)
((G-< 115) 351)
((G-< 116) 355)
((G-< 184) 10216)
((-) 45)
((_) 95)
((G--) 713)
((G-- 32) 772)
((G-- 45) 8208)
((G-- 61) 8722)
((G-- 65) 256)
((G-- 69) 274)
((G-- 71) 7712)
((G-- 73) 298)
((G-- 79) 332)
((G-- 85) 362)
((G-- 89) 562)
((G-- 97) 257)
((G-- 101) 275)
((G-- 103) 7713)
((G-- 105) 299)
((G-- 109) 8212)
((G-- 110) 8211)
((G-- 111) 333)
((G-- 117) 363)
((G-- 121) 563)
((G-- 198) 482)
((G-- 230) 483)
((G-_) 717)
((G-_ 32) 817)
((G-_ 66) 7686)
((G-_ 68) 7694)
((G-_ 75) 7732)
((G-_ 76) 7738)
((G-_ 78) 7752)
((G-_ 82) 7774)
((G-_ 84) 7790)
((G-_ 90) 7828)
((G-_ 98) 7687)
((G-_ 100) 7695)
((G-_ 104) 7830)
((G-_ 107) 7733)
((G-_ 108) 7739)
((G-_ 110) 7753)
((G-_ 114) 7775)
((G-_ 116) 7791)
((G-_ 122) 7829)
((.) 46)
((>) 62)
((G-.) 803)
((G-. 32) 803)
((G-. 41) 8226)
((G-. 46) 8230)
((G-. 48) 176)
((G-. 65) 7840)
((G-. 66) 7684)
((G-. 68) 7692)
((G-. 69) 7864)
((G-. 72) 7716)
((G-. 73) 7882)
((G-. 75) 7730)
((G-. 76) 7734)
((G-. 77) 7746)
((G-. 78) 7750)
((G-. 79) 7884)
((G-. 82) 7770)
((G-. 83) 7778)
((G-. 84) 7788)
((G-. 85) 7908)
((G-. 86) 7806)
((G-. 87) 7816)
((G-. 89) 7924)
((G-. 90) 7826)
((G-. 97) 7841)
((G-. 98) 7685)
((G-. 100) 7693)
((G-. 101) 7865)
((G-. 104) 7717)
((G-. 105) 7883)
((G-. 107) 7731)
((G-. 108) 7735)
((G-. 109) 7747)
((G-. 110) 7751)
((G-. 111) 7885)
((G-. 114) 7771)
((G-. 115) 7779)
((G-. 116) 7789)
((G-. 117) 7909)
((G-. 118) 7807)
((G-. 119) 7817)
((G-. 121) 7925)
((G-. 122) 7827)
((G-. 124) 183)
((G->) 729)
((G-> 32) 775)
((G-> 65) 550)
((G-> 66) 7682)
((G-> 67) 266)
((G-> 68) 7690)
((G-> 69) 278)
((G-> 70) 7710)
((G-> 71) 288)
((G-> 72) 7714)
((G-> 73) 304)
((G-> 77) 7744)
((G-> 78) 7748)
((G-> 79) 558)
((G-> 80) 7766)
((G-> 82) 7768)
((G-> 83) 7776)
((G-> 84) 7786)
((G-> 87) 7814)
((G-> 88) 7818)
((G-> 89) 7822)
((G-> 90) 379)
((G-> 97) 551)
((G-> 98) 7683)
((G-> 99) 267)
((G-> 100) 7691)
((G-> 101) 279)
((G-> 102) 7711)
((G-> 103) 289)
((G-> 104) 7715)
((G-> 109) 7745)
((G-> 110) 7749)
((G-> 111) 559)
((G-> 112) 7767)
((G-> 114) 7769)
((G-> 115) 7777)
((G-> 116) 7787)
((G-> 119) 7815)
((G-> 120) 7819)
((G-> 121) 7823)
((G-> 122) 380)
((G-> 729) 10217)
((0) 48)
((\)) 41)
((G-0) 777)
((G-0 32) 777)
((G-0 65) 7842)
((G-0 69) 7866)
((G-0 73) 7880)
((G-0 79) 7886)
((G-0 85) 7910)
((G-0 89) 7926)
((G-0 97) 7843)
((G-0 101) 7867)
((G-0 105) 7881)
((G-0 111) 7887)
((G-0 117) 7911)
((G-0 121) 7927)
((G-\)) 795)
((G-\) 32) 795)
((G-\) 79) 416)
((G-\) 85) 431)
((G-\) 111) 417)
((G-\) 117) 432)
((1) 49)
((!) 33)
((G-1) 617)
((G-1 33) 406)
((G-1 35) 1047)
((G-1 36) 1063)
((G-1 37) 444)
((G-1 49) 617)
((G-1 50) 424)
((G-1 51) 1079)
((G-1 52) 1095)
((G-1 53) 445)
((G-1 54) 389)
((G-1 64) 423)
((G-1 94) 388)
((G-!) 161)
((2) 50)
((@) 64)
((G-2) 215)
((G-2 37) 8240)
((G-2 39) 8242)
((G-2 42) 215)
((G-2 43) 177)
((G-2 47) 247)
((G-2 48) 8709)
((G-2 49) 8242)
((G-2 50) 8243)
((G-2 51) 8244)
((G-2 79) 8709)
((G-2 113) 8730)
((G-2 115) 178)
((G-2 120) 215)
((G-@) 33)
((G-@ 33) 8253)
((G-@ 49) 8224)
((G-@ 50) 8225)
((G-@ 63) 8253)
((G-@ 78) 8470)
((3) 51)
((#) 35)
((G-3) 603)
((G-#) 400)
((4) 52)
(($) 36)
((G-4) 164)
((G-4 67) 162)
((G-4 99) 99)
((G-4 101) 8364)
((G-4 108) 163)
((G-4 111) 164)
((G-4 114) 8377)
((G-4 115) 8362)
((5) 53)
((%) 37)
((G-5) 711)
((G-5 32) 780)
((G-5 65) 461)
((G-5 67) 268)
((G-5 68) 270)
((G-5 69) 282)
((G-5 71) 486)
((G-5 72) 542)
((G-5 73) 463)
((G-5 75) 488)
((G-5 76) 317)
((G-5 78) 327)
((G-5 79) 465)
((G-5 82) 344)
((G-5 83) 352)
((G-5 84) 356)
((G-5 85) 467)
((G-5 90) 381)
((G-5 97) 462)
((G-5 99) 269)
((G-5 100) 271)
((G-5 101) 283)
((G-5 103) 487)
((G-5 104) 543)
((G-5 105) 464)
((G-5 106) 496)
((G-5 107) 489)
((G-5 108) 318)
((G-5 110) 328)
((G-5 111) 466)
((G-5 114) 345)
((G-5 115) 353)
((G-5 116) 357)
((G-5 117) 468)
((G-5 122) 382)
((G-5 439) 494)
((G-5 658) 495)
((6) 54)
((^) 94)
((G-6) 710)
((G-6 32) 770)
((G-6 65) 194)
((G-6 67) 264)
((G-6 69) 202)
((G-6 71) 284)
((G-6 72) 292)
((G-6 73) 206)
((G-6 74) 308)
((G-6 79) 212)
((G-6 83) 348)
((G-6 85) 219)
((G-6 87) 372)
((G-6 89) 374)
((G-6 90) 7824)
((G-6 97) 226)
((G-6 99) 265)
((G-6 101) 234)
((G-6 103) 285)
((G-6 104) 293)
((G-6 105) 238)
((G-6 106) 309)
((G-6 111) 244)
((G-6 115) 349)
((G-6 117) 251)
((G-6 119) 373)
((G-6 121) 375)
((G-6 122) 7825)
((7) 55)
((&) 38)
((G-7) 813)
((G-7 32) 813)
((G-7 68) 7698)
((G-7 69) 7704)
((G-7 76) 7740)
((G-7 78) 7754)
((G-7 84) 7792)
((G-7 85) 7798)
((G-7 100) 7699)
((G-7 101) 7705)
((G-7 108) 7741)
((G-7 110) 7755)
((G-7 116) 7793)
((G-7 117) 7799)
((8) 56)
((*) 42)
((G-8) 730)
((G-8 32) 778)
((G-8 65) 197)
((G-8 85) 366)
((G-8 97) 229)
((G-8 117) 367)
((G-8 119) 7832)
((G-8 121) 7833)
((9) 57)
((\() 40)
((G-9) 728)
((G-9 32) 774)
((G-9 65) 258)
((G-9 69) 276)
((G-9 71) 286)
((G-9 73) 300)
((G-9 79) 334)
((G-9 85) 364)
((G-9 97) 259)
((G-9 101) 277)
((G-9 103) 287)
((G-9 105) 301)
((G-9 111) 335)
((G-9 117) 365)
((\ ) 32)
((S-\ ) 32)
((C-\ ) 32)
((G-\ ) 32)
((G-\  32) 160)
((G-\  33) 8239)
((G-\  40) 8204)
((G-\  41) 8205)
((G-\  43) 8287)
((G-\  44) 8201)
((G-\  46) 8200)
((G-\  48) 8203)
((G-\  49) 8199)
((G-\  91) 9251)
((G-\  93) 9085)
((G-\  98) 8196)
((G-\  99) 8198)
((G-\  109) 8195)
((G-\  110) 8194)
((G-\  116) 9)
((G-\  118) 8197)
((G-\  124) 8202)
((a) 97)
((A) 65)
((G-a) 230)
((G-a 65) 11373)
((G-a 69) 198)
((G-a 97) 593)
((G-a 101) 230)
((G-A) 198)
((b) 98)
((B) 66)
((G-b) 42897)
((G-B) 42896)
((c) 99)
((C) 67)
((G-c) 42892)
((G-C) 42891)
((d) 100)
((D) 68)
((e) 101)
((E) 69)
((G-e) 601)
((G-E) 399)
((f) 102)
((F) 70)
((g) 103)
((G) 71)
((G-g) 611)
((G-G) 404)
((h) 104)
((H) 72)
((G-h) 42791)
((G-H) 42790)
((i) 105)
((I) 73)
((G-i) 305)
((j) 106)
((J) 74)
((G-j) 952)
((G-j 68) 916)
((G-j 70) 934)
((G-j 71) 915)
((G-j 76) 923)
((G-j 80) 928)
((G-j 83) 931)
((G-j 84) 920)
((G-j 97) 945)
((G-j 98) 946)
((G-j 100) 948)
((G-j 102) 966)
((G-j 103) 947)
((G-j 108) 955)
((G-j 109) 956)
((G-j 112) 960)
((G-j 114) 961)
((G-j 115) 963)
((G-j 116) 952)
((k) 107)
((K) 75)
((G-k) 596)
((G-K) 390)
((l) 108)
((L) 76)
((G-l) 396)
((G-l 34) 42788)
((G-l 35) 42794)
((G-l 36) 42796)
((G-l 37) 42798)
((G-l 39) 42789)
((G-l 51) 42795)
((G-l 52) 42797)
((G-l 53) 42799)
((G-l 65) 42786)
((G-l 66) 386)
((G-l 68) 395)
((G-l 71) 418)
((G-l 72) 7722)
((G-l 78) 544)
((G-l 79) 546)
((G-l 81) 586)
((G-l 86) 581)
((G-l 87) 503)
((G-l 89) 1068)
((G-l 90) 540)
((G-l 97) 42787)
((G-l 98) 387)
((G-l 100) 396)
((G-l 103) 419)
((G-l 104) 7723)
((G-l 107) 312)
((G-l 110) 414)
((G-l 111) 547)
((G-l 113) 587)
((G-l 118) 652)
((G-l 119) 447)
((G-l 121) 1100)
((G-l 122) 541)
((G-L) 395)
((m) 109)
((M) 77)
((G-m) 712)
((G-m 34) 782)
((G-m 39) 700)
((G-m 42) 856)
((G-m 44) 787)
((G-m 46) 788)
((G-m 60) 786)
((G-m 62) 789)
((G-m 92) 809)
((G-m 93) 712)
((G-m 96) 790)
((G-m 112) 697)
((G-m 124) 781)
((G-m 126) 791)
((n) 110)
((N) 78)
((G-n) 331)
((G-N) 330)
((o) 111)
((O) 79)
((G-o) 248)
((G-o 46) 9676)
((G-o 69) 338)
((G-o 79) 42830)
((G-o 85) 433)
((G-o 87) 42934)
((G-o 101) 339)
((G-o 111) 42831)
((G-o 117) 650)
((G-o 119) 42935)
((G-O) 216)
((p) 112)
((P) 80)
((G-p) 448)
((G-p 33) 451)
((G-p 47) 448)
((G-p 61) 450)
((G-p 64) 664)
((G-p 99) 448)
((G-p 113) 451)
((G-p 118) 450)
((G-p 120) 449)
((G-p 124) 448)
((G-P) 169)
((G-P 99) 169)
((G-P 112) 8471)
((G-P 114) 174)
((G-P 115) 8480)
((G-P 116) 8482)
((q) 113)
((Q) 81)
((G-q) 578)
((G-Q) 577)
((r) 114)
((R) 82)
((s) 115)
((S) 83)
((G-s) 223)
((G-s 72) 425)
((G-s 83) 7838)
((G-s 102) 383)
((G-s 104) 643)
((G-s 112) 182)
((G-s 115) 223)
((G-s 124) 167)
((t) 116)
((T) 84)
((G-t) 254)
((G-T) 222)
((u) 117)
((U) 85)
((G-u) 623)
((G-U) 412)
((v) 118)
((V) 86)
((G-v) 82)
((G-v 67) 8450)
((G-v 78) 8469)
((G-v 81) 8474)
((G-v 82) 8477)
((G-v 90) 8484)
((G-v 99) 8450)
((G-v 110) 8469)
((G-v 113) 8474)
((G-v 114) 8477)
((G-v 122) 8484)
((w) 119)
((W) 87)
((G-w) 695)
((G-w 43) 8314)
((G-w 45) 8315)
((G-w 48) 8304)
((G-w 49) 185)
((G-w 50) 178)
((G-w 51) 179)
((G-w 52) 8308)
((G-w 53) 8309)
((G-w 54) 8310)
((G-w 55) 8311)
((G-w 56) 8312)
((G-w 57) 8313)
((G-w 65) 7468)
((G-w 66) 7470)
((G-w 68) 7472)
((G-w 69) 7473)
((G-w 71) 7475)
((G-w 72) 7476)
((G-w 73) 7477)
((G-w 74) 7478)
((G-w 75) 7479)
((G-w 76) 7480)
((G-w 77) 7481)
((G-w 78) 7482)
((G-w 79) 7484)
((G-w 80) 7486)
((G-w 82) 7487)
((G-w 84) 7488)
((G-w 85) 7489)
((G-w 86) 11389)
((G-w 87) 7490)
((G-w 97) 7491)
((G-w 98) 7495)
((G-w 99) 7580)
((G-w 100) 7496)
((G-w 101) 7497)
((G-w 102) 7584)
((G-w 103) 7501)
((G-w 104) 688)
((G-w 105) 8305)
((G-w 106) 690)
((G-w 107) 7503)
((G-w 108) 737)
((G-w 109) 7504)
((G-w 110) 8319)
((G-w 111) 7506)
((G-w 112) 7510)
((G-w 114) 691)
((G-w 115) 738)
((G-w 116) 7511)
((G-w 117) 7512)
((G-w 118) 7515)
((G-w 119) 695)
((G-w 120) 739)
((G-w 121) 696)
((G-w 122) 7611)
((G-w 952) 7615)
((x) 120)
((X) 88)
((G-x) 660)
((G-X) 699)
((y) 121)
((Y) 89)
((G-y) 477)
((G-Y) 398)
((z) 122)
((Z) 90)
((G-z) 658)
((G-Z) 439)))
(state (init  (simple )))
And now that I’ve done this I can see an obvious error: the final line has two inits, should have one. I’d better fix that when I have a bit more time.
EDIT2: Fixed the error. The code above has been updated.
Is it public domain? I'd expect to see the licence or a reference to it in a file like this.
Yes, this is public domain. When it’s formally released it’ll be the same license as Conkey… which it looks like I forgot to put a license on. I’d better do that fairly quickly.
Can you not stamp it with a date or version?
I suppose I could just manually add a comment ; version 2.0.0 (or something similar) at the beginning.

Re: Conkey keyboard layout [v1.1.0 now out!]

Posted: Mon Dec 02, 2019 1:37 am
by bradrn
After fixing the errors mentioned in the edit to my previous post, the keyboard works! Sort of. For some reason, pressing backspace inserts ‘8’ instead of deleting the previous character (luckily shift-backspace works), and a couple of the dead keys don’t work. But the rest of it works!

EDIT: After testing every key, I have a more thorough list of problems:
  • The backspace key inserts an ‘8’ instead of deleting. Deletion can still be accomplished via Shift-Backspace.
  • The ‘]’ and ‘\’ keys appear to be switched.
  • The acute and diaeresis accents (keys G-' and G-") don’t work.
  • The G-SPC dead key (not in a released version yet) doesn’t work.
Everything else appears to work perfectly.

EDIT2: After looking through the generated file I now have some idea about the problems above. The switch of the ‘]’ and ‘\’ keys was just a typo in the code. I don’t know why G-SPC or the the quote keys aren’t working, although it could be a problem with escaping. As for the problems with the backspace key, I have absolutely no idea what is causing this or how to fix it. Any insights would be appreciated!

Re: Conkey keyboard layout [v1.1.0 now out!]

Posted: Mon Dec 02, 2019 9:18 am
by akam chinjir
I guess you've probably made this connection? But in case not, Backspace is ASCII 8. (Not that I know how that would explain your problem.)

Re: Conkey keyboard layout [v1.1.0 now out!]

Posted: Mon Dec 02, 2019 2:57 pm
by bradrn
akam chinjir wrote: Mon Dec 02, 2019 9:18 am I guess you've probably made this connection? But in case not, Backspace is ASCII 8. (Not that I know how that would explain your problem.)
Oh, interesting! I hadn’t made that connection (I don’t know my ASCII codes), so thanks for that! So I guess that what’s happening is that when I specify ((1) 49) ((2) 50) ((3) 51) …, that’s mapping the ASCII codes 1,2,3,… to the characters 1,2,3,…, and it’s just bad luck that ASCII code 8 happens to be present on the keyboard. I’ll have to see how other keyboards do this.

EDIT: Looking at the relevant documentation, it appears that the above is correct: 1 is interpreted as the character U+0001, rather than the letter ‘1’. It looks like this can be fixed by escaping to get \1, but I haven’t tested that yet. Thanks for helping me figure this out!