Как рассчитать идеальную раскладку клавиатуры для программистов?

2763
tomByrer

Я думаю о создании новой раскладки клавиатуры для программирования. Сейчас я в основном программирую на HTML, JavaScript / jQuery / CoffeeScript, CSS / LESS / SASS, хотя вскоре могу заняться написанием сценариев оболочки и RegEx, возможно, через LUA, C ++ и Java через несколько лет. Я хочу получить научное подтверждение размещения ключа. У меня есть идеи / требования, некоторые изобрели я сам, некоторые взяты или получены от других:

  • Почти все ключи могут быть переставлены
    • ВОЗВРАТ, Левый SHIFT, Левый КОНТРОЛЬ, ПРОБЕЛ, & TAB должны остаться, но все остальные, включая цифры, символы и клавиши перемещения, открыты для перемещения
    • Может быть оптимальным будет оставить zxcv & perhhaps s, чтобы остаться на месте, из-за распространенных привычек Отменить / Вырезать / Копировать / Вставить / Сохранить :)
    • Клавиша DELETE может быть перемещена туда, где находится CAPS LOCK :)
    • Маловероятно, чтобы совпадающие скобки, как () {} [] <>, стояли рядом друг с другом; увидеть ниже
  • Единственный точный способ ИМХО подсчитать использование ключа - это регистрация по ключам, а не подсчет ключей по файлам:
    • Большая часть «программирования» - это отправка электронных писем, публикация на форумах, твиттер, сообщения об ошибках, веб-серфинг и т. Д.
    • Я считаю, что большая часть использования клавиатуры - это «движение»; вкладки между полями, страница вниз, перемещение курсоров и т. д. Они не фиксируются выходными данными файла
    • Многие редакторы используют автозаполнение и макросы, поэтому закрывающие разделители:)}]> могут печататься не так часто, как открыватели, поэтому точные данные будут регистрироваться только при регистрации ключей и без разбора файлов.

Итак, мои вопросы:

  1. Что такое безопасные программные кейлоггеры с открытым исходным кодом, которые не будут загружать файлы, если вы сами не отправите отдельный файл? Я бы предпочел НЕ собирать имена и пароли для входа, не только для безопасности, но и потому, что это может бросить мой анализ ИМХО.
  2. Какие программы могут быть использованы на стороне клиента для перехвата подсчета отдельных и пар ключей? Или как лучше всего его построить?
  3. Где лучше всего найти добровольцев, чтобы помочь?

Лучшее исследование на данный момент: http://www.michaelcapewell.com/projects/keyboard/layout_capewell.htm

http://viralintrospection.wordpress.com/category/technology/keyboard-layouts/

& Wikipedia: Keyboard_layout # Non-QWERTY_keyboards_for_Latin_scripts

ТИА!

8
Интересный вопрос, но позвольте мне предложить один из моих собственных: лучше ли нам отказаться от шахматного расположения плит шоколада, которое мы использовали в течение десятилетий, для чего-то совершенно другого? Ignacio Vazquez-Abrams 12 лет назад 0
Ты имеешь в виду, что Ignacio переключается на совершенно новую раскладку, например, контурную клавиатуру Kinesis за 300 долларов США? Нет, просто переназначение клавиш в существующих дешевых клавиатурах можно найти в обычном магазине за 5-20 долларов. tomByrer 12 лет назад 0
Если вы привыкли к стандартной QWERTY (или другой) клавиатуре, может быть более эффективно просто использовать ее, а не изучать новую раскладку. Особенно, если вы регулярно используете другие компьютеры, на которых не будет настроенного макета. Bob 12 лет назад 0
Я думал об этом Бобе и предполагал, что это будет лучше самого себя. Хотя я читал, что у некоторых других нет проблем с использованием обоих макетов в один и тот же день, поэтому я хотел бы попробовать. Я привык говорить на 2 разных языках в один час, например, английский и итальянский. Хотя я все еще хочу назвать баклажан "меланзаной", хотя я не жил в Италии 12 лет :) tomByrer 12 лет назад 0
Кстати, чтобы люди могли получать ответы, вам нужно пинговать их, например, с помощью @tomByrer! slhck 12 лет назад 1
@ekaj да, это был просто пример для Тома, не хочу усложнять ситуацию slhck 12 лет назад 0
Я подозреваю, что лучшее, что можно сделать, это дать `<> {} []` (и другим ключам, которые в настоящее время требуют сдвига) свои собственные ключи - я бы не стал считать себя программистом, но я знаю, что именно это и находит большинство раздражает при написании скриптов bash. evilsoup 11 лет назад 2

2 ответа на вопрос

3
Daniel Andersson

Клавиши для перемещения в редакторах чаще всего адаптированы для максимально эффективного использования с QWERTY, и поэтому их, несомненно, потребуется переназначить, если вы измените раскладку клавиш и захотите оптимальное размещение всего, к чему вы стремитесь. Например, в Vim кнопки HJKL используются по определенным причинам с QWERTY, и, скорее всего, их необходимо будет переназначить обратно в то же место после изменения карты ключей.

Я имею в виду, что вам не очень поможет отслеживать движение и редактирование клавиш и использовать их в качестве основы для нового макета, так как они легко реконфигурируемы (в любом редакторе это стоит того, и мы говорим о программисте). layout, мы, скорее всего, говорим о Vim или Emacs), не должен мешать размещению буквенных клавиш и уже оптимизирован (опять же: мы не говорим о Notepad).

