LINUX.ORG.RU

Создание эргономичных расположений клавиш на Linux-системах

 , , , ,


1

2

В этой статье мы рассмотрим:

  • почему вообще может потребоваться ремаппинг;
  • как ремаппят другие;
  • как раскладка реализована у меня;
  • как сделать собственную раскладку’.

Кроме обычного ремаппинга, мы также коснёмся темы создания слоёв, их индикации, а также рассмотрим создание аккордов (chords). Всё это на уровне системы.

Посмотрим на стандартную раскладку клавиш

Раскладка QWERTY далеко не всегда наиболее эффективная и удобная. Это можно показать на примере 80% клавиатуры. Не будем смотреть на саму QWERTY-раскладку, т.к. на этот счёт есть отдельные сравнения именно расположения буквенных клавиш с тем же Dvorak’ом или Colemak’ом (1, 2, 3). Обратим внимание именно на контрольные клавиши. Посмотрим на левую половину клавиатуры:

  1. Бесполезный для многих Caps Lock, на месте которого могла находиться более полезная клавиша. Тем более, что место капслока довольно удобное для нажатия левой рукой.
  2. Control или Ctrl является одной из часто используемых клавиш, но находится он в крайне труднодоступном для левой руки месте, что может вызывать боли в руке.
  3. Клавиша Win почти не играет никакой значимой роли в большинстве DE и WM, но находится на удобном для нажатия левой рукой месте, на котором могла располагаться более полезная клавиша.
  4. Пробел можно было бы безболезненно уменьшить на одну клавишу с двух сторон. Бесполезная трата свободного места.
  5. В некоторых случаях Esc используется чаще, чем Tab. Но на клавиатурах он обычно расположен очень далеко от домашнего ряда (home row).
  6. Скорее субъективный момент, но, в зависимости от размера руки, дотягиваться до цифровых клавиш может быть сложно.

На правой половине клавиатуры важных управляющих клавиш меньше, но всё же можно отметить пару вещей:

  1. Клавиши-стрелки находятся очень далеко от домашнего ряда, из-за чего приходится отрывать руки от него при нажатии на них.
  2. Бэкспейс может для кого-то быть труднодоступным.

Как с этим разбираются другие

Некоторые люди на капслок назначают хоткей переключения языков. Другие меняют местами капслок и контрол, либо просто помещают контрол на место капса. Всё это делается через инструментарий X11. Но всё же подобное — даже не половина решения.

Есть также попытка решения проблемы через саму клавиатуру. Например, клавиатуры Leopold поставляются с обычной раскладкой, но у них также есть переключатели, позволяющие перемещать некоторые клавиши местами. Уже лучше чем первый пример по полноте, но всё ещё недостаточно.

QMK/ZMK-клавиатуры, позволяющие менять назначение любой клавиши на уровне клавиатуры благодаря прошивке. Прямых недостатков у этого варианта нет, если работа ведётся лишь на одной машине. К косвенным недостаткам можно отнести то, что таких клавиатур не так много и стоят они в среднем дороже. И идёт привязка к конкретной клавиатуре. Т.е. если мы работаем на несколько машин, то это начинает хорошо проявляться, особенно, если одна из машин это ноутбук, у которого будет стандартная клавиатура.

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

Более низкого уровня мы коснёмся дальше.

Как у меня работает раскладка

На самом деле, раскладка — это не что-то абсолютное и удобство использования клавиш зависит от конкретной клавиатуры. Для примера возьму клавиатуру ноутбука ThinkPad X220.

По расположению. Ctrl находится на месте Windows-клавиши. Эскейп на месте таба и наоборот. На месте капса клавиша XF86MyComputer — рандомная клавиша для назначения управляющей в StumpWM (что-то наподобии M-x для Emacs’а), но про пользовательский опыт этого оконного менеджера можно делать отдельную статью.

Дальше можно пойти по слоям. На старом месте Ctrl теперь включается слой, которые меняет ESDF клавиши на стрелки. По Shift+пробел включается нампад-слой, котрый меняет QWER, ASDF, ZXCV клавиши на клавиши цифрового ряда.

