Welcome!

By registering with us, you'll be able to discuss, share and private message with other members of our community.

SignUp Now!

Dead keys don't work in Windows Terminal (German keyboard)

Apr
25
2
When using TCC 36.52.81 in Windows Terminal (with a German keyboard), the dead/accent keys, like ^, always output a space after pressing the second key instead of creating an accented letter.
E.g. the key sequences ^<space> and ^e both output a single space character rather than ^ and ê, respectively. In older TCC releases and Windows CMD it works as expected.
Is there perhaps an option I’ve overlooked?
 
I was about to post asking if something like this was happening to anyone else.

I have 36.52.80 on two different computers, both running Windows 11 Pro, with the es-IB layout (which has many dead keys).

Running TCC.EXE directly, the dead keys (acute accent, diaeresis, etc.) in the base and Shift layers don't work (so I'll get "a" instead of "á", etc.), but AltGr-based dead keys and regular character assignments work. However, when running TCC within TCMD.EXE, even on a detached window, the dead keys in the base and Shift layers DO work and the AltGr-based dead keys do NOT work (the AltGr regular character assignments still work). None of this happens in other applications.

At first I thought this was some problem on my side, because one computer was behaving like this and the other worked normally, so I was trying to figure out the difference, but... after rebooting the second one, it also misbehaves in the same way.


For further testing, I've started up CMD.EXE in TCMD tabs.
  • TABS ⇒ Run... ⇒ CMD.exe , Start in a New Tab : all dead keys work.
  • TABS ⇒ Run... ⇒ CMD.exe , Start in ConPTY : NO dead keys work, in any of the four layers (base, Shift, AltGr, AltGr-Shift).

Besides all of that, while TCMD is running, it captures AltGr-D (but not AltGr-Shift-D), despite this being an actual regular key assignment.
 
