I've been sketching up a constructed script, and I've been drawing a computer keyboard to accompany it.

Now, I've drawn up keys equivalent to Ctrl and Alt, and a "OS Direct key" (equivalent to the meta or windows key, depending on OS. OS direct sends a key command directly to the OS and admin-privledged programs) but after I looked up the Esc symbol ⎋ and drew it in the corner, I paused for a second.

This world takes place on a separate planet. The culture is mostly the same, they mostly do things roughly the same way, I could best describe it as our world but with the cards shuffled. Why the hell would they do things the same as us?

Having a sorta "back" character on left and a "proceed" (enter/submit) character on right certainly makes sense, but the Esc key was originally designed differently to today. I think a separate "back" and "stop" key could be interesting!

Numbered function keys sound important to me, but many computers have done without before!

To provide some sample context, if you need it: 
their biodiesel cars use 2-cylinder or 4-cylinder engines
these are under the back where we put the spare tyre (this is possible IRL!) 
their trains still have clerestory windows (for laypersons: the ridge on the wild west train cars)
Yet, these trains have aluminium bodies, air-con, and train stopping safety systems based on signal/speed limits

In a world with things shuffled differently, what could I do to make a sensible keyboard yet a very different one?

I would like to lay down some constraints:


This is a general-purpose keyboard for many operating systems, and many computers in many different places. the two most popular ones in this world are 2 separate operating systems which are designed with each other in mind (I mix OS and hardware here, but I mean Windows NT used to be made for x86 and mac for powerPC)

The most intensive system uses a graphical operating system, early 2000s-ish sorta GUI- though with less bling to save on performance, which is a bit more expensive than it is for us as they haven't gotten down to our transistor size (they get around limits somewhat by use of RISC, large Arithmetic Logic Units to help with maths, either fudging rough numbers quickly or doing precise but intensive equations, and a very large multilayered motherboard with a VERY large CPU die!)

The less intensive system is a computer which is cheaper and more accessible, which is owned by many people. they are like a high-end PC compatible. These have a hard drive which is removable, and the drive can be taken to the library and plugged into the other more powerful computer.

So, removing old unused keys isn't something we can do. People are going to be wanting a keyboard compatible with all systems


NOTE FOR MODERATORS: I AM NOT ASKING FOR LANGUAGE DEVELOPMENT HELP. This is contextual information, as a keyboard will be heavily influenced by the world it is made for! I don't know how else to provide this information except within the body of the question. I'm new here, so if you know a better formatting technique editing it will be appreciated!

this is a language that is C-V, think Japanese. They do write left to right and then proceed down the page.

They have two separate scripts, one for proper nouns and one for standard text (sorta like capitals, but if you write the entire word in uppercase. Some semblance to katakana in that regard.) and these scripts are activated using a "case" key which is separate from the shift key. this is because they have uppercase and lowercase numbers to suit the twin scripts.

The language may have many similarities to Japanese so far, but here's where that ends. The way the language is written is somewhat like an abugida, but all vowels are indicated rather than many being left out. So, dedicated keys for vowels is important. However, the fact they have 12 is a concern, I imagine there's 6 vowel keys and a thumb-shift key. As for consonants, there are 21 consonants. there are 10 sorta onomatopoea-like symbols for like, grunts and whatever, but clearly you aren't using these in everyday conversation. Instead, I imagine that Front+[consonant] will bring up a marked