Перемещённый Ctrl работает как аккорд, т.е. для отправки хоткея можно его не удерживать, а просто нажать, отпустить и нажать нужную конечную клавишу — в систему отправится полноценный Ctrl-хоткей.

Переключение на слой сигналится ThinkLight’ом (лампочка над монитором): если произошло переключение, он включается, если обратно, то выключается.

Выход из слоя идёт по нажатию эскейпа.

Также есть таймер, который можно настроить на автоматический выход из слоя по истечению определённого времени.

Как это реализовано софтварно

Упоминалось, что обычные демоны-переключатели не подходят из-за возможной меньшей гибкости, т.е. нам нужен более низкий уровень. Под более низким уровнем имеется в виду чтение evdev-событий, отлов нужных и отправка своих через uinput. У питона есть готовые библиотеки, позволяющие нам заняться реализацией поставленной задачи.

Также у нас есть готовый скелет, подготовленный пользователем @t184256: https://gist.github.com/t184256/f4994037a2a204774ef3b9a2b38736dc

В целом, там же объяснена база ремаппинга на питоне и поиска названий нужных клавиш через evtest.

Но стоит дать несколько специфичных уточнений.

Аккорды реализованы через глобальные переменные и проверку их значений. Т.е. перед циклом мы можем прописать объявление переменной:

pressed_ctrl  = False

Дальше в цикле нужно включать/выключать аккорд по нажатию определённой клавиши:

if ev.code == evdev.ecodes.KEY_LEFTMETA and ev.value == 1:
	if pressed_ctrl == False:
		pressed_ctrl = True
	else:
		pressed_ctrl = False

И в цикле проверять то, включён ли аккорд:

if (pressed_ctrl and ev.value == 1 and ev.code != evdev.ecodes.KEY_LEFTMETA):
	ui.write(evdev.ecodes.EV_KEY, evdev.ecodes.KEY_LEFTCTRL, 1)

Если включён, то вместе с изначальной клавишей мы отправляем событие нажатия Ctrl.

После отправки закрываем аккорд:

if (pressed_ctrl and ev.value == 0 and ev.code != evdev.ecodes.KEY_LEFTMETA):
	ui.write(evdev.ecodes.EV_KEY, evdev.ecodes.KEY_LEFTCTRL, 0)
	pressed_ctrl = False

Переход на слой можно рассмотреть через пример нампад-слоя.

Перед циклом добавляем глобальные переменные:

pressed_shift = False
spc_layout    = False

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

В цикле смотрим, удерживается ли шифт:

if ev.code == evdev.ecodes.KEY_LEFTSHIFT:
	if (ev.value > 0):
		pressed_shift = True
	else:
		pressed_shift = False

И в цикле включаем слой, если нажимается пробел при нажатом шифте:

elif ev.code == evdev.ecodes.KEY_SPACE and pressed_shift:
	if (ev.value > 0):
		if spc_layout == True:
			spc_layout = False
		else:
			spc_layout = True
			pressed_shift = False
			meta_layout   = False

При включении слоя мы выключаем глобальную переменную шифта и выключаем остальные слои.

Также у меня для каждого слоя отдельный словарь, который соотносит изначальную клавишу с целевой, по аналогии с REMAP_TABLE. И по этому словарю в цикле идёт проверка клавиши:

elif (spc_layout and ev.code in SPACE_KEYS):
	ui.write(evdev.ecodes.EV_KEY, SPACE_KEYS[ev.code], ev.value)

Также можно рассмотреть индикацию перехода на слой. В моём случае она происходит через ThinkLight (включается/выключается лампочка). Можно написать такую функцию:

def send_layout_change_signal(signal):
	f = open("/sys/class/leds/tpacpi::thinklight/brightness", "w")
	if signal == "on":
		f.write("1")
	else:
		f.write("0")
	f.close()

В файл /sys/class/leds/tpacpi::thinklight/brightness отправляется значение 1 или 0, в зависимости от сигнала.

И таким образом мы можем дополнить включение/выключение слоя:

elif ev.code == evdev.ecodes.KEY_SPACE and pressed_shift:
	if (ev.value > 0):
		if spc_layout == True:
			spc_layout = False

			send_layout_change_signal("off")
		else:
			spc_layout = True
			pressed_shift = False
			meta_layout   = False

			send_layout_change_signal("on")

