[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: dpkg-reconfigure keyboard-configuration (Swedish with "|")



Den 2019-05-10 kl. 18:21, skrev David Wright:
On Fri 10 May 2019 at 15:45:34 (+0200), Erik Josefsson wrote:

https://www.iso.org/standard/57852.html

If it was compliant, then I guess that would make an informed choice
of "Keyboard model" easier than it is now.



The only rule I know is that claiming compliance with standards can
cost serious money.


Thanks for that insight and explanation!


And there's my major hick-up: 7 keys would be plenty if the output
would suffice to consist of about 100 different signals since 2^7=128
(to later map on characters, numbers and whatnot). 8 keys would be
excessive. I do understand the historical reasons for 105 keys (or
80), but how they relate to what really matters (the digital output)
is a mystery.
I don't think that these shifty keys are treated in such a logical
manner. I've always assumed that there's a keyboard controller chip
that's stamping "personality" on the keys, particularly Fn.


Indeed there is a keyboard controller chip that "takes care of all keyboard matrix scanning, key de-bouncing and communications with the computer, and has an internal buffer if the keystroke data cannot be sent immediately. The PC motherboard decodes the data received from the keyboard via the PS/2 port using interrupt IRQ1".

More from same source: "If, for example, you press 'shift' and 'A' then both keys will generate their own scan codes, the 'A' scan code value is not changed if a shift or control key is also pressed. Pressing the letter 'A' generates 'lC'h make code and when released the break code is 'F0'h, 'lC'h.
Pressing 'shift' and 'A' keys will generate the following scan codes:
The make code for the 'shift' key is sent '12'h.
The make code for the 'A' key is sent 'lC'h.
The break code for the 'A' key is sent 'F0'h, 'lC'h.
The break code for the 'shift' key is sent 'F0'h,' 12'h.
If the right shift was pressed then the make code is '59'h and break code is 'F0'h, '59'h. By analysing these scan codes the PC software can determine which key was pressed. By looking at the shift keystroke the software can distinguish between upper and lower case."

source: https://www.isy.liu.se/edu/kurs/TSTE12/laboration/TSTE12_Lab1_170824.pdf

Thanks for the hints leading me to that page.


It cannot really be physicality of the "Keyboard models", nor the
(brand) names of the them, but rather the digital output that is
defining whether one "Keyboard model" is different from the other. Or
am I completely wrong here?

If I am not wrong, the next question is if there are really 193
different keyboard models in that sense?

I mean, with the same keyboard layout (e.g. Finnish), how many of the
193 would give the exact same result on screen with one particular
keyboard (e.g. the Teres laptop)?

I guess more than two (which I now know is the case).
My own take: to be on that list, someone maintaining X has to obtain a
model of that keyboard to map out all the keys. By the time that's
been done, time has past and you likely will find that that model is
history as far as shopping is concerned. Unlike with kernel
development, there's not the pressure to keep up with new models as
they come out. Pruning the list of its older models is not a
priority either.


Unfortunately that makes perfect sense.



I guess that with only 80 keys on your keyboard, many of the
differences between these different models are dealing with keys you
simply don't have. I can use pc105 for all my laptop, however many
keys they have.
As far as I can see, the "source code" to Teres' keyboard does not say
anything about that, but the Schematics file lists 25 different keys
(KBD_X0 to KBD_X16 and KBD_Y0 to KBD_Y7), and there is a micro
controller ATMEGA16U4-AU.

https://github.com/OLIMEX/DIY-LAPTOP/blob/master/HARDWARE/A64-TERES/TERES-PCB5-KEYBOARD/Rev.A/TERES-PCB5-KEYBOARD_Rev.A.sch

I'm fine with thinking that KBD_X0, KBD_X1 etc on the "inside" are
connected to the 40 physical keys on the "outside". Actually with 23
electronic keys to combine, it would be enough with an unique output
per electronic key plus <Shift>, <AltGr> and <Shift>+<AltGr> to get 92
different combinations. That should be enough, no?
Enough for what? I'm not sure what you mean. But as far as your use of
the keyboard is concerned, the keypresses have been through the
microprocessor, the kernel, and perhaps the xorg driver, so you're
not going to see any one-to-one mapping.


Sorry for writing out loud, I'm not sure what I was thinking. But anyway, it should be possible to write a program that listens to keypresses and asks you to press different keys like the "left-of-z key" and then suggest to you which "Keyboard model" you actually have, regardless which "Keyboard model" you have chosen with dpkg-reconfigure. Then no pruning of the list would be necessary.

(I mean something like "people who have ¦ left of Z often also have Å to the right of P", maybe you'd like a 105 Intl. model?", it doesn't have to be exactly right)



What's more important is the layout: for example a British layout
puts \| left of z, whereas a US one will make that key <> and the
\| will be 3 keys right of p. In response to that, and deleting
£, many of the other punctuation characters get shuffled around.

The "key that's missing" usually refers to that left-of-z key,
(i) because the fact that it's the only punctuation character
thereabouts makes it rather obvious that it's missing, (ii) small
US keyboards don't have it whereas British (and I assume many
European) ones usually do.

