Keyboard layout doesn’t make sense.

User avatar
Eszett

19 Mar 2014, 03:03

Hi! Let me ask something heretical. Why is there a huge capslock key on my keyboard. I’ve never used it in my whole life. And I understand, that some people need two shift keys, but who needs two CTRL keys instead of a single one? And who needs two Windows keys instead of one? The enter key or space key are important keys, and we don’t have two of them. And while the tabulator key may be of use sometimes, where is the back-tabulator key? Where is the copy key, paste key? We have useless keys on our boards, and usefull ones are missing. :?
Last edited by Eszett on 19 Mar 2014, 03:26, edited 1 time in total.

User avatar
Spearman

19 Mar 2014, 03:13

Ctrl gets used a fair bit, especially when needing to send special signals into a text terminal where normal keypresses would be interpreted as text. Some early keyboards had Ctrl in the place of Caps lock.

IBM 5150:
http://deskthority.net/wiki/File:83key.jpg

Apple II:
http://www.digibarn.com/collections/par ... -swyft.jpg

quantalume

19 Mar 2014, 04:39

Eszett, those are all great questions. Everyone uses a keyboard differently, so there's no single layout which everybody would be happy with. Don't try to take the caps lock away from a SQL programmer. Most of them are probably happy to have it where it is. Myself, I'm glad that there are two Ctrl keys and two Alt keys, because I use them almost as much as the shift keys. Would you want only one shift key? My solution has been to buy keyboards with blank caps and then remap to my heart's content.

Findecanor

19 Mar 2014, 09:38

The modifiers (Shift, Ctrl, Alt/Option, Windows/Command) are on both sides because of the Touch Typing method that is taught in schools.
According to it, you are supposed to press a modifier with the opposite hand to the one that is typing the letter.

Back-tab is Shift-Tab. That is indicated on the Tab key by the back-tab symbol being above the tab symbol. Many people interpret both symbols as being one, when they are in fact two.

Caps Lock stems from typewriters. Back when only one font/size was available, all-caps was often used for headings.
All-caps headings were also used a lot on computers for simple text-files that do not have any formatting.

User avatar
Muirium
µ

19 Mar 2014, 10:12

Mods are mods. Shift, Command, Option, Control: are all useless when pressed alone. They are a different class of key to Q or = or indeed Tab, Return or Space. They emit no character. But they control other characters when pressed simultaneously.

So it does really help to have two of each. Hand gymnastics are something you don't want when typing!

User avatar
Kurk

19 Mar 2014, 10:41

A truly ridiculous feature of the standard keyboard layout is the horizontal staggering. A remnant of the early mechanical typewriter days and completely superfluous for electronic keyboards.

User avatar
Halvar

19 Mar 2014, 10:43

Fortunately, keyboard layouts are software and can be changed. :D

Keyboard layout editor for Windows:
http://msdn.microsoft.com/de-de/goglobal/bb964665.aspx

XKB for Linux:
https://help.ubuntu.com/community/Howto ... efinitions

Mac OS X:
https://pqrs.org/macosx/keyremap4macbook/

If you're looking for fitting keycaps ... well you're at the right place here too.

User avatar
Muirium
µ

19 Mar 2014, 10:46

Indeed. Check out symmetric stagger, matrix boards, even the ErgoDox.
Kurk wrote:A truly ridiculous feature of the standard keyboard layout is the horizontal staggering. A remnant of the early mechanical typewriter days and completely superfluous for electronic keyboards.
And of course QWERTY itself.

Caps Lock is way too high profile for modern use. (It should be where Scroll Lock is or some other place out of the way.) But the mods are the least illogical parts of a historical mishmash of typewriter conventions that makes the keyboard what it is.

User avatar
ماء

19 Mar 2014, 12:35

sym sgg is good option if you feel, your left hand odd :P

User avatar
Muirium
µ

19 Mar 2014, 12:46