Но это если мы имеем дело со ThinkPad’ом. На десктопном ПК мне не удалось придумать индикацию переключения слоя, чтобы оно не зависело от Wayland’а/X11/терминала. Разве что через умные лампочки.

Также если нам не нужны постоянно включённые слои, можно сделать выключение слоя через определённое время. Для этого перед циклом можем определить глобальную переменную, определяющую время перехода на нампад-слой:

space_key_timestamp = datetime.datetime.now()

И переменную, определяющую таймаут в секундах, при истечении которого слой будет отключён:

space_key_timeout = 3

И при включении того же нампад-слоя вводим в переменную текущее время:

elif ev.code == evdev.ecodes.KEY_SPACE and pressed_shift:
	if (ev.value > 0):
		if spc_layout == True:
			spc_layout = False

			send_layout_change_signal("off")
		else:
			spc_layout = True
			pressed_shift = False
			meta_layout   = False

			send_layout_change_signal("on")

			space_key_timestamp = datetime.datetime.now()

А при вводе клавиши с нампад-слоя мы теперь можем проверять, не прошло ли время слоя, вычитая от текущего времени время перехода на слой:

elif (spc_layout and ev.code in SPACE_KEYS):
	time_difference = datetime.datetime.now() - space_key_timestamp
	# if time difference between now and entering space layout is less needed timeout
	if (time_difference.total_seconds() < space_key_timeout):
		# make space hotkey
		ui.write(evdev.ecodes.EV_KEY, SPACE_KEYS[ev.code], ev.value)
		# update timer
		space_key_timestamp = datetime.datetime.now()
		send_layout_change_signal("on")
	else:
		# else disable space layout and send default key
		ui.write(ev.type, ev.code, ev.value)
		spc_layout = False
		send_layout_change_signal("off")

По итогу

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

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



Проверено: maxcom ()
Последнее исправление: hobbit (всего исправлений: 1)

Не секрет, что QWERTY-раскладка не является чем-то эффективным в плане удобства.

Врёти, его сделали по механическим машинкам как раз потому что удобно (дальше есть пояснение, но тут всё равно наврано).

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

Control или Ctrl является одной из часто используемых клавиш, но находится он в абсолютно трудодоступном для левой руки месте, что может вызывать боли в руке.

Давай расскажу немгого про принцип размещения клавиш. Заметил, что все крайние левые клавиши в основном блоке почти ничего особенного сами по себе не делают? Сделано так, что левой руке можно расслабиться и немного обнять клавиатуру мизинцем и большим пальцем левой руки от таба до пробела. Когда ты нажимаешь ctrl или shift сами по себе, то ничего не происходит, рука может расслабиться без ущерба - вот это эргономика! Аналогично (хотя не так удобно) правая рука может встать в нейтральное положение либо упираясь большим пальцем под центром пробела, либо мизинцем на пространстве над стрелочками и большим пальцем где-то под M/Ь.

Почему capslock удобно (даже слишком удобно) расположен? Для машинистов офк. Которые до сих пор существуют, и которым как раз надо.

Control или Ctrl является одной из часто используемых клавиш, но находится он в абсолютно трудодоступном для левой руки месте, что может вызывать боли в руке.

Win-клавиша почти не играет никакой значимой роли в большинстве DE и WM, но находится на удобном для нажатия левой рукой месте, на котором могла распологаться более полезная клавиша.

Не согласен, ctrl сидит обособлено и его удобнее нажимать, чем meta (даже если клавиша дальше). Как тебе одно «абсолютно труднодоступное», а другое «удобное для нажатия»? Лапки?

По поводу дефолтов - хз, почему клавиша в луниксах редко подведена под что-то. Но вот для чего её МОЖНО использовать это другой вопрос - так как дефолт обычно пустой, можно и нужно забиндить самые удобные сочетания клавиш.

Пробел можно было бы безболезненно уменьшить на одну клавишу с двух сторон. Бесполезная трата свободного места.

