Pull to refresh
18
0.1

Software Engineer

Send message

Где-то в недрах кода o3:

if (answer = FrontierMathPredefinedAnswersMap(input)))
  return answer;
else
  return evalMainLogic(input);

Это общее название программ для переназначения клавиш софтверным методом. Они более высокоуровневые чем клавиатурный firmware (QMK) и являются прослойкой между драйвером клавиатуры и GUI окном. За другие ОС не скажу, в Linux штатный клавиатурный компонент X.org (XKB) сам умеет переназначать клавиши без помощи стороннего софта, хотя можно и поставить сторонний ремаппер. Именно благодаря XKB нажатие Z печатает или Z или Я - сканкод один и тот же, состояние XKB (активный язык) разное.

Пользоваться примерно так (для простоты делаю ремап только английской раскладки):

# создать файл ~/.config/xkb/symbols/my_layout со следующим содержимым

partial alphanumeric_keys
xkb_symbols "remap_3" {
    replace key <AE03> { [ 3, numerosign ] };
};

partial modifier_keys alphanumeric_keys
xkb_symbols "alt_alt_3" {
    replace key <LALT> { [ Alt_L,  Alt_L,   NoSymbol,  ISO_Level3_Shift   ] };
    replace key <RALT> { [ Alt_R,  Alt_R,   NoSymbol,  ISO_Level3_Shift   ] };
    replace key <AE03> { [ 3, numerosign ], type[Group1] = "PC_ALT_LEVEL2" };
};

После этого:
-Как перезабить в английской раскладке Shift+3 с # на №:

$ setxkbmap  -layout "us+my_layout(remap_3)" -print | xkbcomp -I/home/$USER/.config/xkb - "${DISPLAY%%.*}"

-Как создать в англ. раскладке третий слой на Alt+Alt и привязать символ № к клавише "3" на этом слое:

$ setxkbmap  -layout "us+my_layout(alt_alt_3)" -print | xkbcomp -I/home/$USER/.config/xkb - "${DISPLAY%%.*}"

И так далее.

PS: Пока копался в конфигах Xorg нашёл там некую русскую раскладку под названием "unipunct" (/usr/share/X11/xkb/symbols/ru) - похоже всё-таки кто-то придумал конфиг с совпадающей пунктуацией ru/en, можете попробовать.

Не понимаю при чём здесь коды клавиш. Ремаперы позволяют задавать печать любого заданного символа для любой тройки <язык, состояние модификаторов, сканкод>. Хотите чтобы у вас в англ. раскладке по Shift+3 печатался № а не # - без проблем, сконфигурируйте в ремапере. Проблема как я уже сказал в том что вы не сможете написать консистентный конфиг, если хотите остаться только в пределах 2 слоёв, основного и Shift, и чтобы позиции всех не буквенных знаков совпадали.

Новый слой как раз эту задачу решит. Сделайте новый модификатор, активирующий этот слой, скажем на Alt+Alt. И в этом новом слое на клавишу 3 ставьте например №, в обеих раскладках. Т.е. в любой раскладке нажать Alt+Alt+3 напечатает №.

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

Создайте собственный слой в русской и английской раскладке (один и тот же для обеих раскладок), кладите туда какие хотите символы.
Красивого решения (модификация QWERTY и ЙЦУКЕН так, чтобы было 100% совпадение по знакам препинания и не буквенно-цифровым символам на основном и Shift слое) имхо не существует - в QWERTY и ЙЦУКЕН отличаются позиции знаков препинания в буквенной части клавиатуры, таких как точка и запятая, и мне не известно никаких авторитетных раскладок, решающих эту проблему.

В целом да, положение cmd более эргономично чем ctrl, тк она нажимается большим пальцем а не мизинцем.

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

Если бы всё было так просто, все разработчики и в особенности любители Emacs были бы монстрами с перекачанными запястьями (как у айкидошников) и сильными мизинцами. На деле же имеем RSI, Carpal tunnel syndrome и Emacs pinky syndrome как профзаболевание.

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

Так сделал, например, мой приятель: одновременно перешел на раскладку Halmak и добавил два новых слоя, которые назвал RED и BLUE. Вот его проект с ремаппингами для Линукс RedBlue.

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