Symmetric stagger + split keyboard + tenting in action:

Image

If you touch type, symmetric stagger helps your left hand reach Q and Z (on QWERTY) like how your right hand finds P.

User avatar
Vierax

19 Mar 2014, 16:04

Ah the μtron… sadly the price is insane, mostly because of Topre. I would like to see almost the same layout with MX or ALPS.

IMHO the best way to have a universal using is to have a programmable board : even developer's symbols fluctuate a lot because of the differences of syntax between the programming languages. Escape is very important with Vi-like behaviour programmes. F1-12 needs a direct access for terminal switching in Linux (maybe in the whole Unix family? ) so everybody doesn't have the same expectations.

User avatar
Muirium
µ

19 Mar 2014, 16:05

Now there's a thought. The MuTron…

User avatar
Grendel

19 Mar 2014, 17:18

Hurrah for mod-keys -- Shift-TAB = back tab (as written on the key), Copy/Paste depends on the OS or even the specific software you are using. Windows has it streamlined somewhat: Ctrl-Ins or Ctrl-C = Copy, Shift-Ins or Ctrl-V = Paste.

User avatar
Muirium
µ

19 Mar 2014, 17:24

Indeed. So elegant, you have to wonder where they came from…

http://daringfireball.net/2014/01/special

User avatar
Eszett

19 Mar 2014, 23:52

@findecanor All you say is true. It is taught to use a modifier with the hand you aren’t typing at the moment. But on the other hand I spoke about the doubled win keys, and win keys aren’t modifiers. :geek:

User avatar
Grendel

20 Mar 2014, 04:13

Eszett wrote:But on the other hand I spoke about the doubled win keys, and win keys aren’t modifiers. :geek:
They are in Windows and other systems. :ugeek:

User avatar
scottc

20 Mar 2014, 04:41

I use Mod4 for controlling my window manager on Linux.

User avatar
Muirium
µ

20 Mar 2014, 10:30

Command remains the primary mod on the Mac, right since the beginning. When Apple switched to USB keyboards in 1998, it used the same scancode for its extra mod as the recently introduced Windows key. While that meant PCs and Macs could use USB keyboards interchangeably, it has meant Alt<>Windows swaps on mechanicals for Mac users ever since. Can't go without your mods!

hoggy

21 Mar 2014, 07:16

I remapped my caps lock to backspace, others have remapped it to Ctrl. You can go further and implement sands (shift and space) where the space bar can be used to produce a space, but if you hold it down and press another key, it will act as shift.

User avatar
Muirium
µ

21 Mar 2014, 10:37

Multi modal keys like that are what draw me to Hasu's firmware.

As for alphas: Colemak looks the way to go. And it is built into modern operating systems.

User avatar
ماء

21 Mar 2014, 12:48

SpaceShift 8-) When you press usual is Space when you press hold is Shift :P
Spoiler:

Code: Select all

;Original BigCtrl
;Copyright (c) 2012 Benjamin Hansen
;
;modiefed SpaceShift
;Copyleft (c) 2014 Yasuo Netsisnok
;
; Permission is hereby granted, free of charge, to any person
; obtaining a copy of this software and associated documentation files
; (the "Software"), to deal in the Software without restriction,
; including without limitation the rights to use, copy, modify, merge,
; publish, distribute, sublicense, and/or sell copies of the Software,
; and to permit persons to whom the Software is furnished to do so,
; subject to the following conditions:
; 
; The above copyright notice and this permission notice shall be
; included in all copies or substantial portions of the Software.
; 
; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
; BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
; ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
; SOFTWARE.
;
; Allows the spacebar key to mimic the Shift key while retaining most
; of its normal functionality. Holding down the spacebar key down acts
; like holding down the shift key. This allows for easier use of
; keyboard shortcuts (such as Shift+tab for cumi). If the spacebar key is
; pressed and released quickly (less than the specified timeout) and
; no other key was pressed then a normal space is sent.
;
;Original BigCtrl
; Author:         Ben Hansen       <benhansenslc@gmail.com>
;
;Modiefed SpaceShift
; Author:         yasuonetsisnok <netsisnok@gmail.com> 
;

