Обновить

Комментарии 72

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

В 2018 году в мире кастомных механических клавиатур (нет, статья совсем не о них)

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

Для Емакса.

Для Емакса.

Ну почему только в нем. Клавиша переключения языка - ну вот явно просится. И все Shift-Ctrl-Alt-Meta. Если музыкантам можно ножные педали, то почему программистам не перенять?

Как вы отличаете tap dance от 2 быстро нажатых подряд обычных клавиш, когда юзер нажимает 2ю клавишу не успев отпустить 1ю? Именно если он подразумевает быстрый ввод 2 символов, а не активацию tap dance.

Это зависит от назначения. Если его нет (именно по переходу key_1->key_2), то мы даже не пытаемся что-то отловить, и все нажатия проходят отдельно. Так же и с удержаниями – если нет значения удержания, сразу рассматриваем обычное нажатие. Никаких лишних проверок и ожиданий, если они не нужны.

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

НЛО прилетело и опубликовало эту надпись здесь

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

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

из-за своих тараканов в голове, не разрешаете им этого.

Оно банк в истории. Вдруг эта клавиатура прямо в консоли в виде HEX кода какой-нибудь зловред наберет.

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

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

Ну да, купить такую же клаву, проверить (КАК?), затем найти точно такую же программу и попытаться разобрать в обратную сторону (КАК???), затем взять скрипт с настройками пользователя и проверить его (КАК??????)

А в целом хорошая идея для хакинга - в обычную клаву впихиваем микроконтроллер типа ЕСП32, настраиваем прозрачным шлюзом с кейлогером, отправку по вайфаю (или комбинашка win+r + powershell, скрипт отправки письма) логов и дарим кому попало (желательно из самой верхушки, у них обычно компы самые незащищённые "патамшта шо это за окошко вылазит блин, уберите нахрен"). Модифицировать любую клаву не сложно.

Если вы такой сторонник доскональной проверки всего, что подключается/устанавливается на компьютер работника банка, тогда такой вопрос - вы с остальным прикладным софтом типа ворда и экселя тоже так делаете? А с китайскими клавиатурами и мышами? А вдруг там есп32, которая данные сливает?

НЛО прилетело и опубликовало эту надпись здесь

В компании где я работаю, все апдейты проверяются ИБ и на стабильность. Поэтому у меня в отделе до сих пор Excel 2013.

НЛО прилетело и опубликовало эту надпись здесь

чем вас не устраивает моё мнение?

А где у вас там мнение? Я увидел одни только эмоции. С таким пренебрежением рассказываете на весь интернет про едва знакомого человека («снежинка» «с тараканами», «больше она у нас не работала», «полетела дальше на биржу труда»), что аж читать неприятно.

К слову, есть вполне себе легитимные причины хотеть конкретную клавиатуру — больные суставы, например.

НЛО прилетело и опубликовало эту надпись здесь

Представьте себе, я на рабочее место в XXI веке всегда требовал стационарный десктоп с линуксом на борту (сейчас — ноут с 64Г оперативы), и представьте себе, мне никогда не отказывали. В последней конторе при этом, все машины кроме моей, были аймаки.

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

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь

По какой статье ее уволили?

НЛО прилетело и опубликовало эту надпись здесь

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

Крепостное право отменили 2 сотни лет тому. Не работодателю указывать, как мне работать, хоть на голове стоять буду. А кто не согласен - пойдет лесом. Адекватный работодатель не будет заморачиваться, что моя клавиатура состоит из 2 половинок, а не с одной

НЛО прилетело и опубликовало эту надпись здесь

Не будет, если не потребуется всю инфраструктуру, состоящую иногда из тысяч работников настраивать эксклюзивно под вас или лично вы сидите на каком-то выделенном компе

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

НЛО прилетело и опубликовало эту надпись здесь

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

Называть людей снежинками и банк единственной работой - что вы о себе возомнили? Или это такое внутреннее оправдание за собственный выбор? Я неудачник, но все равно поступил правильно?) Сочуствую

НЛО прилетело и опубликовало эту надпись здесь

Эта ветка комментариев уже порядком затянулась.

Всё же возвращаясь к проекту из статьи – он предназначен для повышения удобства и дополнительного функционала. Его использование не мешает вам пользоваться стандартными возможностями. Если на рабочем месте категорически запрещены подобные дополнения, это будет не очень приятно, для привыкших к дополнительному функционалу, но абсолютно ничего критичного в этом нет.

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

НЛО прилетело и опубликовало эту надпись здесь

Адекватный работодатель не будет заморачиваться, что моя клавиатура состоит из 2 половинок, а не с одной

У себя дома можете делать что-угодно. А на работе есть регламенты. Попробуйте притащить свою клавиатуру в ЦУП или даже в диспетчерскую РЖД. А на предприятиях критической инфраструктуры даже клавиатуры должны иметь сертификат безопасности.

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

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

У себя дома можете делать что-угодно.

Прикинь, я у себя дома делаю что хочу. И даже работаю тоже дома.

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

А я пару раз отказывался от подобных предложений. Садо мазо не привык заниматься и не собираюсь. Вот не было бы желающих играть в такие игры, то бы скорее работодатели задумались о комфорте работников. Но зачем, если полно желающих на колени ставать за копейки, как вы и советский товарищ Zara6502.

Вот не было бы желающих играть в такие игры

Это не желание. Такие требования, нередко, кровью писаны.

за копейки

Это Вы за копейки работаете, по сравнению с теми многомиллионными убытками, которые может принести использование не сертифицированного оборудования. Почему кто-то должен тратить время и деньги на тестирование Вашего оборудования на предмет безопасности? А без этого тестирования - рисковать штрафом до 15 миллионов рублей? Или Вы готовы подписаться под тем, что выплатите его из собственного кармана?

Садо мазо не привык заниматься

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

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

С чего вы взяли, что обеспечиваете мою безопасность? Я вообще то не в России живу

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

Или до Вас дойдет необходимость требований безопасности только тогда, когда все Ваши средства украдут с банковского счета или когда Вы не дождетесь скорой помощи или пожарной бригады?

Или до Вас дойдет необходимость требований безопасности только тогда, когда все Ваши средства украдут с банковского счета или когда Вы не дождетесь скорой помощи или пожарной бригады?

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

Я никого не оскорблял.

Чья фраза?

Садо мазо не привык заниматься

вы зациклились

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

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

Целых 15 слов, которые можно без потери общности заменить термином «джейсоноукладка».

Целых 15 слов, которые можно без потери общности заменить термином «джейсоноукладка».

Ничего себе умница, читаешь судьбу по байтам и линиям руки? Пряник себе купи тогда

Больше эта девушка у нас не работала.

И ее никто не видел:) Тело так и не нашли.

Клавиш не хватает, это да.
Но TapDance кажется слишком сложным, не?

Мне достаточно последовательных нажатий (например, "Ctrl+Shift+R, 1", "Alt+Insert, 2", ...).
Это реализовано с помощью меню в таких программах как autohotkey и hotkeyboard.
Первая клавиша - вызов меню, вторая - вызов элемента меню.

И можно легко сгруппировать действия и запомнить.

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

Есть 4 типа событий клавиши – нажатие, удержание, аккорд, модификатор; и каждый из них может вести к новым назначениям для всех клавиш (последовательные нажатия), где доступны все те же события, и те же дальнейшие назначения. Что из этого использовать, а что нет – полностью под вашим контролем. Любая комбинация валидна, и ни одна составляющая не является обязательной к использованию, и не зависит от прочих. Настраивайте так, как удобно вам, будь то только последовательные нажатия, или хоть только аккорды.

Сколько разных значений вы можете ввести нажатием одной клавиши

Есть клавиатуры, распознающие силу нажатия. Вот на них много всего можно ввести

Собственно, если скомбинировать с Вашим подходом, может получиться интересно, имхо

:) хотя на деле это удобно в играх, в работе пока не пригодилось.

Есть клавиатуры, распознающие силу нажатия.

Оно что, по MIDI интерфейсу работает?

Как обычная клавиатура. Но драйвер умеет эмулировать джойстики/рули/педали и вот это всё, и плюс немножко даёт вариативности при вводе.

Грубо говоря, по умолчанию всё есть клавиша. Можно только регулировать уровень, когда она считается нажатой. Но я могу указать, что в этой, этой и этой играх вот эта клавиша превращается в ось джойстика X, вот эта — в Y, а вот эта — в стик. Ну и все в таком духе. И так можно каждую клавишу переназначить, указать график нелинейности и прочее. Короче, любой клавише можно указать, что она есть — клавиша, курок, стик, сочетание клавиш или что-либо ещё, с кучей настроек. Классика — это WASD превращаются в джойстик, для этого даже пресет есть.