Опять не согласен. Пробел сделан таким размером для того, чтобы его можно было нажать из абсолютно любой позиции на основном клавишном блоке, от тильды до Enter, даже тем людям, которые набирают исключительно указательными пальцами. Для них укороченный дефолтный пробел был бы как раз болезнен.

В некоторых случаях эскейп (Esc) используется чаще таба (Tab). Но он в клавиатурах обычно расположен очень далеко от домашнего ряда (home row).

В некоторых случаях printscr используется чаще, чем буква Х. Как бы да, но в список «проблем» особо не лезет. А конкретно для Esc - это паник-батон, ей отдельно стоять очень даже к месту, потому что по ней надо суметь лупить в любой момент.

Скорее субъективный момент, но, в зависимости от размера руки, дотягиваться до цифровых клавиш может быть сложно.

Попробуй руку наклонять «вперёд», т.е. левую направо или правую налево.

Для примера возьму клавиатуру ноутбука ThinkPad X220

Смешанные впечатления - для ноутбучной нормально, медиаклавиши вообще красота, но fn на месте ctrl или instert отдельно от delete это зло.

Про evdev скрипты мнения нет, хоткеи вызываю через dwm.

Bfgeshka ★★★★★
()

Не секрет, что QWERTY-раскладка не является чем-то эффективным в плане удобства.

Это не секрет, это враньё.

Не будем смотреть на саму QWERTY-раскладку, т.к. на этот счёт есть отдельные сравнения именно расположения буквенных клавиш с тем же Dvorak’ом или Colemak’ом (1, 2, 3). Обратим внимание именно на контрольные клавиши

Эм, ты только что писал про раскладку, а теперь пишешь что не будем на неё смотреть. Зачем начинал? Писал бы сразу про управляющие клавиши.

Control или Ctrl является одной из часто используемых клавиш, но находится он в абсолютно трудодоступном для левой руки месте, что может вызывать боли в руке.

Опять враньё, место совсем не труднодоступное.

Win-клавиша почти не играет никакой значимой роли в большинстве DE и WM, но находится на удобном для нажатия левой рукой месте, на котором могла распологаться более полезная клавиша.

Её роль зависит от того что ты на неё назначишь. У меня, например, ВСЕ хоткеи менеджера окон назначены на неё, т.е. это переключатель между общением с приложениями и обращением к WM (перемещение/ресайз окон, переключение и прочее управление ими, запуск прог).

Пробел можно было бы безболезненно уменьшить на одну клавишу с двух сторон.

Нельзя, его и так чрезмерно урезали.

В некоторых случаях эскейп (Esc) используется чаще таба (Tab). Но он в клавиатурах обычно расположен очень далеко от домашнего ряда (home row).

По-моему одинаково легко их нажимать. Если речь про набор текста, то там ни первое ни второе обычно не используется (хотя - таб для отступов). Если речь про хоткеи то забудь про домашние ряды.

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

Бесполезная трата свободного места.

А представь, на нормальных (не ноутбучных) клавиатурах ещё место между блоками клавиш есть (давай туда тоже что-нить засунем а то пропадает же!) и клавиши какие-то слишком большие, давай сделаем в 2 раза меньше и тгде их влезет в 2 раза больше не ту же площадь.

На самом деле, раскладка — это не что-то абсолютное и удобство использования клавиш зависит от конкретной клавиатуры.

Верно. А ещё от привычек и личных предпочтений, которые у всех разные. Не надо свои в абсолют возводить (это я про список выше).

Касательно того что разобрался с техникой перенастройки клавиш и поделился - одобряю, но «введение» можно было сделать проще: «мне не нравится стандартное расположение и решил его переделать».

firkax ★★★★★
()

Наконец-то статья по делу, а не «азбука для нубов», коих и так полон интернет, и не реклама очередного красношляпого гиммика.

Сам, впрочем, плюнул на всё это дело и юзаю qwerty + compose (с некоторыми собственными сочетаниями для compose, помимо дефолтных).

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 1)

Статья для вдумчивого изучения очень полезная, но начав редактировать, я наткнулся на это:

Клавиша Win почти не играет никакой значимой роли в большинстве DE и WM

Мягко говоря, очень спорно.

Во первых, во многих DE можно нажать Win и сразу набирать имя программы или документа из истории, очень удобный способ клавиатурного запуска программ.