Неплохо, но есть куда расти:

  • Главная проблема - модификаторы не симметричны и по большей части расположены неудобно. Например зелёный модификатор есть только под правую руку - как вы вводите зелёные символы с правой части клавиатуры? "нажатии right cmd стрелочками становились hjkl" - та же проблема, держать модификатор справа от пробела например большим пальцем одноимённой руки и остальными пальцами дотягиваться до hjkl - очень быстро заноет рука

  • Может уже модальное редактирование? :) Без модальности у вас все действия кроме печатания символов будут делаться в 2 нажатия (модификатор + клавиша).

  • Что такое синяя команда Vi?

  • Стрелки жёлтого слоя не согласуются со стрелками красного (или у вас опечатка)

  • На жёлтом слое нет нуля

  • Не вижу команд прокрутки (PgUp/PgDn в удобной позиции)

Ящетаю надо также отменить некое известное аниме, где глава титульного государства именуется не много не мало "Fuhrer".

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

Ну и не сильно длиннее, например взятие 2 столбцов из примера выше:

while (<>) {
    chomp;
    my @fields = split(/ /);
    printf("%s %s\n", $fields[1], $fields[3]);
}

Я слышал прогрессивная молодёжь нынче на модный аналог sed/awk перешла, называется Perl!

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

Как всегда 90% времени занимает эпическая битва с борроучекером))

Ох, дофига всего комментировать, но то, что сходу бросается в глаза:

Если вы представите, что WakerSlot содержит ссылку на WakerList, то никогда не сможете создать &mut WakerList где-либо ещё, поскольку основное правило времени жизни в Rust гласит, что у вас может быть либо одна мутабельная ссылка, либо множество иммутабельных, но не то и другое одновременно.

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

Это же в точности std::marker::PhantomData?

use std::marker::PhantomData;

#[derive(Debug)]
struct WakerList;

struct WakerSlot<'a> {
    _phantom: PhantomData<&'a mut WakerList>,
}

impl<'a> WakerSlot<'a> {
    fn new(_reference: &'a mut WakerList) -> Self {
        WakerSlot { _phantom: PhantomData }
    }
}

fn main() {
    let mut data = WakerList{};
    let slot = WakerSlot::new(&mut data);
    let another_ref = &mut data;

    println!("{:?}", another_ref);
}

https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=0275d214fee10f4c7b3bf1077d89c143

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

Эм я правильно понимаю что эта VM способна выполнять только свои опкоды и не может вызвать например библиотечную ф-ю через POSIX ABI, тк для этого придётся потерять контроль над регистрами и стеком?

Кстати, а в каких современных языках, кроме фортрана, он реально используется

Внезапно, в C и C++ для выхода из вложенных циклов. Насколько мне известно, это последнее оставшееся в живых "легальное" использование goto в высокоуровневом коде на C/C++.:)

Ещё он есть в Rust для тех же целей, под именем labelled break.

.file "test.c" - речь шла про сишный ассемблер.

Ответ для C - думаю потому что компилятор решил сгенерировать вызов memset и все SIMD оптимизации идут уже в нём.

Я вот тоже не политик, но я почему-то осознаю, что стоило ему минимально потрудиться над облеканием этого решения в политкорректную форму - и формально к нему с моральной точки зрения было бы уже не подкопаться. Кто-то посмеет обвинить в политическом/расистском решении? "Да что вы, я им thank you for what you have done сказал, и распинался, что мне жаль, что так вышло, но сами понимаете, юридические требования и всё такое. (Слова в интернете вообще постятся за бесплатно, какая разница что я там наплету в анонсе, "токсичные" разработчики из коллектива выкинуты, главная цель достигнута.)"

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

Бред какой-то если честно. Во-первых LLM очень любят забывать и игнорировать детали промптов, так что не знаю откуда он взял это "помнит каждую деталь", а во-вторых периодически выдают бессмысленный / логически некорректный ответ, за перепощивание которого появляется шанс уже самому быть раскатанным.

Вопрос разработчикам: обязан ли игрок, выигравший матч, доиграть до 12-го месяца игры, чтобы сдать годовую отчётность?

1
23 ...

Information

Rating
2,696-th
Location
Россия
Registered
Activity