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


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.