Вы пытаетесь решить проблему, которая является неэффективным способом повышения производительности, особенно для программиста, ** imho **. Было бы гораздо больше эффекта, если бы вы просто больше узнали об инструментах (еще раз: вероятно, Vim / Emacs). Вы обнаружите, что при написании символов тратится все меньше и меньше времени, а больше (но более эффективно) тратится на автозаполнение, автоматическую пометку, авто-отступ, быстрый поиск определения функций и т. Д. Клавиши чтобы сделать все это уже адаптированы, чтобы обеспечить эффективность, а большой прирост скорости приходит просто знакомство. Таким образом, я утверждаю, что другая раскладка клавиатуры прямо на сравнительно губительна для производительности, так как у вас уже есть многолет QWERTY упражнений. Если бы на QWERTY было потрачено столько же времени на аналитическое обучение, сколько люди, которые переключают макеты, проводят на Дворжаке, они также заметили бы повышение скорости. Скорость приходит с явным обучением.

Если вы были копирайтером / переводчиком / автором / и т. Д., Кто-то, кто на самом деле тратит свое время на работу с буквальным значением клавиш, то может помочь другой макет. Для программиста лучшим советом обычно является, по крайней мере, получить раскладку клавиатуры на английском языке, поскольку идиомы программирования были сформированы ими и их расположением клавиш (на моей локальной раскладке клавиш @$[]{}~все позади AltGr, что является довольно неоптимальным).

tldr: Dvorak / Colemak / [следующая «лучшая вещь после нарезанного хлеба»] (возможно) решает проблему только для тех, кто вводит много текущего текста на определенном языке (чаще всего на английском). Для программирования на необходимые ключи не распространяются те же ограничения, что и на литеральный язык, и, следовательно, он уже оптимизирован для своих целей (которые не просто «пишут так быстро, как вы можете»; они строятся больше на логических операциях. См. Vim). Я считаю, что время, потраченное на изучение альтернативных макетов, и путаница, которая наверняка возникает снова и снова, определенно не стоят усилий в большинстве случаев (не только ваше собственное замешательство; другие, которые садятся за тот же терминал, который вы использовали в последний раз, бросят вещи у вас), в том числе и у программиста.

Спасибо @ Daniel-Andersson за ваши идеи о Виме; полезно учесть, что некоторые редакторы разрешают переназначение клавиш перемещения! Мне нужно больше узнать о моих инструментах. Тем не менее, я делаю много редактирования с помощью многих инструментов; онлайн-редакторы и текстовые поля: форумы (как здесь;), gists, jsFiddle, GMail, Facebook, Twitter (не должен ли @ быть закрывающим ключом без сдвига?) ... и другие редакторы, такие как Inkscape, SynthMaker, Live, и т. д. Я хотел бы максимально унифицировать свои сочетания клавиш с помощью сопоставления клавиш, а затем сделать шаг вперед через app-config :) tomByrer 12 лет назад 0
2
cutrightjm

Используйте программу типа WhatPulse, чтобы записать, какие клавиши были нажаты и сколько раз.

Спросив в IRC-сети FreeNode о том, как собрать ключевые частоты, пользователь привел меня к этому:

  1. Получите ваш текст, например, программу (ы), и скопируйте их.
  2. Перейти на http://type.trmnl.org/
  3. Под кнопками обязательно снимите флажок «Автозапуск с содержимым буфера обмена при вставке».
  4. Затем вставьте вашу программу в текстовое поле.
  5. Нажмите Cntrl + Shift + K, чтобы открыть консоль.
  6. Введите count_digraphs()и нажмите Enter.

Результаты читаются следующим образом: "ar" 7 17 10 "ra"это означает, что «ar» нажимали 7 раз, «ra» нажимали 10 раз и все вместе «ar» и «ra» нажимали 17 раз вместе.

«Дополнительные параметры: вести учет частот нажатия клавиш. Представленный в версии 1.7 WhatPulse, он позволяет отслеживать количество нажатий каждой клавиши». https://whatpulse.org/wiki/Program_Settings_Tab_2 Сладкий, спасибо @ekaj! Я тоже буду смотреть на это! tomByrer 12 лет назад 0
Я думаю, что это лучшее решение, за исключением более навязчивого кейлогера. Кроссплатформенность и вывод XML / HTML - это благословение. Не хватает только поддержки биграммы / диграммы (последовательность двух смежных элементов). Обоснование: в английском языке не только «он» и «th» являются общими, но и во многих языках программирования (таких как C ++, JavaScript, CSS) «**; ENTER **» * очень * часто печатаются вместе. Так что, если есть клон WhatPulse, который это позволяет, то это будет лучше всего. А пока я выложу предложение на их форуме. tomByrer 12 лет назад 0
@tomBryer пытался обновить ответ для вас, надеюсь, это поможет ... и обратите внимание, я мог заставить его работать только в FF, а не в IE или Chrome ... не знаю почему. cutrightjm 12 лет назад 1
Да, это полезно несколькими способами! Исходный код: «К сожалению, это приложение не работает в IE, sry.»; IE иногда имеет странный синтаксис JS. tomByrer 12 лет назад 0