Programing

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

lottogame 2020. 10. 13. 07:14
반응형

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


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

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

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

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

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


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

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

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

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


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

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

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

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

새 레이아웃에 대해 3 단계를 다시 수행하여 레이아웃이 어떻게 개선되었는지 확인합니다.

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

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


나는 기호가 크게 변경되는 순간 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 % :?

This is based on a 6-key-swap partial optimization taken from Carpalx with preservation of the usual Cut/Copy/Paste/Undo shortcuts and modified to give a better access to the usual programming characters.


Make a simple key logger, then count the number of times each key is pressed. Run it for a day or two, then save the output to a text file. Do this every once and a while. It doesn't matter what layout you are using, as you are just seeing which keys are being used the most.

If you want to make a good layout, you can't be afraid to go away from the norm. I'd suggest putting the top 11 keys along the home row, then the next top 11 keys as the top row (leave the 2 keys above the return key as the least used keys), then the 3rd top 11 keys as the bottom row. There should be 4 keys left over now. Take those and put them in the -= and ]\ slots. Congrats! You have now made a great keyboard layout for your purposes! =D


Overall, I think having a good text editor and knowing how to use it is better than trying to improve your typing speed. Being able to record and replay macros is sometimes a lifesaver, and a selection of shortcut-assigned code snippets can be handy because there's normally language-imposed limits on what can be turned into a library.

More generally, I think the real productivity enhancers are all about knowledge...

  • Knowing what tools and libraries are available and how to use them.
  • Knowing the overall structure of the code you're working on, not just your little bit.
  • Knowing key algorithms, design patterns and idioms so you don't have to reinvent them.
  • Knowing the rules well enough that you can be flexible - you know when to break them.
  • Knowing your co-workers and their strengths, weaknesses etc - ie knowing when to figure something out yourself, but also when and who to ask.

FWIW, I'm not claiming to be strong on all those. I've always been too biassed towards solving problems myself, and with too strong a tendency towards reinventing the wheel and grand architectural schemes.

Anyway, I just have this suspicion that time spent changing and learning keyboard layouts would be a distraction from more important issues.


Changing the keyboard layout is a bad idea since it would (perhaps) boost your typing speed on one keyboard, but severely damage your typing speed on other keyboards or on computers where you don't have your special keyboard layout. I've found that it is often better to adjust yourself to the defaults, that having to change them everywhere. (Personally, my fingers are heavily Emacs-biased, which causes lots of typing friction everywhere else.)

참고URL : https://stackoverflow.com/questions/2306423/an-ideal-keyboard-layout-for-programming

반응형