Во-вторых, Win+пробел это достаточно распространённый современный способ переключения раскладок, причём похоже работающий на разных ОС и DE, я считаю, это очень серьёзная заявка на успех.

Про меню «Пуск» и его линуксовые аналоги упоминать не буду, это вещь, которой пользуются либо по привычке, либо когда не помнят точное название программы, и её надо найти методом тыка.

hobbit ★★★★★
()
Ответ на: комментарий от CrX

Сам, впрочем, плюнул на всё это дело и юзаю qwerty + compose (с некоторыми собственными сочетаниями для compose, помимо дефолтных).

Я на QWERTY вернулся с Colemak из-за Vim, чтобы hjkl не были раскиданы по всей клавиатуре. Да, можно все это отремапить, но ведь остальные команды подобраны семантически, и лучше не превращать удобные мнемоники просто в движения. Для русского и украинского подобрал пару машинописных раскладок из числа поставляемых с системой с идентичным расположением неалфавитных символов. Хитрую типографику ввожу через Compose. Мне удобно.

Vidrele ★★★
()

Клавиша Win почти не играет никакой значимой роли в большинстве DE и WM, но находится на удобном для нажатия левой рукой месте, на котором могла располагаться более полезная клавиша.

В Awesome на неё все дефолтные сочетания клавиш завязаны. Удобно, когда сочетания клавиш WM не пересекаются с другим софтом.

annulen ★★★★★
()

Было бы здорово иметь возможность использовать пробел в качестве кнопки-модификатора. Но пока я такого в линуксах не встречал.

FishHook
()

ТС - наваял чушь!

То, что задумался - молодец!

На десктопном ПК мне не удалось придумать индикацию переключения слоя, чтобы оно не зависело от Wayland’а/X11/терминала

Да ты умница! То-то делают программируемые клавиатуры…
По делу, смотри на Kmonad. Серьёзный проект. Жаль, что создатель болеет постоянно.

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

А, ну да, на низком уровне я не умею и не пользовался, а мнрение имею. Ну, имей, чО!

@FishHook Что ты хочешь, можно реализовать даже штатными средствами.

Eulenspiegel
()

Раскладка QWERTY далеко не всегда наиболее эффективная и удобная

Да, например ей неудобно набирать ноты. Однако кверти делали для набора текста. Обычного текста по буквам. Набор кода, работа в командной строке или упраление компом с клавиатуры это не основное её назначение.

ya-betmen ★★★★★
()
Ответ на: комментарий от FishHook

Да на уровне XKB это можно сделать, немного строчек в конфигурации. Но нужно разбираться, как потом новую конфигурацию XKB запускать… В общем, обычное линуксовское красноглазие.

PeleWin
()

Замечу, что от нажатия клавиши до её обработки приложением проходит целая куча преобразований и на каждом этапе можно (в некоторых случаях) вмешаться.

  • аппаратные преобразования внутри клавиатуры (переключатели, Fn, настройки прошивки и пр.)
  • преобразования драйвером клавиатуры
  • описанные ТС преобразования на уровне evdev-событий
  • преобразования XKB из сканкодов в keycode
  • преобразования XKB из keycode в keysym с учётом нажатых модификаторов и выбранной раскладки
PeleWin
()

Все привыкли к qwerty, это и есть эффективность достаточная

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

I-Love-Microsoft ★★★★★
()
Последнее исправление: I-Love-Microsoft (всего исправлений: 1)

По итогу мы получаем очень большой по возможностям инструмент

По итогу вы имеете велосипед без сидения пытаясь в слои на qwerty клавиатуре.

Объясню свою мысль, «Создание эргономичных расположений клавиш» начинается с создания эргономичного физического расположения этих самых клавиш. Вы пытаетесь организовать следующие слои раскладки не трогая нулевой, а ведь именно он будет использоваться 95% всего времени. Изменение расположения клавиш возможно только на кастомной клавиатуре, которая использует QMK/ZMK контроллер и позволяет все описанное вами выше.

Obezyan
()
Ответ на: комментарий от Obezyan

Вы пытаетесь организовать следующие слои раскладки не трогая нулевой, а ведь именно он будет использоваться 95% всего времени

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