Hi All - the same here.
Running on a German Windows 10 (latest update installed) with German keyboard layout.
TCC 36.5 standalone (classic console host) ignores German dead keys (^, `, ´). The same executable running inside Take Command (ConPTY) works correctly. Windows CMD and previous TCC 36.0 work as expected.
Same result when switching Take Command to English. copying a v36.0 tcc.exe into the current installation doesn't solve the problem neither.
 
Ok, but something must have changed after a certain iteration of TCC 36 because the dead keys worked correctly with the first releases (prior to 36.50 I think).
 
Hi Rex. Just an FYI. 36.52.82 started in trial mode and asked me for a key. My v36 key did not work. You probably know this... It also didn't seem to pick up my configs (aliases, library routines, functions, etc).

I do try to stay up with all of your builds so I can provide feedback.
 
Same here, the dead keys still don't work in Windows Terminal.
With TCC 36.01.55, which I have installed alongside the latest releases, they work as expected.
 
I reinstalled stand-alone TCC 35.00.21. It works normally.

I started a TCC 36 window (dead keys don't work); ran TCC 35 within it ⇒ dead keys do work.

1786185636140.webp
 
This is the same, after renaming away TCMD.INI and TCSTART.BTM (and alias.txt, for good measure). No difference:

1786186046196.webp


(base layer: áà ; Shift layer: äâ ; AltGr layer: ā ; AltGr-Shift layer: α)
 
Hi Rex. Just an FYI. 36.52.82 started in trial mode and asked me for a key. My v36 key did not work. You probably know this... It also didn't seem to pick up my configs (aliases, library routines, functions, etc).

Did you have the stand-alone TCC installed previously, with a key for TCC (not a TCMD key)?

Build 82 only had an experimental (but apparently non-working) fix for German dead keys. No reason for anyone else to install it.
 
Did you have the stand-alone TCC installed previously, with a key for TCC (not a TCMD key)?

Build 82 only had an experimental (but apparently non-working) fix for German dead keys. No reason for anyone else to install it.
I installed over my build 81. TCMD was installed and licensed. No biggie, I removed 82 and installed 81 and all is well. I just wanted to report it.
 
I don't know what "AltGr-based dead keys" are - can someone explain how to test that?
I think you need an AltGr (alternate Graphic) modifier key. And I think it's Right-Alt. I suppose Windows has to know what to do with it.
 
Google says this (I'm skeptical).

Windows: Go to Settings > Time & Language > Language & Region. Add or switch your keyboard layout to United States-International.
 
I tried again; things don't work out as expected.

Test input: áà-äâ-ȧā-ạα
(two characters per layer: base: áà ; Shift: äâ ; AltGr: ȧā ; AltGr-Shift: ạα )


Stand-alone TCC:
1786281249553.webp



TCC (.83), inside TCMD (.80), Start in ConPTY:
1786281365433.webp



TCC (.83), inside TCMD (.80), Start in a New Tab:
1786281488480.webp


The square blocks are a "I don't have this glyph in my font" non-issue. Copying and pasting the output lines to BabelPad confirms the overdot and underdot characters are read and passed around correctly.

1786282069706.webp




A "dead key" is any character assignment that waits for the next character to be input and then outputs something; this is used typically, but not exclusively, for diacritical signs: (acute accent dead key) + a ⇒ á ; (diaeresis dead key) + e ⇒ é ; (Greek letters dead key) + a ⇒ α ; etc.

Dead keys, just like regular keys, may be on any of the four layers ("levels", in the parlance of the hideous ISO 9995 standard) a user types text with: base ("unshifted"), Shift, AltGr, AltGr-Shift, each accessed with, respectively: no modifier keys, Shift, AltGr and AltGr+Shift.

The AltGr key is the right-side Alt ["RALT"] key (maddeningly, Windows still supports pressing LALT+LCTRL to get the same effect).

While the "plain" English (en-US) layout doesn't have any, and the most well-known international layouts only have a handful, almost always in the base and Shift layers, dead keys MAY be in any of the four layers. Some layouts use a lot: Spanish, Dutch, Swiss and several other western European layouts use five (for es-ES: acute and grave accents in the base layer, diaeresis and circumflex in the Shift layer, tilde in the AltGr layer), central European layouts have a full row in the AltGr layer, Finnish Multilingual has 19 dead keys in all four layers, etcetera. See A Visual Comparison of Different National Layouts on a Computer Keyboard. for a rather comprehensive description of "international" keyboard layouts, writen by a certain stroppy git.
 
Yup, same problem here too (not tested with test builds) on a swiss german keyboard with swiss german win layout). It does also NOT work in a non-Windows Terminal console.

Note that in TCMD it does also not work correctly but a bit different, (for ex.) instead a ~ AltGr+~ produces in ConPTY tab a ^ (which is on the same key), while there is nothing produced in other all other TCMD/TCC consoles.

It DOES work in an Eingabeaufforderung (Command Prompt, CMD)) in Windows Terminal.
 
I tried again; things don't work out as expected.

Test input: áà-äâ-ȧā-ạα
(two characters per layer: base: áà ; Shift: äâ ; AltGr: ȧā ; AltGr-Shift: ạα )


Stand-alone TCC:
View attachment 6200


TCC (.83), inside TCMD (.80), Start in ConPTY:
View attachment 6201


TCC (.83), inside TCMD (.80), Start in a New Tab:
View attachment 6202

The square blocks are a "I don't have this glyph in my font" non-issue. Copying and pasting the output lines to BabelPad confirms the overdot and underdot characters are read and passed around correctly.

View attachment 6204


A "dead key" is any character assignment that waits for the next character to be input and then outputs something; this is used typically, but not exclusively, for diacritical signs: (acute accent dead key) + a ⇒ á ; (diaeresis dead key) + e ⇒ é ; (Greek letters dead key) + a ⇒ α ; etc.

Dead keys, just like regular keys, may be on any of the four layers ("levels", in the parlance of the hideous ISO 9995 standard) a user types text with: base ("unshifted"), Shift, AltGr, AltGr-Shift, each accessed with, respectively: no modifier keys, Shift, AltGr and AltGr+Shift.

The AltGr key is the right-side Alt ["RALT"] key (maddeningly, Windows still supports pressing LALT+LCTRL to get the same effect).

While the "plain" English (en-US) layout doesn't have any, and the most well-known international layouts only have a handful, almost always in the base and Shift layers, dead keys MAY be in any of the four layers. Some layouts use a lot: Spanish, Dutch, Swiss and several other western European layouts use five (for es-ES: acute and grave accents in the base layer, diaeresis and circumflex in the Shift layer, tilde in the AltGr layer), central European layouts have a full row in the AltGr layer, Finnish Multilingual has 19 dead keys in all four layers, etcetera. See A Visual Comparison of Different National Layouts on a Computer Keyboard. for a rather comprehensive description of "international" keyboard layouts, writen by a certain stroppy git.

I have read your message 5 times, and I still don't have the slightest idea what you are saying.

You refer to your "test input" with no hint how you generated that test input.

Assume that I know absolutely nothing about dead keys, AltGr keys, layers of dead keys, etc. Because I don't.

What I need is a detailed description of the keyboard layout you're using, the environment you're testing in (basic console, WT, or TCMD), and exactly what keys you're pressing, in order, and what you get versus what you expected to get.
 
Yes, with these build almost all dead keys work on my German keyboard except the grave accent `. The latter still creates a space character.
Thank you very much for your efforts to resolve the issue.

That unfortunately doesn't mean anything to me. What key(s) are you pressing for the grave accent, and what do you get versus what you expect>
 
That unfortunately doesn't mean anything to me. What key(s) are you pressing for the grave accent, and what do you get versus what you expect>

The grave accent is the one you call the backquote.
 
Note also the following from ChatGPT…

A German or Swiss German keyboard is not just a US keyboard with a different Windows layout selected. The physical keyboard generates scan codes, and Windows then maps those through the selected keyboard layout. AltGr and dead keys require special layout-dependent processing: AltGr is a modifier state, while a dead key creates a pending keyboard state that must be combined with the following keystroke. Applications that handle keyboard input differently, such as TCC/Take Command, may therefore not process those dead-key sequences correctly. CMD does. Simply selecting a German layout on a US keyboard cannot make the complete input path identical to using the intended German/Swiss keyboard setup.
 
Note also the following from ChatGPT…

A German or Swiss German keyboard is not just a US keyboard with a different Windows layout selected. The physical keyboard generates scan codes, and Windows then maps those through the selected keyboard layout. AltGr and dead keys require special layout-dependent processing: AltGr is a modifier state, while a dead key creates a pending keyboard state that must be combined with the following keystroke. Applications that handle keyboard input differently, such as TCC/Take Command, may therefore not process those dead-key sequences correctly. CMD does. Simply selecting a German layout on a US keyboard cannot make the complete input path identical to using the intended German/Swiss keyboard setup.

Which still doesn't tell me anything about which keys are pressed in which combinations to get which results.
 
Back
Top