#SingleInstance force
#NoEnv
SendMode Input
SetStoreCapslockMode, Off
Process, priority, , High

; The amount of milliseconds of holding the spacebar after which a
; space key is no longer returned.
g_TimeOut := 300

; The amount of milliseconds to delay returning a Shift key sequence
; that are potentially accidentally hit with the space bar. If the
; space bar comes up during this delay the regular keys will be
; returned instead. Probably rounds to the nearest 10 milliseconds by
; the OS.
g_Delay := 70

g_SpacePressDownTime := false
g_OtherKeyPressed := false
g_SkipNextSpace := false

allKeysStr := "LButton*RButton*MButton*WheelDown*WheelUp*WheelLeft*WheelRight*XButton1*XButton2*Tab*Enter*Escape*Backspace*Delete*Insert*Home*End*PgUp*PgDn*Up*Down*Left*Right*ScrollLock*CapsLock*NumLock*Numpad0*Numpad1*Numpad2*Numpad3*Numpad4*Numpad5*Numpad6*Numpad7*Numpad8*Numpad9*NumpadDot*NumpadDiv*NumpadMult*NumpadAdd*NumpadSub*NumpadEnter*F1*F2*F3*F4*F5*F6*F7*F8*F9*F10*F11*F12*F13*F14*F15*F16*F17*F18*F19*F20*F21*F22*F23*F24*AppsKey*Browser_Back*Browser_Forward*Browser_Refresh*Browser_Stop*Browser_Search*Browser_Favorites*Browser_Home*Volume_Mute*Volume_Down*Volume_Up*Media_Next*Media_Prev*Media_Stop*Media_Play_Pause*Launch_Mail*Launch_Media*Launch_App1*Launch_App2*Help*Sleep*PrintScreen*Shift*Break*Pause*Break"
StringSplit, allKeysArray, allKeysStr, *
Loop %allKeysArray0%
{
  key := allKeysArray%A_Index%
  Hotkey, % "~*"key, ListenForKey
}

; Keys that are possible to accidentally press with the space key
; while typing fast.
keysToDelayStr := "1*2*3*4*5*6*7*8*9*0*q*w*e*r*t*y*u*i*o*p*[*]*\*a*s*d*f*g*h*j*k*l*;*'*z*x*c*v*b*n*m*,*.*/"
StringSplit, keysToDelayArray, keysToDelayStr, *
Loop %keysToDelayArray0%
{
  key := keysToDelayArray%A_Index% 
  Hotkey, % "*"key, DelayKeyOutput
}

; This is necessary to prevent wierd bugs from occuring with the other
; modifier keys.
modifiersStr := "LWin*RWin*LAlt*RAlt*LShift*RShift"
StringSplit, modifiersArray, ModifiersStr, *
Loop %modifiersArray0%
{
  key := modifiersArray%A_Index% 
  Hotkey, % "*"key, ModifierDown
  Hotkey, % "*"key " up", ModifierUp
}

ListenForKey:
  g_OtherKeyPressed := true
  Return
  
DelayKeyOutput:
  Critical
  pressedKey := SubStr(A_ThisHotkey,0)
  modifiers := GetModifiers()
  ; Only wait to see if the space comes up if 1) the space bar key is
  ; down in the first place and 2) it has been held down for less than
  ; the timeout and 3) another Shift key combo hasn't already been
  ; pressed.
  if((g_SpacePressDownTime != false) 
    && (GetSpaceBarHoldTime() < g_TimeOut) && !g_OtherKeyPressed)
  {
    ; Do the sleeping of timeout in small increments, that way if the
    ; the space key is released in the middle we can quit early.
    wait_start_time := A_TickCount
    while A_TickCount - wait_start_time + 10 < g_Delay
    {
      Sleep, 10
      if(!getKeyState("Space", "P"))
      {
	; Since space bar was released, remove the Shift modifier.
	StringReplace, modifiers, modifiers, ^,
        ; Force space to fire, because its being released could not
        ; fire during this routine because this thread is critical.
	Gosub *Space up
        ; Stop the space in the event queue from firing since we
        ; have already fired it manually.
	g_SkipNextSpace := True 
        Break
      }
    }
  }
  SendInput % modifiers pressedKey
  g_OtherKeyPressed := true
  Return
  
  
