Back in my BBS days I would use ALT+255 to create a <null> blank character.
Windows couldn't display it, but the FTP programs I used could.
That made it fun/easy to "hide" an FTP server dump location on a windows server.
The windows admin could see that the drive was filling up but not which directory was the cause.
Linux could see it. And so could my FTP client. (Enter fond memories of using FXP here too)
For multiple layers of chaos I might create multiple "blank" directories but only store the 'real' files multiple layers deep. For added "legitimacy" I might include the contents of \system or \print or something. I can't remember exactly.
We used the Alt+255 trick in my high school computer lab (windows 3.1) to hide games like Doom and Descent. It worked great because for some reason, if I recall correctly, the `dir /s` command would not traverse into directories with that name, so recursive directory searches for "DOOM.EXE" would turn up nothing. Also, folders with that name wouldn't appear in Windows.
To break out of the managed environment, someone figured out they could hit Ctrl+Break at the text-mode login screen - this would drop you to a DOS prompt. But the lab admin got wise to that and blocked that key combination.
I figured out a workaround: Alt+3. It would send an ASCII code that the input would interpret identically to Ctrl+Break, and we were back in business :-)
I'm somewhat skeptical about folders not appearing, the Alt+255 character is just a non-breaking space, and should display as such: the name will appear to be blank, but with a clickable folder icon.
However, I can confirm that DIR /S doesn't enter directories starting with that character - TIL!
From reading the source code[1], this happens because it requires the name to be alphabetically below something called the "temp name", which is initialized to start with this character.
What the code seems to be doing is selection sort, finding the first (alphabetically lowest) subdirectory that hasn't been entered yet, by reading the entire directory each time and comparing all the names. Not very efficient, but excusable if it saved some memory.
As far as I remember (I also used the Alt+255 trick at the high school to hide stuff), Windows 3.1 could not open folders containing the blank 255 character, which was displayed as an underscore for some reason, and not properly translated to the windows code point for the same character (160). So it was not possible to open those folders, although they were visible in the File manager.
I'd rather suspect the Windows API behind for this behavior, rather than the file manager itself. Apparently there might be leaked Windows 3.1 source code (but not all of it): https://www.betaarchive.com/forum/viewtopic.php?t=41781 (only comments here, didn't check further to see if/where this can be downloaded), but not sure if the relevant source is visible there. Windows 3.1 doesn't seem to use the same conversion as for Alt+XXX to read file names (which are stored in the OEM charset on the disk, e.g. code page 437), as typing Alt+255 enters a normal space (not event a non-breaking one).
You are right, it's likely to be the conversion from OEM to ANSI. In that case, NT wouldn't have the same bug, since it uses Unicode internally (and the tables translate OEM character 255 to U+00A0).
Quickly had a look in the KERNEL31 source. The LDOPEN.ASM file contains calls to a routine called MyOemToAnsi, which does the character set conversion. In turn, that function either calls the actual conversion routine in the keyboard driver, or does nothing if there's no keyboard driver yet (boot phase). Didn't find the keyboard driver part, probably not part of the actual kernel so it makes sense that it's not there. Anyone knows where to find one?
Great question, what would happen if NT sees a FAT filesystem (therefore with 8.3 names stored in OEM charset) with a filename containing a Alt+255 (0xFF) character? Anybody with a ready VM around to test this?
When I first got on the 'Net in '94 I joined a pirate group and my job was to find open writeable folders on FTP sites and then try to make the most obscure invisible folder names containing null chars, ^H, and other control codes so that they were practically impossible to get into with the tools available at the time if you didn't know the string.
Oh we had stuff for the linux sysadmins too. ^H was easy mode, throw in some VT control codes in there and you had a dir that NOBODY could navigate to without the code.
Fond memories of having a handy cheatsheet printed out for doing homework and chatting on MSN Messenger, until of course I memorized them (or maybe I printed it for the benefit of others).
It was always odd to me that é was out of sequence:
Alt+160 => á
Alt+130 => é
Alt+161 => í
Alt+162 => ó
Alt+163 => ú
Alt+164 => ñ
Alt+165 => Ñ
Most people with US keyboards had no idea how to type ñ/Ñ, the most important out of the bunch.
opt-n <char> for ñõã mark
opt-e <char> for éíóú mark
opt-i <char> for îûôê mark
opt-u <char> for üöïë mark
Add a shift to capitalize it.
I have an AutoHotkey script to get this on Windows since it's so second-nature by now.
Fwiw I don't think ñ is any more important than the other accents, even in Spanish. Unless we're talking about año vs ano. That might be why it has a dedicated key.
> It was always odd to me that é was out of sequence
Maybe it has something to do with the fact that it is the only one of those that is found in French, which may have been supported earlier than Spanish. I'd look at ç, è, à for further evidence.
I learned about the Alt characters a long time ago when I wanted to type “Pokémon” in the gamefaqs message boards. I never knew until now why higher numbers didn’t do anything different.
Fun fact: On a DOS PC, typing these codes was possible even on a keyboard without a number pad, by using the cursor keys instead. This works because those keys produce the same scan codes (with the only difference being either the presence or absence of some prefix byte, depending on the NumLock state).
0 = Ins, 1 = End, 2 = Down, 3 = PgDn, 4 = Left, 6 = Right, 7 = Home, 8 = Up, 9 = PgUp (and by exploiting the mod 256 parsing, it should always be possible to find a code that doesn't contain the digit 5)
Don't know if Windows emulates this, probably not. I wouldn't be surprised though if some part of the Windows keyboard driver translates the (different) scancodes sent by an USB keyboard into the legacy ones, just like the Alt+number handling does expect codepage 437 when there is no leading zero :)
Some might say that this kind of "cruft" is what makes Windows a horrible OS - but IMHO it's really cool to find such backwards compatibility, and sad when it goes away for no good reason, to be replaced with entirely new cruft that logs everything you do on your "Personal" Computer and sends it to some cloud service...
It would be great to make this feature relevant again but use decimal unicode codes, and have it work in linux too this way; it can be really useful now and then (as an alternative to looking up the unicode character on the internet and copypasting it)
I remember using this back in the day for ALT+0160 to type non breaking space, which could do funny things in forums and chat programs like MSN and ICQ
I think urxvt has this feature, but it's also available via the Universal Input Method System in many widget sets and it is supported by both Gtk and Qt (might need some additional packages to be installed/setup). So I can just type the symbol in hexadecimal with Ctrl+Shift+U 2 6 0 3 Enter to enter .
I used to remember the unicode symbol for long dash—but now that I use EUR keymap I don't need to, and I've forgotten it :).
Compose is nicely user-extensible (~/.XCompose) for those with domain-specific needs; it's one of the few workstation-era holdovers that DesktopLinux™ hasn't ruined yet.
That's easier if you don't know the keybinds, but the faster way is using the Option key to type the accented letter in 2 parts. You first press Option along with one of: `, e, u, i, n. And then just press the letter you want to apply the corresponding accent to.
On the rare occasions I need one of them, it's rarely one of the common ones. I work with a lot of music scores with lots of weird French and Germany characters that are a little more involved.
On the Mac, it's quite easy to have customized keyboard layouts to make it easy to type characters you use frequently. If you want to have Option-f and Option-p to give you 𝆑 and 𝆏, you can. https://software.sil.org/ukelele/ is a nice GUI that lets you start from your current preferred layout and make changes.
I made my own cross-platform keyboard layout for this: https://github.com/bradrn/Conkey. The compose key is nice, but especially on Windows, I find that an actual keyboard layout gives a better experience.
♥ I love the Compose key ♥ and use it all the time.
I wish it had interactive dialog box for better discoverability of compose sequences, showing you a list of possible alternatives based on the characters you have already typed.
I used to use compose key a long time ago (indeed some keyboards had an actual "compose" key), but then it just seems that I so rarely need to use the many characters available through it, that plain Gnome search for the unicode character name (that sticks the character to the keyboard) serves me fine.
Besides, there's no compose sequence for snowman, is there?
or whatever it is you want, where "" contains a snowman that HN strips. (Depending on your system, you may then need an `ibus restart` or some such thing to have your change picked up.)
Is decimal really that important? Hitting ctrl+u <codepoint in hexadecimal> Enter has worked on every desktop linux machine I've tried it on. e.g. U+A0 instead of ALT+0160 for no-break space.
U+fdfd is probably the character I use it with the most.
> For example, you could enter ñ by holding Alt and typing Numpad1 Numpad6 Numpad4, then releasing the Alt key.
To this day, this remains the best way to insert the character, I have tried the PowerToys Quick Accent [1] but I had so many missed characters when typing fast.
On many Euro keyboards it's just ~n, as ~ is a dead (modifier) key. But on Windows I do miss the way on macOS and iOS you get access to variants of a basic letter by pressing and holding the respective key.
I use WinCompose, which is a Windows implementation of an XCompose style compose key. It comes with a number of composition sequences but you can also add your own. I have mapped it to the "menu" key which I never use so "ñ" is <Menu>,<~>,<n> or <Menu>,<n>,<~> (both work by default).
For acute/grave accents I have a dead acute/grave key on my keyboard and because it's a German layout I already have the umlauts as separate keys. For "ë" and such I can compose the letter with <"> to get the diacritic version.
I wonder why they made this work only on the numpad?
Are these sequences available on laptop keyboards or some of the smaller keyboards that have no numpad? I’m working on a Lenovo Trackpoint II keyboard and alt-0176 should create the degrees sign but I can’t figure out how to do it.
Some laptops have (had?) ways of entering numpad keystrokes using Fn+something (usually some letters), but I dind't see that in many years. I guess they used that because Alt+ normal numbers can be used as a hotkey in normal software (not sure what DOS software was using as keyboard shortcuts when they introduced this back in old BIOeSs...)
When we were learning typing in high school, some of the geekier kids were using alt-224, etc to selectively replace some English chars with Greek ones. The not-so-techy teacher were scratching her head on how we were typing in Greek.
Ah, is this one of the reasons Windows users are so attached to full-sized keyboards with numpads? In any discussion of TKL-or-smaller keyboards, there’s a cohort of people baffled at how any keyboard without a numpad could be fit for purpose. I take it this Windows feature is among the reasons why.
I doubt it; you can insert unicode symbols with Win-. now, so the alt keys aren't as important.
Personally I used to see coworkers with 65 or 60% mechanical keyboard and I have no clue how they could code without arrow, home, or page up/down keys. They must have been really committed to vim keys or something.
Fun fact about Win-. (the emoji keyboard): this is an Input Method Editor, something formerly used by writers of ideographic languages for example, so now we all have no excuse not to test our Win32 code for IME support.
There's a significant contingent of people who find typing numbers with the number row cumbersome (me included). If, for whatever reason, you need to type a lot of numbers, it can be quite inconvenient to not have a numpad.
It always looks stupid to me when I see those people typing their password and it has numbers in it.
Switching their hands between the alphabet and number keys, sometimes multiple times, with bonus points for not knowing the numlock status and having to do it all over again.
With the amount of time all of us spend on keyboards, it just seems lazy/inefficient to not learn to touchtype, including the numbers and at least the common symbols.
Same. When my mostly beloved Microsoft Natural got too mushy and wobbly to tolerate anymore, I replaced it with a TKL which I tolerate but don't love. If I had it to do over again I'd get a full sized.
I ran one of their full sizes for years. The Topre is easily my favorite switch, but I got tired of the cost, the very limited board selection, the non-repairability, and the total lack of customization. I've got some nice boutique switches in this that are pretty light, like 40g, so it's pretty close to that feel.. I forget the exact switch offhand, but it was some limited run/special edition Kailh Box or something like that.
The windows admin could see that the drive was filling up but not which directory was the cause.
Linux could see it. And so could my FTP client. (Enter fond memories of using FXP here too)
For multiple layers of chaos I might create multiple "blank" directories but only store the 'real' files multiple layers deep. For added "legitimacy" I might include the contents of \system or \print or something. I can't remember exactly.