Add a "pass-through" input mode
Created by: bochecha
Users constantly request this, and I'm starting to understand why it is important.
We currently do some funky stuff with the shift
key:
- when a user press
a
, we interpret that as a key for a Cangjie code. But if the user pressesshift
+a
then we ignore it, and so we directly inputA
- the CAPS LOCK just reverses this behaviour (CAPS LOCK then
a
givesA
, CAPS LOCK thenshift
+a
is taken as a key for a Cangjie code)
I think we can all agree this is a pretty useless behaviour.
What I'd like to be able to do is
- let users type Latin letters directly (they are not interpreted as Cangjie code), uppercase as well as lowercase
- do that both in halfwidth and fullwidth modes
That's what other implementations of Cangjie (e.g on Microsoft Windows) usually associate to the shift
key: pressing shift
enables a pass-through mode, in which what you type is what you get.
However, I don't like using the shift
key for this. The reason is that there are two ways to use shift
:
- you can press it once shortly to enable/disable the pass-through mode,
- you press and hold it, while pressing another key (e.g
a
to getA
, or7
to get&
)
The interaction between these two points is a nightmare, I see two ways to get out of this:
- Forbid the second usage (press and hold to get uppercase for the keys you press while holding
shift
) In this scenario, you pressshift
to switch to the pass-through mode, what you type is lowercase, and you then get uppercase by usingCAPS LOCK
- Move the first usage to the
CAPS LOCK
key (pressCAPS LOCK
shortly to enable/disable the pass-through mode) In this scenario,shift
is always used the exact same way it is used in every other languages (press and hold to get uppercase).
What I wonder about the first option is what happens to things like *
or &
: you're supposed to press and hold shift
for these, CAPS LOCK
still gives you the number on the same key.
What I like about the second option (other than it doesn't have the problem just described above) is that it makes more sense conceptually: CAPS LOCK
always completely switches what you're typing (whether in English, French, all other languages, or what I'm proposing here), while shift
only changes what you input as long as you hold it down.
So all in all, I really prefer option 2, and I think that's what I'm going to implement.
Am I missing something?