Так-то с помощью перехвата событий можно как разные раскладки себе сделать: от дворака до модификаций колемака. Так и вообще сделать себе chordic input. И всё это на клавиатуре без QMK/ZMK контроллера.

rhubear
() автор топика
Последнее исправление: rhubear (всего исправлений: 1)
Ответ на: комментарий от Obezyan

Изменение расположения клавиш возможно только на кастомной клавиатуре, которая использует QMK/ZMK контроллер и позволяет все описанное вами выше.

нет!

Eulenspiegel
()
Ответ на: комментарий от rhubear

Нулевой уровень это изменение самой клавиатуры, физический. Разделение ее на две половинки, смещение кавиш и тд. Вот это.

Ремапить плоскую qwerty клавиатуру ноутбука не имеет смысла.

Obezyan
()
Ответ на: комментарий от Eulenspiegel

нет!

Я не про перестановку кейкапов туда сюда в рядах.

Obezyan
()
Ответ на: комментарий от FishHook

В целом, ремаппинг на уровне перехвата evdev-событий это также позволяет: например, поменять альт с пробелом местами или шифт. Если это имеется в виду.

rhubear
() автор топика
Ответ на: комментарий от Obezyan

Помимо QMK/ZMK-клавиатур существуют различные клавиатуры по типу X-Bows, которые хоть и программируемые, но идут со своей прошивкой.

Плюс на али есть различные сплиты от нонеймов с сомнительной программируемостью.

Но речь в статье изначально не об этом.

rhubear
() автор топика
Последнее исправление: rhubear (всего исправлений: 1)
Ответ на: комментарий от rhubear

нет, не это имеется в виду имеется в виду, что конрол, альт и мета - неудобные модификаторы, а пробел наоборот удобный, потому что большой палец у человека оттопырен на девяносто градусов от остальных четырех пальцев, и поэтому его можно положить на самую большую клавишу и использовать как универсальный модификатор. При этом не надо его ни с чем менять местами, когда пробел нажимается без комбинации - это пробел, а когда он нажимается в комбинации с другой клавишей - выполняеся забинденное действие, например, фокус на определенное приложение. Что-то подобное реализовано в https://spacelauncherapp.com/ и в https://www.spacemacs.org/

FishHook
()
Ответ на: комментарий от rhubear

Помимо QMK/ZMK-клавиатур существуют различные клавиатуры по типу X-Bows, которые хоть и программируемые, но идут со своей прошивкой.

Да, это понятно, я привел их просто как пример.

Но речь в статье изначально не об этом.

Я имел ввиду что вся статья это буквально как сделать из буханки хлеба троллейбус. Только потому что основная проблема эргономики qwerty клавиатур - физическая. Программно это не исправить.

Obezyan
()
Ответ на: комментарий от FishHook

В теории можно реализовать на уровне того же перехвата evdev-событий в связке с каким-нибудь оконным менеджером, который программируется на уровне конфига — например, StumpWM.

Т.е. фиктивное устройство генерит какую-нибудь рандомную обскурную клавишу при определённом сочетании пробела с другой клавишей. StumpWM обскурную клавишу подхватывает и делает фокус на приложении на основе каких-нибудь атрибутов окна, например.

StumpWM лишь пример. Возможно, в каком-нибудь DWM это также реализуемо.

rhubear
() автор топика
Ответ на: комментарий от Obezyan

Вы пытаетесь организовать следующие слои раскладки не трогая нулевой, а ведь именно он будет использоваться 95% всего времени. Изменение расположения клавиш возможно только на кастомной клавиатуре, которая использует QMK/ZMK контроллер и позволяет все описанное вами выше.

Рассуждение вида «Зачем тебе турник, если ты куришь». Это если не принимать во внимание, что проблемы традиционной физической раскладки в основном выдуманные, а решения самодельщиков зачастую сомнительны.

Vidrele ★★★
()
Ответ на: комментарий от Eulenspiegel

Зря. И в Vim пользоваться h,l - говна поесть. пацаны e,w,b,f,/, используют.

То есть, пацаны редактируют только целыми словами? Нет. Если ты освоил что-то сложнее hjkl, переходить между отдельными символами по-прежнему нужно.

Vidrele ★★★
()
Ответ на: комментарий от Vidrele

Сурьёзные пацаны пользуют или кастом или Dvorak, который для людей. Я использую custom dvorak. И там проблем нетъ ни с Vim ни с Emacs.

Eulenspiegel
()
Ответ на: комментарий от Eulenspiegel

Проблемы с Vim в Dvorak те же самые, что в любой другой латинской раскладке, не основанной на QWERTY или далеко от нее ушедшей. Нравятся hjkl, разбросанные по всей клавиатуре? Или, может быть, нравится печатать в Dvorak, но подредактировать .vimrc, чтобы в командном режиме все-таки была QWERTY? Ничего не имею против. Но меня не устроило ни то, ни другое. Поэтому я ушел от этих неудобств Colemak и вернулся к неудобствам QWERTY. Все равно глаза и мозг устают раньше, чем руки.

Что до кастомных физических раскладок, то это личный выбор, но никак не необходимость. Доски IBM 104 вполне эргономичны, если выбрать правильный стол, правильное кресло, занять позу работающего человека, а не сутулой летучей мыши.

Vidrele ★★★
()
Ответ на: комментарий от Vidrele

нравится печатать в Dvorak, но подредактировать .vimrc

нет

Разбросанные

Вот с этим вообще нет проблем, а j,k удобнее жать в Dvorak.

то это личный выбор, но никак не необходимость.

Когда стукнет не 25 лет, ты всё поймёшь.

Eulenspiegel
()
Ответ на: комментарий от Eulenspiegel

Вот с этим вообще нет проблем

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

Когда стукнет не 25 лет, ты всё поймёшь.

Возможно. Или, что скорее, правильная посадка убережет руки.

Vidrele ★★★
()
Ответ на: комментарий от Vidrele

Рассуждение вида «Зачем тебе турник, если ты куришь».

Нет, это рассуждения вида «зачем вы прикладываете на сломанную руку подорожник вместо гипса?».

Это если не принимать во внимание, что проблемы традиционной физической раскладки в основном выдуманные

Проблема не в самой раскладке, а в физическом расположении клавиш в этой раскладке.

а решения самодельщиков зачастую сомнительны.

Полностью согласен, даже не зачастую, а в подавляющем большинстве случаев. Но есть редкие очень удачные варианты которые действительно гораздо удобнее, с сохранением и дополнением qwerty раскладки.

Obezyan
()

Как у меня работает раскладка

Ctrl находится на месте Windows-клавиши

Эскейп на месте таба и наоборот. На месте капса клавиша XF86MyComputer

На старом месте Ctrl теперь включается слой

Вот эта перемена местами ctrl\win\tab и прочего не решает проблему того что вы все равно тянетесь куда-то мизинцем или засовываете большой палец под ладошку. Если хотите сделать нормально - ремапьте esc\shift\ctrl\win\alt на home row с двух сторон от воображаемой линии по середине клавиатуры, ставьте на удержание например. Если сделать так - руки фактически вообще не двигаются с home row. Дальше поверх этого можно уже накручивать свои переключатели на кастомные слои и все такое. Останется только клавиатуру с трекпоинтом завести чтоб к мышке не тянуться.

micronekodesu ★★★
()
Ответ на: комментарий от micronekodesu

под пробелом если кнопки есть тоже удобны может быть использовано

так же тачпад под пробелом полезен - наряду с тачпоинтом ага

qulinxao3 ★★
()

А вот самую бесполезную клавишу из нижнего ряда — клавишу контекстного меню — забыли.

MrCookie ★★
()
Ответ на: комментарий от Bfgeshka

Врёти, его сделали по механическим машинкам как раз потому что удобно (дальше есть пояснение, но тут всё равно наврано).

Первые печатные машинки имели механический дефект: клавиши «залипали», точнее заплетались молоточки, если нажатие клавиш происходило через небольшой, но вполне преодолеваемый даже не сильно быстрым оператором, промежуток времени. В качестве борьбы с этим дефектом и появилась QWERTY дабы _максимально_ замедлить скорость печати. Ну а дальше люди привыкли к _максимально_ неудобной раскладке, которую можно придумать.