После этого управление в игре не меняется, но скорость персонажа регулируется пропорционально силе нажатия, а не «бежишь‑не бежишь». Можно бежать/ехать/плыть/лететь, плавно регулируя скорость, тихо подкрадываться и ставить клейморы, можно точно рулить техникой. То есть мы получаем плюсы обоих видов управления — геймпада и WASD+мышка. Главное, чтобы игра вменяемо работала с джойстиком — у некоторых игр бывают проблемы.

Ещё есть фишка, что в зависимости от силы нажатия вводятся разные буквы — типа, слабо нажал = строчная, сильно нажал = заглавная. Но по факту не очень удобно, хотя, может надо просто привыкнуть.

Насчёт MIDI не знаю — в стоке драйвер вроде такое не умеет, но оно тут просится, так что может умельцы сделают/сделали.

То есть можно реализовать - чем сильнее жмешь, тем быстрее едешь?

Да, так и есть. И для поворота так же работает — чем сильнее жмёшь, тем меньше радиус поворота. Более того, под это стандартный пресет предусмотрен. Единственное, в играх часто есть слепая зона и нелинейность, и это может мешать. И второе — тут нет механического отклика, что вот оно прожалось. Клавиши просто пружинят равномерно по всей глубине нажатия, не кликают тактильно.

там датчики Холла в клавишах вроде бы

Конкретно здесь, кажется, оптические свитчи.

Так точно, свичи оптические.

Оптика силу нажатия не распознает.

Да, но она не в курсе, что она не распознаёт, поэтому распознаёт.

Ну Ок! Урыли :)
С другой стороны если бы это было проще сделать на оптике, то это было бы более распространенное решение, а так на слуху только датчики Хола... :)

Датчики хола там стоят, они могут силу нажатия распознавать!

можно сделать так, чтобы у меня была скажем комбинация alt + h - это стрелка вниз, но после двойного нажатия на alt стрелка начинает двигаться только на h?

С двойным alt не получится, для системных модификаторов пока запрещены назначения по базовому нажатию, чтобы не вызывать лишние проблемы, но с другими клавишами вполне возможно:

Создайте слой, на котором у вас будет назначен keysim {Down} на базовое нажатие h, не добавляйте назначение на удержание, если хотите сохранить "повтор через удержание", назначьте на одном из основных слоёв на нужную последовательность вызов функции SetActiveLayers(имя слоя) (строковые параметры без кавычек).
И не забудьте на новом слое оставить назначение для возврата к основному набору SetActiveLayers(имя слоя 1, имя слоя 2, …).

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

Для сочетаний назначения {Down} с shift/ctrl их нужно обозначить модификаторами с разными значениями, и добавить на ctrl+h^{Down}, sh+h+{Down}, ctrl+sh+h^+{Down}. Или просто назначить эти вызовы на любые другие клавиши, если вы делаете целый «навигационный слой».

Назначение просто на alt+hdown: добавьте значение модификатора на alt, и из-под него назначьте keysim {Down} на h. Так же без значения удержания, если нужно поведение повтора.

Но всё же будьте осторожнее с назначениями на системные модификаторы.

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

А вот клавиши-префиксы со слепой десятипальцевой печатью сочетаются без проблем. И не требуют ломать ритм печати.

Не добавляйте назначения на те последовательности, которые будете использовать в потоке как два базовых нажатия, только и всего. #28199446

И как это поможет не ломать ритм печати? Я вообще-то по всей клавиатуре десятью пальцами стучу. Даже переключение языков и регистров у меня на однократном нажатии без сбоя ритма.

Осталось запомнить все эти варианты, причем для каждого софта свои вариации.

Вы о предустановленных слоях? Они больше для примера, но если брать их в качестве шаблона – подредактируйте назначения, заменив те, которые вы не будете использовать. Назначения, которыми будете пользоваться, запомнятся сами.

Я не осилил программу.

Что такое аккорд? Что такое модифиактор?

Например я хочу что чтобы по нажатию Ctrl+Win + X переходил в определенный слой. А дальше при нажатии одной цифировой клавиши запускалось бы приложение. Как это сделать?

Модификаторы и аккорды