ModifierDown:
  pressedKey := SubStr(A_ThisHotkey,2) ; Get all put starting '*'
  SendInput {%pressedKey% down}
  Return
  
ModifierUp:
  pressedKey := SubStr(A_ThisHotkey,2) ; Get all put starting '*'
  SendInput {%pressedKey%}
  Return

*Space::
  Critical
  ; Don't update on OS simulated repeats but only when the user
  ; actually pressed the key down for the first time
  if(g_SpacePressDownTime == false)
  {
    g_SpacePressDownTime := A_TickCount
    g_OtherKeyPressed := false
  }
  SendInput {RShift down}
  Return
  
*Space up::
  Critical
  if(g_SkipNextSpace)
  {
    g_SkipNextSpace := false
  }
  SendInput {RShift up}
  if(g_OtherKeyPressed == true)
  {
    g_SpacePressDownTime := false
    Return
  }
  if (GetSpaceBarHoldTime() <= g_TimeOut)
  {
    modifiers := GetModifiers()
    SendInput % modifiers "{Space}"
  }
  g_SpacePressDownTime := false
  Return
  
GetSpaceBarHoldTime()
{
  global g_SpacePressDownTime
  time_elapsed := A_TickCount - g_SpacePressDownTime
  Return time_elapsed
}
  