Evgueni ★★★★★
()
Последнее исправление: Evgueni (всего исправлений: 1)

Бесполезный для многих Caps Lock, на месте которого могла находиться более полезная клавиша. Тем более, что место капслока довольно удобное для нажатия левой рукой.

Согласен, Caps Lock — клавиша бесполезная. Мне понравилось включать Caps Lock двумя шифтами. Клавиша Caps Lock освободилась, но что на неё повесить — я ещё не придумал.

Control или Ctrl является одной из часто используемых клавиш, но находится он в крайне труднодоступном для левой руки месте, что может вызывать боли в руке.

Я б не сказал, что Ctrl труднодоступна, но на секунду оставим этот вопрос.

Клавиша Win почти не играет никакой значимой роли в большинстве DE и WM…

Неправда. В Гноме на клавише Win завязано многое: вызов Overview (и запуск приложений из Overview), минимизация/максимизация окон, перенос окон между мониторами, переключение между рабочими столами, плюс я сделал кучу шорткатов с Win для запуска приложений (или активации, если приложение уже запущено).

…но находится на удобном для нажатия левой рукой месте, на котором могла располагаться более полезная клавиша.

Пора вернуться к «труднодоступной клавише Ctrl». Win находится в непосредственном соседстве с Ctrl. Так не может быть, что одна клавиша — в удобном для нажатия месте, а соседняя с ней — труднодоступная. Не может быть такой резкий переход всего за один шаг. Взять, например, клавишу ; — она расположена в удобном для нажатия месте (под правым мизинцем). Соседняя клавиша ' — чуть менее удобная (мизинец надо смещать вправо). Следующая клавиша Enter — ещё чуть менее удобная (мизинец нужно смещать больше). Но никто же не скажет, что клавиша ' находится в неудобном месте.

На правой половине клавиатуры важных управляющих клавиш меньше…

Как меньше? Слева три клавиши: Ctrl, Win, Alt, справа — четыре: Alt,Win,Menu,Ctrl`.

Для примера возьму клавиатуру ноутбука ThinkPad X220.

С этого стоило начинать. Более того, надо было ещё в заголовке статьи написать, что речь пойдёт о неполноценной ноутбучной клавиатуре, т. к. одно дело — нормальная, полноценная, полноразмерная клавиатура, и совсем другое — ноутбучный ублюдок.

Дальше не читал: способы выживания на ноубучных клавах мне неинтересны.

debugger ★★★★★
()
Ответ на: комментарий от MrCookie

А вот самую бесполезную клавишу из нижнего ряда — клавишу контекстного меню — забыли.

На клавишу Menu отлично встают функции Compose и 3rd level.

debugger ★★★★★
()
Ответ на: комментарий от debugger

Как меньше?

На ноутбуках нет правого Win — он никому не нужен.

MrCookie ★★
()

По Shift+пробел включается нампад-слой, котрый меняет QWER, ASDF, ZXCV клавиши на клавиши цифрового ряда.

На многих ноутов без отдельного NumPad есть его скрытый аналог. Доступен через клавишу Fn. Находится на клавишах 7890 UIOP JKL; M,./

Причём на клавиатуре может даже не быть доп. гравировок, указывающих на наличие скрытого NumPad (как у меня), но сам он присутствует.

MrCookie ★★
()
Ответ на: комментарий от debugger

Win находится в непосредственном соседстве с Ctrl. Так не может быть, что одна клавиша — в удобном для нажатия месте, а соседняя с ней — труднодоступная

Вполне может. На X220, например Win нажимается большим пальцем. Для Ctrl же нужно загинать мизинец под ладонь.

С этого стоило начинать. Более того, надо было ещё в заголовке статьи написать, что речь пойдёт о неполноценной ноутбучной клавиатуре, т. к. одно дело — нормальная, полноценная, полноразмерная клавиатура, и совсем другое — ноутбучный ублюдок.

Компактными бывают не только ноутбучные клавиатуры, а и десктопные. В статье выше рассматривался пример 80%, которая не является полноразмерной, но является десктопной.

rhubear
() автор топика

Апять нетакусики из дурки сбежали

DumLemming ★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.