Модификатор – клавиша, во время удержания которой вы можете обращаться к новым назначениям, без сброса дерева переходов. Чтобы отличать несколько назначенных модификаторов и их комбинации, при назначении мы указываем их номера, обычно порядковые. Можем назначить несколько клавиш модификаторами с одинаковыми номерами, тогда каждый из них будет вести к одним и тем же назначениям.
Допустим, на тильду мы назначим ввод текста "Hello", а на \ по удержанию назначим модификатор, пусть, 1. В gui перейдём к назначениям из-под этого модификатора, нажав по нему пкм, на нужном уровне (доступный модификатор имеет синюю границу клавиши, "активный" – чёрную). Добавим на тильду текст "World". Теперь обычное нажатие тильды вводит "Hello", а то же действие с удерживаемым \ – "World".
Если назначим ещё один модификатор, например на ' со значением 2, можем задать назначение из-под комбинируемого модификатора – пкм по каждому из них, чтобы почернели, и назначение на тильду ещё одного значения.

Аккорд или комбо – сочетание одновременно нажатых клавиш, которые вызывают назначенное вами действие. Как пример, с активным предустановленным слоем Chord test одновременное нажатие 1 и 2 в цифровом ряду выведет к печати "Hello".
У аккордов могут быть вложенные назначения – на этом же слое двойное нажатие аккорда 12 выведет уже следующее назначение. На этом тестовом слое назначено 6 уровней глубины, для примера. Задержка перед вводом "Hello" (изначально 250мс, но вы можете её изменить) вызвана как раз ожиданием возможного вложенного назначения. Нажатие аккорда 23, у которого нет вложенных назначений, выведет текст сразу же.
Так же аккорды сочетаются с модификаторами, и, хоть механически это получается единое одновременно зажатое сочетание, модификаторы не включены в аккорды. Пример: на этом же слое "включение" модификатора Alt покажет в списке аккордов новое назначение, для того же 12, которое вы можете вызвать нажав 12, пока удерживаете Alt.

Я в очередной раз предупрежу, что предпочтительно использовать назначения без системных модификаторов. Но всё же: добавьте значение пользовательского модификатора на win, другое на ctrl (каждая клавиша считается отдельно, поэтому если вам нужно поведение и с lctrl, и с rctrl, добавьте одинаковое значение модификатора каждому из них). Перейдя к назначениям из-под этого комбинируемого модификатора (пкм по каждому, чтобы цвет обводки назначенных модификаторов изменился с синего на чёрный), перейдите к x.

Если вы говорите об однократном действии, при котором вы хотите вернуться к "начальным" назначениям после запуска указанного приложения, то вам нужен не слой (отдельное дерево назначений), а именно вложенное назначение – тогда из текущего пути, где вы по комбинируемому модификатору перешли в x, нажмите на нужную цифровую клавишу и добавьте ей значение по нажатию – ActivateApp(путь_к_приложению) (строковые параметры без кавычек), с типом действия – функция.
Если вторым параметром добавите имя процесса, данная функция при вызове будет проверять, не существует ли такого процесса, и если есть, будет "разворачивать" или "сворачивать" его окно. Если процесса не существует – запускает по пути, как и ранее. Работает не со всеми процессами, к сожалению.
Я только что добавил эту функцию, обновите user_functions.ahk, если используете ahk версию скрипта, или просто возьмите новый tdfw.exe.

Если вам всё же нужен именно переход к слою, назначьте на x из-под комбинируемого модификатора функцию SetActiveLayers(имя_слоя), на этом слое добавьте назначение на нужную цифровую клавишу ActivateApp(…), как и в прошлом абзаце, и оставьте назначение на ещё какую-нибудь клавишу для возврата к основному набору слоёв – SetActiveLayers(имя_слоя_1, имя_слоя_2, …). Пока вы не смените набор слоёв, ваша цифровая клавиша будет отвечать за запуск/переключение указанной программы.

Привет, это команда GitVerse! У тебя крутая статья, будем рады видеть тебя в сезоне open source. Для этого просто поставь тег "сезон open source" – и ты участвуешь :)

Ясен хрен, что приложивший руку к созданию проекта увидел статью о нём через два дня после — самое время её найти и прочитать!

Забавно, история этого приложения началась с нескольких issue в репозитории его предшественника – qphyx. Я просто хотел аккорды, уж очень концепт долгого нажатия был мне неудобен, даже сделал имплементирующий код, а автора понесло.
Особенно заинтересовал перенос на плюсы — быстродействие меня не особо интересует, а проблема на AHK – ограничение функционала в некоторых приложениях – совершенно. Я ведь правильно понял, что оно может решить проблему?

И да, монструозные в этом проекте не только JSON-файлы — я из чистого интереса смотрел исходный код... =]

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации