프로그래밍을위한 이상적인 키보드 레이아웃 [닫기]


87

간결함을 위해 기호를 많이 사용하는 프로그래밍 언어, 특히 C와 C ++ (APL을 건드리지 않겠습니다)는 Shift 키를 자주 사용해야하므로 입력하기 어렵다는 불만을 자주 듣습니다. 1 ~ 2 년 전에 나도 싫증이 나고 Microsoft의 Keyboard Layout Creator를 다운로드 하고 레이아웃을 몇 가지 변경 한 후 한 번도 돌아 보지 않았습니다. 속도 차이는 놀랍습니다. 이러한 몇 가지 간단한 변경으로 C ++ 코드를 30 % 더 빠르게 입력 할 수 있습니다. 무엇보다도 평범한 텍스트의 타이핑 속도가 손상되지 않습니다.

내 질문은 다음과 같습니다. 인기를 얻은 프로그래밍을 위해 어떤 대체 키보드 레이아웃이 있었는지, 아직 현대적으로 사용하고 있습니까, 개인적으로 변경된 레이아웃을 사용합니까, 어떻게 내 레이아웃을 더 최적화 할 수 있습니까?

표준 QWERTY 레이아웃을 다음과 같이 변경했습니다. (저는 Dvorak을 사용하지 않지만 언급 할 가치 가있는 프로그래머 Dvorak 레이아웃이 있습니다.)

  • 길거나 반복되는 리터럴 숫자는 일반적으로 명명 된 상수로 대체되기 때문에 맨 위 행의 기호숫자를 바꿉니다 .
  • 따옴표는 많은 언어에서 드물지만 C ++에서는 소멸자가 일반적이기 때문에 역 따옴표를 물결표로 바꿉니다.
  • 밑줄은 식별자에서 일반적이므로 마이너스를 밑줄로 바꿉니다 .
  • 블록이 아래 첨자보다 더 일반적이기 때문에 중괄호를 대괄호로 바꿉니다. 과
  • 문자열이 문자 리터럴보다 더 일반적이므로 큰 따옴표를 작은 따옴표로 바꿉니다.

나는이 마지막이 아마도 가장 논란의 여지가있을 것이라고 생각한다. 일반적인 축약을 입력하기 위해 shift를 사용하도록 요구함으로써 텍스트 실행을 가장 방해하기 때문이다. 이 레이아웃은 C ++, C, Java 및 Perl에서 입력 속도를 크게 향상 시켰으며 LISP 및 Python에서는 다소 증가 시켰습니다.


32
어쩌면 내가 너무 느리게 생각하고 있기 때문일 수도 있습니다. 그러나 원시 타이핑 속도는 일반적으로 소프트웨어를 개발할 때 제한 요소가 아닙니다. 그렇다면 아마도 내가 뭔가 잘못하고 있다고 생각할 것입니다.
Lucero

9
@Lucero : 전반적으로 , 아니오,하지만 내가해야 할 일을 (마지막으로!) 알아 내면 더 빠르고 편안하게 입력 할 수 있습니다. 열심히 생각하고 나면 때로는 코드를 많이 연마해야합니다 ... :-)
TJ Crowder

3
@Jon : 주관적으로 닫히기 전에 이것을 CW로 만드는 것이 좋습니다 (결국 그렇습니다).
TJ Crowder

20
@TJ : 만든 CW. 좋은 레이아웃은 편안함의 하나이기 때문에 원시 성능의 문제가 아니지만 편안함은 성능에 매우 중요합니다.
Jon Purdy

3
당신이 얼마나 많은 사람들에게 강타 당했는지는 재밌습니다. 나는 그들을 무시하는 것이 좋습니다. 단지 (이 속도를 입력하지 것 입니다 , 인체 공학이 그 으뜸은 "당신이 생각하는 프로그램"할 수있을 정도로 입력 할 경우 요소). 그러나 속도와 인체 공학은 함께 작동합니다. 손에 부담을주는 동작은 수행 속도가 느리고 피로는 오류로 이어지며 이러한 세금을 손에 더 많이 수정합니다. 장기적으로는 필요에 맞게 키보드 레이아웃을 조정하는 것이 RSI 또는 RSI 없음의 차이 일 수 있습니다.
단지 누군가

답변:


30

나는 여전히 타이핑 속도가 프로젝트를 완료하는 데 걸리는 시간의 주요 요소가 아니라고 생각합니다. 그렇다면 큰 문제가 있습니다 (코딩 주간은 계획 시간을 절약합니다).

귀하의 질문과 관련하여 표준 레이아웃을 사용하는 것을 선호합니다. 이는 표준 키보드 레이아웃이 제공 될 때 처음 10 분 동안 어리석은 것처럼 보일 필요가 없음을 의미합니다.

당신이 제안한 일부 대체, 예를 들어, 특수 문자가있는 맨 윗줄은 다른 손의 바깥 쪽 손가락이 동시에 움직이기 위해 움직여야하기 때문에 큰 차이를 만들지 않습니다.

IMHO 위의 연결 레이아웃에 도움이되는 한 가지는 바로 가기 키만 사용하는 것입니다. Vim과 Emacs를 권장합니다. 텍스트를 훨씬 빠르게 이동합니다.


20
오, 아니, 타이핑 속도는 어떤 식 으로든 병목 현상이 아니지만 동시에 키보드와 같은 어리석은 것을 방해하는 이유는 무엇입니까? 두 가지를 자주 사용하기 때문에 레이아웃과 다른 레이아웃간에 전환하는 데 문제가 없었습니다. 나는 단순히 내 것을 선호합니다. 그리고 저는 인정해야합니다. emacs는 프로그래밍을 최대한 빠르게 만듭니다. 키 시퀀스를 찾을 필요가 없습니다.
Jon Purdy

4
아, 그리고 왼손과 오른손 움직임의 동시성도 차이를 만들지 않습니다 . 키를 누르기 전에 수정자를 계속 눌러야합니다. 밀리 초의 차이는 분명하지만, 왜 자신을 방해합니까? 작동하지 않는 레이아웃으로 프로그래밍하는 것은 고정 키보드에서 프로그래밍하는 것과 같습니다.
Jon Purdy

6
나는 여러 키보드 레이아웃을 메모리에 유지함으로써 근육 기억을 방해하여 타이핑 속도를 느리게 만듭니다.
JesperE

1
시프트 키의 다른 문제는 교대하는 시퀀스이므로 양손이 맨 윗줄에서 시프트 키로 점프했다가 뒤로 이동합니다. 하지만 걱정할 정도로 흔하다고 말하는 것은 아니지만 "(! * x)"와 같은 것은 짜증나는 것으로 간주 될 수 있습니다.
Steve314

1
-1 : 토론에 아무런 기여도하지 않으며 ( "어리석은 것처럼 보이는"주장은 경험에서 얻은 하나의 데이터로도 뒷받침되지 않으며, 미래 지향적 인 걱정입니다) 고칠 수 없습니다.
Evgeni Sergeev 2014 년

16

다음과 같은 방법으로 귀하의 질문에 접근하겠습니다. 작업은 주어진 텍스트에 대한 키 입력 및 손 움직임을 최소화하는 방식으로 키보드를 구성하는 것입니다.

가능한 해결책을 향해 나아갑니다. 다음과 같은 프로그램을 만드십시오.

  1. 소스 코드가있는 텍스트 파일을 가져옵니다. (더 클수록 더 좋고 다양한 출처에서!)
  2. 각 기호의 사용 빈도를 계산합니다 (텍스트에 있음).
  3. (선택 사항) 2 단계에 따라 프로그램은 각 기호에 대한 키 입력 횟수와 손이 중앙 위치에서 얼마나 멀리 가야하는지 생성합니다. 결과적으로 키보드 레이아웃이 얼마나 효과적인지 측정 할 수 있습니다.

이제 수동으로 또는 프로그램을 작성하여 다음과 같은 방법으로 레이아웃을 재정의하십시오. 가장 자주 사용하는 기호를 강한 손에 더 가까운 중앙 위치에 놓습니다. 두 번째 기호는 중앙 위치에서 약한 손으로 이동합니다. 세 번째 기호는 강한 손으로 돌아갑니다. 그런 다음 손의 중앙 위치에서 키보드의 더 "먼"영역으로 점차 이동합니다. 모든 키보드가 가득 차면 키 할당 프로세스를 계속하지만 이번에는 Shift 키를 누른 상태로 계속합니다. 다른 차이점은 Shift 키를 눌렀을 때 각 기호에 대해 강하고 약한 손을 회전하지 않는다는 것입니다. Shift 키를 먼저 아래로 누르면 키보드의 중앙 위치를 채운 다음 더 먼 위치로 이동합니다.

레이아웃이 어떻게 개선되었는지 확인하기 위해 새 레이아웃에 대해 3 단계를 다시 수행하는 모든 작업을 수행 할 때.

키보드는 항상 휴대해야 할 수 있습니다. 밝은면에서는 아무도 컴퓨터를 건드리지 않을 것입니다. 프로처럼 보일 것입니다.

마지막으로, 발견 한 내용을 공유하는 것을 잊지 마십시오.


나는이 대답을 정말 좋아합니다. : P
pjincz

13

나는 기호가 크게 변경되는 순간 Colemak 레이아웃의 변형을 가지고 놀고 있습니다.

SHIFT없이 :

`-{} []; <> () _ =
qwfpgjluy * / # \
arstdhneio '
zxcvbkm,. !

SHIFT 사용 :

~ 12
34 5678 9 0 & + QWFPGJLUY @ ^ $ |
ARSTDHNEIO "
ZXCVBKM % :?

/ 키를 복원 할 수 있습니다 ...

그러나 이것은 사운드 연구를 기반으로하지 않으며, 소스 코드 기반 말뭉치를 사용하여 최적화 된 레이아웃 (수동 변경 등을 포함한 최적화, ZXCV 보존 등)도보고 싶습니다. 산문에만 최적화되어야합니다. 예를 들어 'f'는 C에서 매우 일반적인 문자입니다 (if, for).

업데이트 : 현재 사용 중입니다.

`-{} [] @ <> () _ =
qwkrgyulp *; #
asftdhneio '\
\ zxcvbjm,. /

SHIFT 사용 :

~ 12
34 5678 9 0 ^ + QWKRGYULP &! $
ASFTDHNEIO "|
| ZXCVBJM % :?

이것은 일반적인 잘라 내기 / 복사 / 붙여 넣기 / 실행 취소 단축키를 보존 하여 Carpalx 에서 가져온 6 키 스왑 부분 최적화를 기반으로하며 일반적인 프로그래밍 문자에 더 나은 액세스를 제공하도록 수정되었습니다.


1
나는 문자를 숫자보다 기본값으로 만드는 아이디어를 좋아합니다. 즉 : Shift + 1을 누르면 하나를 얻고 1을 누르면!
레이

12

간단한 키 로거를 만든 다음 각 키를 누른 횟수를 세십시오. 하루나 이틀 동안 실행 한 다음 출력을 텍스트 파일에 저장합니다. 이 작업을 가끔 수행하십시오. 어떤 키가 가장 많이 사용되는지 확인하기 때문에 어떤 레이아웃을 사용하는지는 중요하지 않습니다.

좋은 레이아웃을 만들고 싶다면 표준에서 벗어나는 것을 두려워 할 수 없습니다. 나는 홈 행을 따라 상위 11 개 키를 배치 한 다음 다음 상위 11 개 키를 상단 행으로 배치하고 (반환 키 위에있는 2 개의 키를 가장 적게 사용 된 키로 둡니다), 세 번째 상위 11 개 키를 맨 아래 행으로 배치하는 것이 좋습니다. . 이제 4 개의 키가 남아있을 것입니다. 그것들을 가져다가-= 및] \ 슬롯에 넣으십시오. 축하합니다! 이제 목적에 맞는 멋진 키보드 레이아웃을 만들었습니다! = D


1
아주 좋은 답변 : 키보드 소유자에게 taylored해야한다
Julien__

1
: 키보드 사용 통계를 들어, 이와 같은 히트 맵을 표시 할 수 있습니다 이미 좋은 프로그램이 있습니다 WhatPulse
미하이 MATEI

[오래된 게시물 댓글 방문] 실제로 정말 멋진 (또는 열띤;]) 아이디어입니다. 직접 확인해야합니다!
Tgwizman

9

전반적으로, 좋은 텍스트 편집기를 가지고 있고 그것을 사용하는 방법을 아는 것이 타이핑 속도를 향상시키는 것보다 낫다고 생각합니다. 매크로를 기록하고 재생할 수 있다는 것은 때때로 생명의 은인이 될 수 있으며, 라이브러리로 변환 할 수있는 항목에 일반적으로 언어가 부과하는 제한이 있기 때문에 바로 가기 할당 코드 조각을 선택하는 것이 편리 할 수 ​​있습니다.

더 일반적으로, 진정한 생산성 향상 도구는 모두 지식에 관한 것이라고 생각합니다.

  • 사용 가능한 도구와 라이브러리 및 사용 방법을 알고 있습니다.
  • 작업중인 코드의 전체 구조를 아는 것뿐 아니라 조금만 아는 것입니다.
  • 핵심 알고리즘, 디자인 패턴 및 관용구를 알고 있으므로이를 재발 명 할 필요가 없습니다.
  • 융통성있게 규칙을 잘 아는 것-규칙을 어길 때를 알고 있습니다.
  • 동료들과 그들의 강점, 약점 등을 아는 것-즉 언제 스스로 무언가를 알아 내야 할 때뿐만 아니라 언제 누구에게 물어볼 것인지를 아는 것.

FWIW, 나는 모든 것에 강하다고 주장하지 않습니다. 나는 항상 스스로 문제를 해결하는 데 너무 편향되어 있었고, 바퀴와 웅장한 건축 계획을 재창조하려는 경향이 너무 강했습니다.

어쨌든 키보드 레이아웃을 변경하고 배우는 데 소요되는 시간이 더 중요한 문제에서 산만해질 것이라는 의심이 있습니다.


나는 모든면에서 당신과 동의합니다! 도구와 관용구를 잘 사용하는 것은 좋은 프로그래밍 일뿐입니다. 그러나 이것은 매우 구체적인 한 가지 질문에 대한 질문입니다. 2 년 전 15 분 동안 그 이후로 합당한 좌절감을 덜어주었습니다.
Jon Purdy

@Jon-요점을 알지만, 지금까지 제 타이핑 습관이 상당히 강하게 프로그래밍되어 있다고 생각합니다. 변화는 힘들 것입니다.
Steve314

-1 : 대체 키보드 레이아웃에 대한 경험을 기반으로 한 것처럼 들리지 않습니다. 그들에 대한 나의 경험에 위배됩니다. 주제를 넘어선 다. 구체적인 작업 항목을 제공하지 않습니다. 고칠 수 없습니다.
Evgeni Sergeev 2014 년

-5

키보드 레이아웃을 변경하면 한 키보드에서 타이핑 속도가 향상 될 수 있지만 다른 키보드 나 특수 키보드 레이아웃이없는 컴퓨터에서는 타이핑 속도가 심각하게 손상되므로 나쁜 생각입니다. 어디에서나 기본값을 변경해야하는 기본값으로 조정하는 것이 더 낫다는 것을 알게되었습니다. (개인적으로 내 손가락은 Emacs 편향이 심하기 때문에 다른 곳에서 많은 타이핑 마찰을 유발합니다.)


6
두 레이아웃 사이를 즐겁게 전환합니다. Jon은 "1 ~ 2 년"이 지났으며 앞뒤로 이동하는 데 아무런 문제가 없다고보고합니다. 기본적으로 YMMV입니다.
TJ Crowder

4
키보드와 키보드 레이아웃 사이를 바꾸는 것은 다른 언어로 말하는 것 사이를 바꾸는 것만 큼 쉽고 / 어렵다는 것을 알았습니다. 잘 알고 있다면 몇 분 후에 완전히 생각할 수 있습니다.
liori

1
@liori : 글쎄요, 그것이 몇 분인지 몇 초인지는 전적으로 내가 얼마나 피곤 하냐에 달려 있습니다. : P
Jon Purdy

1
@liori "몇 분 후 ..." (다국적) 기업과 국가가 몇 가지 목적을 위해 언어를 표준화하는 것 같습니다. 1) 통신 속도. 2) 의사 소통의 정확성. 키보드 레이아웃을 표준화하면 비슷한 이점이 있다고 생각합니다.
Jason D

2
@Jason D : 유효한 포인트이지만 나에게 적용되지 않아서 기쁩니다 ... 나는 다른 사람의 컴퓨터를 거의 사용하지 않습니다.
liori
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.