You mentioned your Scandinavian USB keyboard with it's "broken bar"
in that left-of-z position. The "broken" appearance has been a
traditional engraving on the pipe keycap for years and doesn't
have any particular significance significance: the key produces
pipe when typed normally (ie shifted).

I don't know how they decide which glyphs should be typed when
the AltGr key is used. Perhaps it's not too surprising that they
place ¦ on the | key as a mnemonic. To what end, who knows? The
glyph is virtually useless. But what does your USB keyboard produce
when you type this key with just shift pressed?
The "missing left-of-z key" on my "scandinavian" USB-keyboard gives
"<" with no key pressed, ">" with <Shift>, "|" with <AltGr> and "¦"
with <AltGr>+<Shift>.
That suggests that the layout is more like a US than a British keyboard.

It is a 5 dollar cheapest possible off the shelf keyboard . It says
made in China and comes with spelling errors on the box. So it's
probably not even made in China.

But I have finally found that 102 and Finnish gives me the pipe with
<i>+<AltGr>+<Shift>. So all is fine, except for that I don't
understand why.
What, the USB keyboard?


No, the Teres keyboard.

My original problem was that I could not figure out how to get both Swedish and pipe "|" at all (which Jonas duly noted by removing "¦" from the original subject line). I thought the solution was to find the correct "Keyboard model" for Teres. It turned out that was impossible, the solution was to give up Swedish (which is quite counter intuitive) and choose Finnish instead, and to choose a "Keyboard model" that made no sense.


  Is that because you have some Scandinavian
characters to the right of p? (A US keyboard would be expected to have
three punctuation characters there: []\ shifting to {}|.)

I would have left it at that if it wasn't for my plan to introduce the
Teres laptop as a DIY project in school. And I would be very unhappy
with my answers to why I should choose 102 and Finnish if I was a
student of mine.
Teaching moments?
. How many keyboard and laptop models have been released in, say, the
   last two decades?
. Are review models of them all loaned to kernel and X developers in
   a timely fashion?
. Are there people employed to keep up with specifying keyboard
   models, and who pays them?

Answers to questions like that might alleviate their dismay.

That's before you get into what DIY is all about. DIY can mean just
carrying out final assembly of a set of components that's been
tailored for just that process. OTOH it can mean reengineering items
for uses they weren't designed for. And anything in between.


Thank you! I will remember what you say!



We're used to this with software: no one has the programs, scripts
etc that I have on this computer. None of my computers was designed
to run linux. None of my laptops has every Fn key (the coloured ones)
operable as per the engraving on it (the so-called hot keys). They
were designed for Windows and, as far as current versions are
concerned, the models are long obsolete.

Btw, I have found a recent bug report against the package
keyboard-configuration complaining about translation errors wrt
"Keyboard model" names, so I guess I could file a wish-list bug too:

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=924657
Sure, just don't hold your breath. It might be more profitable to
investigate how to redefine keys (VC and in X) to your liking.
Especially useful for alphabets having more than 26 letters.

For example, I append lines to /etc/console-setup/remap.inc to
do things like enhancing the navigation keys, and preventing
Alt-space from producing NO-BREAK SPACE (because it's too easy
to catch the Alt by mistake). Little things like that.
And in fvwm I have keys for audio control, taking screen shots,
capturing the screen as a movie, rotating the monitor with
xrandr, etc.

I don't think I will ever reach that level of sophistication, but it is very nice to hear that it is possible to make your computer do exactly what you want!

Thanks again David.

Best regards.

//Erik



Reply to: