Модифицированный Colemak для программирования

Существует ли модифицированная раскладка клавиатуры Colemak, разработанная специально для программирования?

Несколько дней назад я не особо разбирался в раскладке клавиатуры Colemak, и мне действительно нравится обычная типография, но у меня есть некоторые проблемы с частыми программирующими символами, такими как ; (точка с запятой). Было бы неплохо изменить макет с прямым отображением фигурных скобок и скобок.

Очевидно, я мог бы самостоятельно переназначить эти ключи методом проб и ошибок, но я надеюсь, что кто-то провел некоторое тестирование, чтобы определить оптимальное расположение для символов общего языка.

3 ответа

Фон

Это я делаю полтора часа презентации по истории и теории раскладки клавиатуры: https://www.youtube.com/watch?v=i1hK1qrdYtU

Я отношусь к этому очень серьезно и постоянно экспериментирую. Я одержим эффективной работой, и я показал очень убедительные результаты, так сказать, я гарантирую, что это очень стоит усилий.

В своем ответе я расскажу больше о теории, так как мои макеты в первую очередь приспособлены к моим конкретным потребностям в программировании и будут неприемлемы, например, для разработчика на Python, если он не настроит биграммы и символы уровня 1.

Используйте теорию и настройте ее под свои нужды.

Терминология:

  • Altgr: обычно правая клавиша alt позволяет вам писать иностранные символы или ударения.
  • Уровень 1: макет без клавиш-модификаторов (Shift, Altgr).
  • Уровень 2: Макет с Shift
  • Уровень 3: Макет с Altgr
  • Уровень 4: Макет с Shift + Altgr

Beta Keypad-Vim для программистов Colemak v3

Это правильно ориентированный макет, который я использовал в прошлом году:

Имейте в виду, этот макет был оптимизирован для:

  • vi (Обратите внимание, как клавиши со стрелками находятся справа, так же, как vi)
  • C Языки
  • APL (да, APL)
  • XML (вторичное рассмотрение)
  • Баш (set -o vi)

Он включал три основные радикальные теории раскладки клавиатуры:

  1. Направленные ключи Up Down Left Right Home End PgUp PgDn должен быть делегирован на уровень 3, все в пределах досягаемости для вашего естественного расположения пальцев.
  2. И то и другое Alt ключи должны быть превращены в Altgr, так что вы можете получить доступ к уровню 3 любой рукой.
  3. Числа должны быть сняты с верхнего ряда и организованы в клавиатуру. Общие символы калькулятора должны окружать его.

    • Также следует сказать, что макеты программистов в принципе убирают цифровые клавиши с уровня 1, потому что хороший программист вообще не должен часто использовать Numbers. Смотрите: https://en.wikipedia.org/wiki/Magic_number_%28programming%29

Вот как разыгрывались теории за год использования:

Теория 1 - Направленные ключи

ВЗРЫВНОЕ УЛУЧШЕНИЕ ДО ВСЕГО РАБОЧЕГО ПОТОКА, особенно редактирование документов (в отличие от программирования, где vi уже предоставляет эту функциональность)

  • Home а также End Ключи чрезвычайно полезны при правильном доступе.
  • Клавиши со стрелками незаменимы.
  • PgUp а также PgDn недоиспользованы, однако это может быть из-за скудного расположения клавиш в шахматном порядке, что заставляет вас растягиваться для Prior, В настоящее время тестирование происходит с левой стороны (на фото внизу этого ответа).

Теория 2 - AltGr

Это было необходимым требованием, в то же время, что у нас есть две клавиши Shift, две клавиши Altgr расположены слева и справа от пробела. Работа только с одним делала бы набирать текст болезненным процессом.

Хотя это необходимо, важно упомянуть, что небольшая боль может развиться, когда большой палец надавливает на них так часто. Маленькая цена, чтобы заплатить. Если бы вы могли получить уменьшенную раскладку, например:

Это, вероятно, решит проблему.

Другой проблеме, которая была бы огромной для большинства пользователей, был недостаток альтернативного ключа. Однако в Ubuntu вы можете получить доступ к большинству команд меню, используя HUD, что устраняет необходимость в 90% сочетаний клавиш, которые бы использовали Alt, Единственная проблема, с которой я иногда сталкивался, это отсутствие доступа к терминалам TTY. (Alt + Ctrl + F1) Я никогда не удосужился переназначить его, хотя должен был.

Теория 3 - цифровая клавиатура