; Return the hotkey symbols (ie !, #, ^ and +) for the modifiers that
; are currently activated
GetModifiers()
{
  Modifiers =
  GetKeyState, state1, LWin
  GetKeyState, state2, RWin
  state = %state1%%state2%
  if state <> UU  ; At least one Windows key is down.
    Modifiers = %Modifiers%# 
  GetKeyState, state1, Alt
  if state1 = D
    Modifiers = %Modifiers%!
  GetKeyState, state1, Control
  if state1 = D
    Modifiers = %Modifiers%^
  GetKeyState, state1, Alt
  GetKeyState, state1, Shift
  if state1 = D
    Modifiers = %Modifiers%+
  Return Modifiers
}

User avatar
Spearman

21 Mar 2014, 23:10

Kurk wrote:A truly ridiculous feature of the standard keyboard layout is the horizontal staggering. A remnant of the early mechanical typewriter days and completely superfluous for electronic keyboards.
It doesn't bother me for normal typing, but I could never use an imbedded numpad (as in laptop keyboards like thinkpad) with the .5 unit staggering on rows 1 and 4. I think I'd like to try something like this:
Spoiler:
62key-us-int-numpad-3.png
62key-us-int-numpad-3.png (46.77 KiB) Viewed 6304 times
The function layer is still pretty messy and there are still some unused keys. I think I will try getting rid of some of the less essential media keys to add a second left-hand navigation cluster around ESDF (to make using the mouse easier- although if I could build this with trackpoint the mouse wouldn't be needed).

User avatar
Eszett

22 Mar 2014, 06:26

Staggering is another disease, yes.

And to mention another disease: some of you guys like to attach a red keycap for escape, but who uses the escape key, for what? In our modern times, I would expect that some button called “escape” closes the current window / process. This is what we need pretty often. So, basically spoken, I miss an Alt-F4-key, and then a red keycap would make sense! And since I’m a Windows user I would expect such a red Alt-F4-key in the upper right corner of the keyboard, analog to that we close a window with clicking the little cross in the upper right corner of a window. That would make sense! For my understanding of an intuitive layout, at least.

User avatar
Vierax

22 Mar 2014, 07:19

As far as I know, the Escape key is strongly used for vim and it's the pause/start key in a majority of games.

I use it myself a lot (in addition of the menu key and arrows) when I want to quit the contextual right-clic menu that I use when I want to correct my sentences during typing sessions (in Firefox and Thunderbird) where taking the mouse slows the redaction.
I placed this key in the center of my Tipro, near Tab, Del and Bksp and this location is nice.

User avatar
Eszett

23 Mar 2014, 02:51

@Vierax The win key opens a win menu, and when pressed again it closes the win menu, logically. That is what I would expect for the app key as well. Awkward that escape is used for this. And you said escape is used for pc games. Indeed. Nevertheless, we are still missing the "real escape" key, i. e. the Alt-F4-key.

User avatar
Spearman

23 Mar 2014, 10:06

Escape seems to be used to clear current selections or return to the 'main' window in certain GUIs. It's a bit inconvenient for use in vim, so usually I use Ctrl-C which has the same binding.

As for closing windows/programs, Alt-F4 seems to work accross both Windows and Linux (Mint), but I tend to use Ctrl-Q when it's available (I believe the command in Mac OS is something like Cmd-Q).

User avatar
Muirium
µ

23 Mar 2014, 11:31

Yes, Command+Q quits the current application on the Mac, while Command+W closes the current window. I believe Windows/Linux's Alt+F4 does them both, as apps are bound to windows on other platforms.

A single key to do this would be quite destructive. Closing apps destroys their undo stack and so no undo for you if you pressed it by mistake. I get why you'd want one for Alt+F4 though: that's a combo that only Microsoft could have created! Switch it to Control+Q and you're done.

User avatar
bhtooefr

23 Mar 2014, 11:58

The missing piece of the puzzle, however, is Ctrl-F4.

So, when Multiple Document Interface was adopted in Windows 2.0, that shortcut was added.

The Mac model actually behaves like MDI. You start applications that have child windows, and as of OS X (the Classic versions that I'm familiar with had very poor keyboard support), Cmd-Tab switches between applications, Cmd-Q closes applications, Cmd-` switches between windows within an application, Cmd-W closes windows within an application.

MDI on Windows (and some web browsers obey this)... Alt-Tab switches between applications, Alt-F4 closes applications, Ctrl-Tab switches between windows within an application, Ctrl-F4 closes windows within an application.

User avatar
Muirium
µ

23 Mar 2014, 12:15

Correct. Mac apps that quit when you close their window are an oddity on OS X, and usually lightweight utilities.

App switching (and if I remember window switching too) was a mess in the Classic days. Multitasking was implemented without Steve Jobs or the original Mac team around, and was inevitably a kludge until OS X brought NeXT's version in.

User avatar
Eszett

23 Mar 2014, 13:13

Thanks for inspiration with this Ctrl-F4 / Ctrl-w thingie. I’ve remapped [Pause] key to invoke Ctrl-w, i. e. quit current sub window; and [Scroll] key to invoke Alt-F4, i. e. quit current application or process. It feels right to have those functions placed in the upper right corner of my KB. Now I need two suitable keycaps, perhaps one in orange and the other in red …

Regarding “SpaceShift”: the idea is brillant and tempting. Tonight I sat 8 hours writing and debugging a script for it. However, I finally realized that there is an inherent flaw, which hampers fast and fluent typing. For example, when we write “a b”, we sometimes hit the before releasing [space], which normally isn’t a problem. But “SpaceShift” won’t allow that, it will result in “aB”. You are forced to type pokingly, and this isn’t an option for me. Therefore, sadly, I’ve discarded the concept of “SpaceShift”.
Last edited by Eszett on 23 Mar 2014, 13:52, edited 5 times in total.

Post Reply

Return to “Keyboards”