
The ‘here is’ key - davecheney
https://dave.cheney.net/2017/08/21/the-here-is-key
======
kps
Not mentioned in the article is that ENQ is a standard ASCII character (0x05,
and previously abbreviated WRU for “Who are you?”) that causes the device on
the other end of the line to send back its answerback message.

On electromechanical teletypes¹ the answerback message was ‘programmed’ by
breaking off tabs from a rotating drum, like an inverse music box.

¹
[https://en.wikipedia.org/wiki/Teletype_Model_33](https://en.wikipedia.org/wiki/Teletype_Model_33)

~~~
dmix
I was curious how it worked and I found a picture of the answerback 'drum'
where you break off tabs (lower left):

[http://www.pdp8.net/asr33/pics/main_back.shtml](http://www.pdp8.net/asr33/pics/main_back.shtml)

> In the lower left is the answer back drum. By breaking off the little tabs
> where you program a 20 character sequence that the teletype can send when
> the "HERE IS" key is pressed or if enabled when the WRU (ENQ, ascii 5)
> character is received.

It seems you actually break off the tabs, it's not just a repeatable
customizable configuration.

~~~
Animats
Breaking off the tabs is permanent on the low end Teletype Model 33, although
you could get a new blank wheel. The high end Model 28 (5-bit) and Model 35
(8-bit) had a set of removable tines you could replace one character at a
time.[1]

It's a reminder of how painfully hard it was to store data, even in read-only
form, prior to the 1970s.

[1] [https://youtu.be/0A1a9rW_XRs?t=315](https://youtu.be/0A1a9rW_XRs?t=315)

------
wodenokoto
It is kinda funny that Apple didn't do anything about Caps Lock when they
redesigned their keyboard with the touch bar.

I cannot imagine professionals or casual users who would need quick access to
turning caps lock on and off. When you need caps lock over shift, it is
because you are planning to write a lot of all cap text, and so, taking a
second to turn it on via the touch bar seems okay. It is prime to be relegated
to the touch-bar, while plenty of professionals use ESC all the time while
touch-typing.

While they were at it, the switch window `command+~` short cut is almost
unreachable on non-us like keyboard layouts.

If they were gonna break professional users keyboard workflow, why not fix
some of the more glaring mistakes in current keyboard layout while they were
at it?

~~~
Jakob
> Apple didn't do anything about Caps Lock

They did. Under System Preferences > Keyboard > Modifier Keys… you can now map
Caps Lock to Escape which you couldn’t before. It’s just not activated by
default.

> the switch window `command+~` short cut is almost unreachable

Change it under System Preferences > Keyboard > Shortcuts > Keyboard: Move
focus to next window

~~~
wodenokoto
Defaults are a very powerful thing.

Particularly with the caps-lock key I don't see why it takes up so much real
estate.

> Change it under System Preferences > Keyboard > Shortcuts > Keyboard: Move
> focus to next window

It is not like Apple doesn't know my locale. Why isn't it set up for easy use
on it?

On the other hand, I do wonder what went into designing local keyboard
variants. Many are quite hostile towards common programming characters, to the
point where I actually use a US keyboard, despite it missing 3 letters from my
native language's alphabet!

~~~
mitchty
> Particularly with the caps-lock key I don't see why it takes up so much real
> estate.

History, removing it outright would likely have caused more consternation than
the escape key change.

Blame this one on defaults all you want, but keyboards actually have defined
layouts for keys, the touchbar is probably the best way of easing into
changing that. But you can't boil the ocean and all that.

> On the other hand, I do wonder what went into designing local keyboard
> variants. Many are quite hostile towards common programming characters, to
> the point where I actually use a US keyboard, despite it missing 3 letters
> from my native language's alphabet!

Also history, in the English case, the keyboard variants were designed will
before computers and programming languages. Starting in 1870 for most
typewriters in English, and moving from there. I highly doubt any design went
into any local variants and computer programming simplicity.

------
scott_o
It sounds like this was an automatic thing, the host could query the terminal
and would get a response without any user input.

So that still leaves me with the question of why the key exists?

What use cases would you have for voluntarily sending the host your
"identification"? Was this used for authentication?

~~~
Animats
It's for Telex service. You dialed up another Teletype machine to send a
message to it. At startup, the other end was interrogated to print its answer-
back on both Teletypes, to confirm that you'd reached the right destination.
Then you could type to the other end, or send a paper tape and have it print
or punch at the other end.

------
samlittlewood
I seem to remember that being used as an attack vector at college: Identify a
terminal that was logged on as root (albeit physically inaccessible), then
find a way of getting message to it, then send a string that programmed
answerback and then triggered it. Usual payload was moving your 'special'
version of a common suid program into place, possibly along with a tweaked
version of 'sum'.

This started with 'write' etc. but became an escalating arms-race.

~~~
kpcyrd
Do you happen to know if this is still supported in eg. xterm?

~~~
samlittlewood
It certainly supports sending answerback:

[http://invisible-
island.net/xterm/manpage/xterm.html#VT100-W...](http://invisible-
island.net/xterm/manpage/xterm.html#VT100-Widget-Resources:answerbackString).

But IIRC, we had some (non-DEC?) terminals that 'helpfully' allowed remote
programming of the answerback as well. I recall there was also a race to find
other ways to get terminals to reflect content (send line, forms etc.).

------
binarycrusader
A colleague had this to say:

 _I remember a spate of answerback hacks with vt100s. the remote host could
program the message by sending an escape sequence, and then get the vt100 to
type the string back. you could make the tty execute commands that would give
the attacker privs, and stuff like that. The main fix was hardening mail
clients to filter escape sequences; simpler days to be sure, but the basic
flaw (non-filtered text) still occurs in html forms_

------
kazinator
I noticed there are some commonalities between this keyboard and the Japanese
layout on PC keyboards.

For instance, note the co-location of * and : characters on the same key. It's
not in the same place on the Japanese layout, but the co-location is the same.

Another shared feature between the two is the co-location of the = and -
(equals and dash).

Next, the tilde in the general same area on the Japanese layout as on this
terminal, close to the Return key.

Lastly, the correlation between the numeric row keys and their Shift glyphs is
almost the same on the Japanse layout and this terminal!

    
    
               1 2 3 4 5 6 7 8 9 0
       JPN-PC: ! " # $ % & ' ( ) <blank>  __ same!
       ADM-DA: ! " # $ % & ' ( ) <blank>
       US-101: ! @ # $ % ^ & * ( )
    

There may be other similarities; this is just what I noticed at a glance.

~~~
kps
ASCII:

    
    
      0x2n:  <blank>  ! " # $ % & ' ( )  * +  , - . /
      0x3n:        0  1 2 3 4 5 6 7 8 9  : ;  < = > ?
    

Look familiar? This is called a bit-paired keyboard¹ — every pair (or triple,
in the case of control characters) of characters on a key differ in encoding
by flipping one bit, which is relatively easy to do in hardware. The ADM-3A
had no processor.

¹ [https://en.wikipedia.org/wiki/Bit-
paired_keyboard](https://en.wikipedia.org/wiki/Bit-paired_keyboard)

------
gpvos
Many VTxx emulators still have this answerback function. Look in the PuTTY
configuration under Terminal, "Answerback to ^E" (^E = ENQ).

------
ChuckMcM
And, if you were sneaky you could find out where someone was chatting to by
sending the answer back see and if you didn't like the computer center system
programmer you could send a wall(1) with it and crash the Gandalf terminal
server.

------
work_account
But what does the RUB key do?

~~~
mmphosis
_RUB. When the RUB (rubout) key is typed while holding down the SHIFT key, a
non-displayable rubout code (ASCII DEL) is transmitted to the computer. The
cursor is not advanced and the character code stored in display memory is not
overwritten. RUB is normally used to tell the computer that a previous
character should be deleted._
[https://amaus.net/static/S100/learSiegler/terminal/Lear%20Si...](https://amaus.net/static/S100/learSiegler/terminal/Lear%20Siegler%20ADM3A%20operators%20manual.pdf)