Это было сложно, а именно из-за его левой ориентации. В предыдущих версиях я экспериментировал с перемещением клавиатуры на один уровень вверх, чтобы 0 и 1 находились в домашнем ряду, и с обратным прогрессированием числа (обратите внимание, как это происходит 3210 вместо 0123).

В конечном итоге я предпочел это, но настройка была довольно трудной, потому что:

  • Мышечная память для клавиатур чаще всего с правой стороны.
  • Горизонтально расположенные раскладки клавиатуры (которые фантастически глупы. Смотрите мое видео на YouTube), делают сложную цифровую клавиатуру, хотя я нашел лучший компромисс.
  • Обратный порядок чисел, который был необходим, потому что вы хотите, чтобы 0 и 1 (наиболее часто встречающиеся) были доступны указательным пальцем.

В конце дня (и многие месяцы адаптации к нему) я предпочитаю это, хотя я чувствую, что это всего лишь на 40% лучше, чем могло бы быть. Что еще более важно, я обнаружил несколько вещей:

  • + на самом деле было легче печатать на 3-м уровне, чем иметь его на 1-м уровне в углу или даже в верхнем ряду.
  • . был невероятно полезен на b

Имея это в виду, я решил поэкспериментировать, переключив цифровую клавиатуру вправо и клавиши со стрелками влево. В этой ориентации я остановлюсь на многих небольших улучшениях, не упомянутых, и на моих основных новых теориях.

Бета-программисты WADS-клавиатуры Colemak v1

Оптимизирован для:

  • C Языки ();//<< ""\n\tm_
  • удар /""<*&&||\\(\)^C
  • Редактирование документов ?!Shift_RControl_R

Теории удержания:

  • Обратные скобки: ориентация () меняется на )( очень предпочтительно. Это часть основной теории Колемака, которая гласит, что легче скатать пальцы от мизинца к большому пальцу. (Colemak - это раскладка, в которой акцент делается на перекатывании пальцев по руке, что Дворжак считает приоритетным). Особенно полезно для этой чрезвычайно распространенной триграммы C++ (); К этому было удивительно легко привыкнуть, хотя это кажется задом наперед.
  • Уровень 2 в основном нетронутый: это только для практической настройки. Это не очень важный слой, поэтому он поддерживается для мышечной памяти.
  • Управление между shift и z: лучший мод. Копирование, вставка, выбор всех и отмена больше не являются болезненными и неуклюжими, и теперь их легко перемещать пальцами.
  • Вернитесь на 3-й уровень справа мизинец: В VIM, o создает новую строку. Имеет практический смысл разместить Return на этот ключ для редактирования текста. Это оказалось очень удобно и быстро стало мышечной памятью.
  • Двойной кавычка среднего пальца: преступно иметь двойную кавычку на 2 уровне. Я нашел большое удовлетворение, когда он ставит его перед самой легкой клавишей верхнего ряда, 4,
  • ? на уровне 1: Человек, которого я люблю. Не нужно заканчивать с ручным переключением клавиш, это рай для написания документов.

Новые теории

  • Мизинец никогда не должен касаться строки пробела или даже клавиш Shift: преимущества перемещения этой клавиши управления на один уровень убедили меня в этом абсолютно. (Обратите внимание, у меня есть французская раскладка, которая превращает левый сдвиг в две кнопки.) В конце концов, это то, чем и был разработан страшный emacs pinky. Таким образом, клавиша Shift была помещена в домашний ряд. В то время как я испытывал желание также повернуть Capslock в клавишу Shift, и переместить назад на Alt+D Я собираюсь просто придерживаться клавиши Shift справа от o, По моему короткому опыту, я уже люблю это там, и не пропускаю то, что у меня было там прежде.
  • Вы никогда не должны заканчивать утверждение, параграф или предложение на уровне 2: из-за моего большого успеха в ? на уровне 1, я решил поставить ! там тоже, хотя и в дальнем углу. Я переместил его в дальний угол, потому что это не так часто, и ¬ а также ~ оба представляют ложные / не заявления. !=~Deconstructors(P & ¬Q), Однако основной упор заключается в том, что вы должны иметь возможность завершить оператор, абзац, предложение и т. Д., Не выполняя ключевую комбинацию, поскольку это нарушает последовательность действий.
  • Используйте мышечную память WADS: пока vi Если вы делаете указания для правой руки, любой, кто играл в видеоигру, привык делать движения правой рукой, поэтому следует помнить, что он вполне пригоден для движения левой рукой. Тем не менее, Vim будет переназначать его, чтобы последовать его примеру, что потребует некоторой корректировки.
  • Клавиатура должна находиться только на правой руке: как уже было сказано, это визуально более целесообразно, она держит 0 и 1 на указательном пальце и использует мышечную память, развиваемую при использовании клавиатуры.
  • Побег на уровне 3 a : Посмотрим, как это будет развиваться. Я попробовал это на тильде, но обычно забывал, что это было там. Как пользователь vim, мне нужно совсем немного Escape, но обычно я уменьшал эту потребность путем отображения inoremap поэтому клавиши со стрелками уровня 3 будут выходить (и перемещать курсор) при нажатии.
  • Уровень 3 C а также V должен быть заполнен очень распространенным не алфавитно-цифровым биграммом: на данный момент у меня есть это с */ так как это важно для комментирования, но оно может быть наполнено множеством разных вещей.
  • & на уровне 1 в положении смены: самый разочаровывающий персонаж, когда-либо пытавшийся нажимать во время смены. То же самое касается ^ который я использовал бы честно в регулярных выражениях. Если вы полагаетесь на них вообще, вам нужно найти для них лучшее место.
  • Постараюсь вставить и удалить на уровне 3 Z а также X,

Все остальное в основном просто отделка. Опять же, вы перемещаете их в зависимости от вашего варианта использования. Разработчик Python может захотеть поставить : на первом уровне, и поместите его в комбо с Return,

Неудачные теории

  • Shift + Backspace должен выполнить Delete Слишком запутанный и бесполезный.

  • 78/* bigram: На самом деле это был не так уж и плохо, но он был не очень полезен, учитывая, что биграмм идет в обоих направлениях. Это также требовало значительных усилий. Я думаю, что было бы лучше иметь персонажей на каждой руке, чтобы было проще комбинировать их в обоих направлениях.

  • Тильда Escape: чуть менее используется. Если вы все равно собираетесь растягиваться так далеко, вы можете нажать клавишу выхода, что я часто делал.

  • {} на уровне 1 справа от входа, а не в обратном направлении: это был ужасный и откровенно болезненный биграмм, очень неловко выступать на тот случай, если вам когда-нибудь понадобится {}, Лучшее место для отдельных, не связанных между собой символов (т. Е. Двух символов, которые вы не будете вставлять подряд)


Создание собственного макета

https://docs.google.com/spreadsheets/d/1LkvWvwjahVaJyaN9hmDdulrAN08x7gQEM6DT4NFkok4/edit

Я создал эту электронную таблицу, которая будет генерировать соответствующий код xkb для вставки в макет. Просто:

  1. Изменить символы на Layout Definition Page
  2. Это преобразует символы в юникод, которые объединяются в код xkb.
  3. Перейдите на страницу XKB, выберите строки и вставьте их в макет.
  4. Правильно идти о добавлении нового макета.

Теперь создание правильного макета на самом деле довольно сложно, поэтому я просто заменяю то, что уже есть в определении colemak (BACKUP FIRST, если вы допустите ошибку, вы вообще не сможете печатать, и, возможно, даже понадобится активная загрузка для исправить проблему.)

и это выглядит так:

sudo vim /usr/share/X11/xkb/symbols/us

// Colemak symbols for xkb on X.Org Server 7.x
// 2006-01-01 Shai Coleman, http://colemak.com/
// Akiva Abraham WADS-Keypad Programmer's Colemak

partial alphanumeric_keys
xkb_symbols "colemak" {

include "us"
name[Group1]= "English (Colemak)";

key <CAPS> { [    BackSpace,    BackSpace,       BackSpace,        BackSpace ] };
key <LSGT> { [Control_R, Control_R, Control_R, Control_R] };
key <SPCE> { [        space,        space,           space,     nobreakspace ] };

key <TLDE> { [U0021, U007E, U00AC, U00A4] };
key <AE01> { [U005B, U0021, U005B, U20AC] };
key <AE02> { [U005D, U0040, U005D, U00A2] };
key <AE03> { [U002F, U0023, U002F, U00A3] };
key <AE04> { [U0022, U0024, U0022, U00A5] };
key <AE05> { [U003C, U0025, U003C, U003C] };
key <AE06> { [U003E, U005E, U003E, U003E] };
key <AE07> { [U0026, U0026, U0026, U2030] };
key <AE08> { [U002A, U002A, U002A, U00BC] };
key <AE09> { [U0029, U007D, U0029, U00BD] };
key <AE10> { [U0028, U007B, U0028, U00BE] };
key <AE11> { [U005F, U005F, U002D, U2308] };
key <AE12> { [U003D, U002B, U003D, U230A] };

key <AD01> { [U0071, U0051, minus, U00A9] };
key <AD02> { [U0077, U0057, Home, U00AE] };
key <AD03> { [U0066, U0046, Up, U2191] };
key <AD04> { [U0070, U0050, End, U00B6] };
key <AD05> { [U0067, U0047, Prior, U2371] };
key <AD06> { [U006A, U004A, U0023, U2372] };
key <AD07> { [U006C, U004C, U0037, U00B0] };
key <AD08> { [U0075, U0055, U0038, U22A4] };
key <AD09> { [U0079, U0059, U0039, U00A7] };
key <AD10> { [U003B, U003A, U2234, U2234] };
key <AD11> { [U005C, U005C, minus, U0025] };
key <AD12> { [U007C, U00A6, U007C, U2262] };
key <BKSL> { [U0027, U0060, U0060, U2260] };

key <AC01> { [U0061, U0041, Escape, U2122] };
key <AC02> { [U0072, U0052, Left, U2190] };
key <AC03> { [U0073, U0053, Down, U2193] };
key <AC04> { [U0074, U0054, Right, U2192] };
key <AC05> { [U0064, U0044, Next, U2228] };
key <AC06> { [U0068, U0048, U0024, U2227] };
key <AC07> { [U006E, U004E, U0034, U22A3] };
key <AC08> { [U0065, U0045, U0035, U22A5] };
key <AC09> { [U0069, U0049, U0036, U22A2] };
key <AC10> { [U006F, U004F, Return, U2235] };
key <AC11> { [Shift_R, Shift_R, Shift_R, Shift_R] };

key <AB01> { [U007A, U005A, Insert, U2229] };
key <AB02> { [U0078, U0058, KP_Delete, U222A] };
key <AB03> { [U0063, U0043, U002A, U2282] };
key <AB04> { [U0076, U0056, U002F, U2283] };
key <AB05> { [U0062, U0042, U002E, U2022] };
key <AB06> { [U006B, U004B, U0030, U00BA] };
key <AB07> { [U006D, U004D, U0031, U00B9] };
key <AB08> { [U002C, U003C, U0032, U00B2] };
key <AB09> { [U002E, U003E, U0033, U00B3] };
key <AB10> { [U003F, U003F, U002F, U2020] };

include "level3(ralt_switch)"
include "level3(lalt_switch)"
};

Я понимаю, что этому вопросу уже год, но вот мой ответ, если он кому-нибудь еще поможет.

Это проблема, с которой я сталкивался чаще, чем я хотел бы уточнить.

Достаточно сказать, что нет, даже после нескольких месяцев поиска я пока не нашел подходящего "Colemak для программирования". Он имеет то же раздражение, что и обычная QWERTY, при чрезмерном использовании правильного мизинца для специальных символов, и было бы желательно переназначить его, но теперь, когда беспорядок закончен, немедленных решений не будет.

Есть только две вещи, которые вы можете сделать:

1) Сделать пользовательскую раскладку клавиатуры. Есть разные инструменты для этого на Win/Lin/Mac. Это аккуратно, так как вы можете просто переставить все по своему усмотрению. С другой стороны, огромным недостатком является то, что никто больше не использует вашу раскладку клавиатуры, и если вас когда-либо попросят напечатать что-нибудь на компьютере, у вас будут проблемы, так как ваша мышечная память совершенно другая.

2) Существует раскладка клавиатуры под названием Programmer Dvorak, которая призвана решить вашу проблему. Здесь недостатком является то, что программист Dvorak относительно неизвестен по сравнению со стандартной клавиатурой Dvorak, поэтому проблема та же, что и выше. Однако он только переставляет специальные символы, что означает, что вы все равно можете использовать стандартный Дворжак, если это требуется (и он гораздо более распространен, чем Колемак). Будьте готовы провести месяцы в переходе, хотя.

В качестве альтернативы, вы можете попробовать выбрать третий вариант и попытаться убедить сообщество Colemak в разработке дружественной для программиста версии colemak. Но это займет время, и я держу пари, что вы найдете несколько сторонников.

Вы смотрели широкоугольные моды dreymar на colemak.com?

Вы могли бы придерживаться; в середине клавиатуры для легкого доступа с [и] над и под ним, возможно?

Другие вопросы по тегам