So far, I'm at a sorta dvorak-like state, I'll put some punctuation symbols above the vowels and also replacing the `~ key under Esc. Considering having one column of punctuation keys between the consonants and vowels too?

(the vowels aren't all on home row, as the layout of vowels corresponds to where in the mouth sounds are made, like the IPA chart!)


I am sorry for this being rushed. I am in a hurry, I have things I need to do but I don't want to leave a question half-written. I hope there isn't any significant mistakes in grammar. Thanks for reading!

image of keyboard work so far, layout of keys. Not all of the keyboard is shown, because the case key has a image of the two scripts (imagine an A>a symbol) and they're placeholder symbols I'm embarassed to show here...

A closeup of the modifier keys in the bottom left. We're pulling a Space Cadet here and including a Front key.

labelled image of the key layout, showing some thoughts on punctuation placement and the location of Thumb-Shift.

  • 1
    $\begingroup$ The essence of the alphabets which are called abugidas in modern progressive English is that all consonant-letters have an inherent wovel, which does not need to be written. Any vowel other than the default inherent vowel needs to be indicated by a diacritic. It is impossible to leave out vowels in abugida script, because each consonant-letter either carries no diacritic (meaning that the inherent vowel in sounded), or else carries a diacritic, indicating a different vowel or the suppression of the vowel. $\endgroup$
    – AlexP
    May 27 at 12:40
  • 3
    $\begingroup$ You do realize the modern English keyboard layout is not an optimal layout, it was made to keep mechanical typewriters from jamming. just make a layout and its fine. $\endgroup$
    – John
    May 27 at 13:44
  • 2
    $\begingroup$ @John not correct but apparently a very favourite legend people love to parrot on the internet. The QWERTY layout was created with the help of telegraph operators (some of the earliest adopters) and was done to make transcribing Morse code to letters easier. The arrangement is such that letters that correspond to similar codes are placed together, for the typist to choose the one as soon as they can differentiate. E.g., . is E and ... is S, while .... (at the time) is Z. However, .... might also be ES or SE and you need another letter to confirm, hence why all three are near each other $\endgroup$
    – VLAZ
    May 27 at 17:40
  • 1
    $\begingroup$ You should go look up "etoain shrdlu". It will help. Keyboards imitated the typewriter only by accident. We have this whole parallel alphabet-input device history that you aren't even aware of. $\endgroup$
    – John O
    May 27 at 20:43
  • 1
    $\begingroup$ I was thinking, if this image will actually be seen by readers, then you want to slide into the uncanny valley. You want it to be clearly a keyboard, but one they couldn't imagine using themselves. $\endgroup$
    – user458
    Jun 8 at 2:53

3 Answers 3


Here is my random bag of bits...

For a phonetic orthography, have a look at the Shavian_alphabet. If we accept a computer keyboard has grown out of something that sends messages, this does a better job than the roman alphabet, with one letter 'e' for the two most common vowel sounds, and c,k,x,q for perhaps the least-used consonant. This used a slightly larger letter instead of a capitals.

The space (not a letter) is used as divider. it does nothing but mark where something ends and something else begins.

The full stop (period) marks the end of something. In speech, this might be a pause. Your keyboard could use the underline character for this. The dot is horribly overloaded. A half-height decimal point just for numbers would relieve the pressure a bit. The underline could be used to end a sentence, and then to end a program line.

If a teletype was the original inspiration, your keyboard might have arrow keys so you could backspace, overprint, go up half a line and add accents, and so on. Let us assume these keys also end up with symbols.

Brackets are good. They can clump something complex into a single thing. This can later be used doing much the same thing for functions, subroutines, and other program elements. Instead of using all the different types of brackets, we could use (- and -) or any other symbol to generate many bracket types. The main this is they should look symmetric.

The equals sign has been used for assignment. Early programming languages such as Algol (the first language I learned) used '=:' rather than write nonsense such as "x = x + 1;". The keyboard might use the left arrow symbol for assignment.

The right arrow could be used for 'member of', such as "A->B" in C++ which says that 'B' is a part of the more complex 'A' (or pointer to A in C++).

We have the 'cap' and 'cup' symbols for the union and intersection of sets. These would be better than '&' and '|' for 'and' and 'or'. The logical use does not really match our language. The set of "cats and dogs" is empty because nothing belongs to both sets. This is not what you expect when you ask for "all pictures of cats and dogs". There are also horizontal symbols for 'is a subset of' or 'is a superset of'. Or you could just override the '<' and '>' symbols.

Modifier keys such as Shift-, Control-, Alt-, Opt-, Command-, Windows-, Meta-, and Hyper- seem a thing that goes on happening. Any keyboard that evolves must have some of these.

There is other junk we have from typewriters. The '1/2' symbol did not make it, but '@', '&' and many others did.

If this isn't a full-sized keyboard, then you could also have symbols between the keys. Mashing the 'A' and 'S' keys together, for example, could make a new symbol.

  • $\begingroup$ I like your thinking here! I was going to have the full stop be a circle (sometimes I feel like I'm taking too much inspiration from Japanese...) but an underscore makes sense for hand-written text as it's quick to write! So, that is great for here! I'm gonna take that on for this. Modifiers are a thing that just happens, that makes sense. Good, because I can understand them! :) Having arrow symbols for going up halfway, well that wouldn't carry well to computing due to how text is stored (except LaTeX) However, pressing Front+arrow to get a superscript or subscript could be cool! $\endgroup$
    – Katy
    May 28 at 4:06
  • $\begingroup$ and front+right for the greater-than symbol, which can be used in code for designating member of as you said. Front+left would be less-than, might also see use in code for the opposite purpose to show that another item is a member of it! Special symbols for maths- such as the cap and cup you have mentioned, as well as a special divide and multiply symbol (rather than * and /) And the backspace you mentioned sounds more like our arrow keys However, backspace as it's now knows to us (go back a space AND delete) I might place on the left-hand side. It'll also be a "cancel operation" key $\endgroup$
    – Katy
    May 28 at 4:13
  • 1
    $\begingroup$ When looking to programming languages for inspiration, don't forget the APL system which had its own typeball and symbol layout on the keyboard. $\endgroup$
    – David R
    May 28 at 14:19
  • 1
    $\begingroup$ The keyboard seems to evolve. Features such as function keys, BREAK, line-feed and return, come and go. Different languages may need different keys. There are keyboards where you can actively relabel all the keys, but they always start with a familiar layout. The APL set might have been good, but it died. Pointing gadgets, on the other hand, are all effectively the same thing: a mouse does what a trackball did, a touchpad does what a mouse did, but not as well but it fits on a laptop, and so on. $\endgroup$ May 29 at 8:10
  • 1
    $\begingroup$ @Katy Mathematics had all sorts of conventions that were a nightmare to typesetters. In my youth I had to type equations on a typewriter with two keyboards, with double-height sigma and integral symbols, and half-height shifts. You can do all of this in LaTeX, but the symbols are not a keyboard as we know it. The to-the-power-of symbol is an interesting special case. Trad maths uses a superfix. Fortran used **. Other languages used ^. Lately it has mostly become a mathematical function pow(x,y) function without a special symbol. $\endgroup$ May 29 at 8:22

Apologies for the second answer, but this contains some points that contradict the first one. This has been going around in my head, and overnight my brain spat out some different answers.

What has happened with programming and keyboards over the last fifty years has mostly been evolutionary rather than revolutionary. I propose that anything that is no longer used is a sign that it is or was not fit to survive.

I remember using teletypes and punched cards. The mental model was that a key press resulted in a symbol being added. Exceptions are CAPS LOCK, NUM LOCK, and ESC. These are little used today. The ESC symbol is used for all sorts of thing in terminal emulator programs, but there is often a time out between characters for any string beginning with ESC to prevent an ESC caused by a human going 'wot dis key do?' having unexpected consequences.

High-level computer languages generally put the assignment '=' at the beginning of the (indented) line, as in " X = expression ". There are Reverse Polish languages (Forth, PostScript) but these are hard to read. People even prefer algebraic notation on calculators. So equals at the beginning of a line seems to be a good thing.

I was perhaps wrong about having a separate assignment character. Suppose we stuck with " X = expression " to assign the value in the expression. We could then use the '?' as a prefix for logical tests that return Boolean types...

X ?= Y is true if X is equal to Y (for the particular type of A and B)

A ?= Y is true if X is less than Y

We could then use '!' as a prefix for inverse operations...

X != Y is false if X is equal to Y (for the particular type of A and B)

A != Y is false if X is less than Y

What is "X < Y" then? If it is like the other single character operators, it should return a value that is of the same type as X and Y. It would return the minimum of the two values. This is handy. The shortest way of doing this in 'C' using the standard operators is X<Y ? X : Y using the ternary operator. This is neater in some ways, but nobody ever did it.

NB: in the early days not all keyboards had '<' and '>'. Algol used .LT. (less than) and .GT. (greater than). Unix 4 used to behave as though CAPS LOCK was on if the first key you pressed after booting was upper case, as support for lower case was not universal. We have come a long way.

Early FORTRAN used to use the first 6 characters as a GOTO label field, the seventh for a continuation character, and the last few columns on a punched card as a comment field. There was a limit on the number if continuation lines the depended on the compiler (I remember a limit of 17).

I liked the 'C' convention that all whitespace was the same right from the start. You can write obfuscated code, but you can also lay out matrices neatly. The laws were simple to understand. There have been languages that have used indentation instead of brackets (OCCAM for one) but this is less common.

The compiler may have limitless memory but I still like to know or say when a complicated expression ends. I would use a blank line in any language I wrote to force an end of statement. This does not affect the keyboard.

I realised my bracket parse in the last solution would have not worked well. An alternate syntax might use double brackets ((like this)) to give more bracket options. This does not affect the keyboard either.

I loved 'C's use of pointers and increment operators on addresses when I first started, because they were close to the actual machine code operations. But they let you write unsafe code, and they have fallen out of favour. This may have been the problem with APL: it tried to force a revolution on the keyboard based on a particular relationship between symbols and machine operations, and was unable to evolve.

It would be nice if all the numeric keys were on one row, with the zero to the left of '1'. I would put all numeric keys in the row, including the half-height decimal point and maybe some 'e' character for the exponent.

Last time, I had wondered what would happen if the arrow keys had become symbols. I was using the left arrow for assignment, and the right arrow for 'is a member of'. Suppose we used the up arrow for 'raising to the power', and in "10.0^3" for 1000. We could then use the down arrow for the inverse operation (log) so "1024.0v2.0" would be 10.0.

We often need some special symbol for modular divide, or 'remainder of'. C++ uses '%', which was free but isn't great.

  • $\begingroup$ I did actually adopt that idea for up arrow being for "to the power of"! Great minds think alike... Thanks for the followup! $\endgroup$
    – Katy
    Jun 8 at 10:06

When nothing prevents a solution you want to use, then use it

I am going to look at this issue from another angle...

Anything that is not explicitly prevented from existing, can exit.

As history shows, user experience is subject to evolution.

And as with biological evolution, the end product is not fixed. There is no one species to rule them all, there is no one user experience solution that is guaranteed to emerge.

Conversely, the only thing that prevents any kind of species or solution from existing, is that a competing species/solution is so much more fit, and has existed for such a long time, that it has had time to outcompete the first one.

Hence, whatever solution you come up with, that is not wildly impractical, and that you cannot easily come up with a better version for, is — in a work of fiction — credible, and as such can be used.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .