В чем отличие windows от mac os

История развития современных компьютеров – это эпическая война за рынок между Apple и Microsoft. В этом соревновании сделан очередной ход. Microsoft выпустила первый собственный моноблок Surface Studio. А Apple начал продавать обновленную линейку MacBook Pro, клавиатура которого включает в себя сенсорную панель Touch Bar.

В IGate составили список самых интересных различий между компьютерами Apple и Microsoft.

Apple гордится своим дизайном

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

…но Microsoft почти не уступает

Моноблок Surface Studio от Microsoft совершил невозможное. Он выглядит не менее круто, чем любой из компьютеров Apple. Кстати, планшет Surface Pro 4 и ноутбук Surface Book тоже выглядят весьма симпатично. К тому же компьютеры под Windows разрабатывает множество производителей. И у Dell, и Asus тоже очень хорошие дизайнеры. Да, многие компьютеры под Windows выглядят не очень красиво или откровенно странно, но хорошие варианты есть.

Mac обычно намного дороже, чем PC

В среднем, компьютер Mac окажется намного дороже, чем PC с аналогичной комплектацией и возможностями. Фанаты Microsoft называют это «яблочным налогом». За исключением аномалий. Например, вышеупомянутого безумно дорогого Surface Book или раскрученных ноутбуков для геймеров. Средний ноутбук под управлением Windows обойдется примерно в $500. Для сравнения, MacBook Air, самый дешевый из современной линейки Apple, стоит от $1000. При этом вполне приличный PC-ноутбук можно купить даже за 300-400 долларов. Что называется, «почувствуйте разницу».

Windows намного удобней для геймеров

Геймеры предпочитают «винду» хотя бы потому, что PC намного легче кастомизировать. Серьезные игроки регулярно пересобирают свои компьютеры, меняя видеокарты и процессоры, добавляя оперативную память. Естественно, «черные ящики» Mac им не подходят. Даже очень крутой и современный MacBook через несколько лет устареет и вставить пару новых «плашек» оперативной памяти так просто не выйдет.

И к тому же многие игры на Mac все еще не идут. Эта проблема началась в далекие 90-ые и до сих пор продолжается. Когда Стив Джобс ушел из Atari, он, видимо, забросил компьютерные игры, а зря.

У Mac лучше техподдержка. Если она есть в вашем городе

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

С PC в этом плане проще. Что-то можно починить самостоятельно, что-то исправит сосед-сисадмин. А если и сосед не помог, то официальные запчасти есть в любом приличном сервис-центре. А если вы живете там, где есть официальный магазин Apple, то там наверняка скоро откроется и Microsoft Store с аналогичными услугами. Их пока что меньше, но Microsoft собственную сеть активно развивает.

Mac безопаснее в отношении вирусов

Компьютеров Mac намного меньше, а это значит, что создавать для них вирусы, шпионские программы и прочие гадости менее интересно. Хотя в последнее время хакеров все сильнее теснят, и они перебрасывают свое внимание на узкие сферы. Так что Apple усиленно работает над тем, чтобы обгонять хулиганов и злодеев и встраивает все новые и новые системы безопасности в свое ПО.

Операционные системы выглядят совершенно по-разному

Самое очевидное различие, не так ли? В Windows 10 Microsoft попытались объединить удобство и дружелюбность «семерки» с ориентированностью на сенсорный экран «восьмерки», и им это в общем-то удалось. Вы можете переключаться между режимами традиционного рабочего стола и «планшета». И традиционный рабочий стол выглядит как всегда, с меню «пуск» в нижнем левом углу, а «планшет» показывает вам меню с приложениями. macOS пошла своим путем: панель с самыми используемыми приложениями внизу и меню вдоль верхней части экрана.

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

У PC шире выбор железа

Множество производителей выпускают свои PC. Microsoft выпускает собственные компьютеры, но Acer, Lenovo, Dell и другие выпускают множество совершенно разных компьютеров. Среди этого многообразия можно найти сборку на любой вкус и кошелек.  Apple – монополист и в железе, и в программном обеспечении. Если вы хотите Mac, вы покупаете его у Apple.

У компьютеров на Windows все чаще встречается сенсорный экран

Со времен Windows 10 Microsoft настаивает, что будущее компьютеров – именно в сенсорных экранах. Все больше компьютеров от разных производителей получают сенсорный экран, а собственная линейка Surface – вообще квинтэссенция этой концепции.

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

Windows работает на разных типах устройств

Операционная система Windows 10 работает на ноутбуках, настольных компьютерах, планшетах, смартфонах и даже – если вас это вдруг интересует – очках HoloLens. Количество вариаций устройств исчисляется, пожалуй, десятками тысяч. А macOS работает только на ноутбуках и настольных компьютерах.

Клавиатуры тоже разные

Казалось бы, что можно сделать по-разному, располагая алфавитом и пятью десятками кнопок? Но нет. Если вы планируете в будущем менять систему, вам придется постараться, чтобы переучиться на совершенно другие команды. Скопировать, открыть программу, закрыть окно, сделать скриншот – все это делается совершенно разными наборами клавиш.

Mac идеально сочетается с iPhone

Это неудивительно, ведь у них один производитель. Если у вас и компьютер, и смартфон от Apple, вы можете отправлять смс-ки прямо с ноутбука. Да, PC тоже такое теоретически позволяет (если у вас смартфон под Windows, и установлена Cortana, и вы поставите дополнительное ПО), но это куда менее удобно.

Смешать, но не взбалтывать

Хотите получить лучшее от обеих систем? Тогда выбирайте Mac, на котором можно запускать не только macOS, но и Windows через виртуальную машину или Boot Camp. Это поможет не только геймерам, но и тем, кто только начинает знакомиться с компьютерами Apple.

#статьи


  • 0

Можно бесконечно смотреть на огонь, воду и срачи в IT-тусовке о лучшей операционке.

Иллюстрация: Apple / Windows / august96 / Pexels / George Keen / Wikimedia Commons / Colowgee для Skillbox Media

Мария Даровская

Журналист, коммерческий автор и редактор. Пишет про IT, цифровой маркетинг и бизнес.
Сайт: darovska.com.

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

Симпатия к той или иной операционной системе — это прежде всего эмоции. Тем не менее любители техники Apple почти поголовно влюблены в macOS. И вот что им нравится больше всего.

По словам любителей яблочной операционки, macOS и сама по себе работает очень стабильно, при этом железо в компьютерах от Apple тоже надёжное и долговечное.

Скриншот: Skillbox Media

«Я занимаюсь антивирусами и работаю на разных платформах — и Windows, и Mac. Без сомнения, macOS — гораздо более стабильная и удобная. У Apple очень ограниченный набор железа, а мир Windows наводнён дешёвыми компьютерами. Может показаться, что аппаратное обеспечение Apple стоит дороже, но если сравнивать их возможности, то становится понятно: у Apple очень конкурентные цены».

promixr,
пользователь Reddit


«Я всё ещё использую свой ПК с Windows — но в основном только для игр. А пару месяцев назад я купил MacBook Air M1 и теперь просто очарован им. До него у меня был Lenovo Ideapad за 350 евро — он хуже любого MacBook, поэтому переход на Apple был потрясающим опытом. Мой новый ноутбук кажется более прочным, чем все, которые я пробовал раньше, а вся начинка, от трекпада до клавиатуры, работает практически безупречно. Не то что Lenovo».

Unius_,
пользователь Reddit

macOS — единственный вариант для полноценной разработки ПО под технику Apple: макбуки, айпады и айфоны. Без macOS разрабатывать, тестировать и отлаживать приложения для яблочной экосистемы практически невозможно — ведь понадобится Xcode, а для других платформ её не выпускают.

Скриншот: Skillbox Media

Однако тут есть и минус — ПО для разработки под Apple платное.

«Разработка для macOS и iOS (Apple в целом) — это кошмар. Эти ребята дерут с вас деньги за всё: относятся к программированию под их платформу как к привилегии, символу принадлежности к „элитной“ группе. Нужно платить 99 долларов в год за программу для разработки. Что это за фанатизм?»

Marie-Eva Volmar,
CEO в Dallada Corporation на Quora

Немало веб-программистов работают исключительно на macOS, и им всё нравится. Ещё бы: тут есть и всё необходимое ПО (в отличие от Linux), и полноценная командная строка (в отличие от Windows). Даже те, кто не любят продукты Apple, признают, что запускать код на macOS невероятно удобно:

«Я признаю, что OS X от Apple меня впечатлила — по сути, она может запускать ваш код и без IDE».

Evan Sawyer,
пользователь Quora

Пользователи macOS считают, что эта система работает гораздо эффективнее Windows. Но, возможно, они просто не отделяют операционку от яблочного железа и никогда не использовали Hackintosh :)

«В 90% случаев в macOS всё работает безупречно, как обычно у продуктов Apple, а вот в 10% случаев какое-то нужное мне приложение в их экосистеме не работает или вообще не поддерживается. Тогда мне приходится обращаться к старому компьютеру с Windows. Но я думаю, что большинство обычных пользователей не сталкиваются с такой проблемой».

Инженер Фредо,
пользователь Reddit

AirDrop, iMessage, FaceTime, iCloud и так далее. Это и правда удобно: все твои устройства работают в единой экосистеме, и переход от одного к другому по-настоящему бесшовный.

«С точки зрения производительности MacBook — отличный выбор. И во многом благодаря различным вспомогательным приложениям вроде Alfred или диспетчера задач. Однако я бы не купил себе MacBook, если бы уже не использовал iPhone и другие устройства Apple. Не поймите меня неправильно, macOS великолепна, но есть сферы, в которых она слабовата.

Для меня главное преимущество macOS — бесшовная интеграция с другими продуктами Apple. Без этого всё, что я могу делать на своём Mac, можно делать и на компьютере с Windows».

PunyDev,
пользователь Reddit


«Я могу просматривать входящие сообщения как с macOS, так и с iPhone. Могу начать разговор или общение в мессенджерах на одном устройстве, а продолжить его на другом. Могу принимать звонки в macOS, если мой телефон находится в той же Wi-Fi-сети. При этом никакого дополнительного программного обеспечения не надо.

iCloud работает безупречно с iPhone, MacBook и iPad. Раньше у меня возникали проблемы с синхронизацией файлов в OneDrive, которыми я делился с женой, — тогда у меня дома ещё стояла Windows 10. Из-за этих проблем я даже перешёл на Dropbox. Теперь мы используем его для обмена файлами, а iCloud — для их хранения. Всякий раз, когда я перехожу на новый iPhone, мне просто нужно залогиниться в iCloud, и все мои данные появляются в приложениях «Фотографии» или «Файлы».

Jeff LeBlanc,
пользователь Quora, администратор SCCM

Пользователи, перешедшие на macOS с Windows отмечают качество взаимодействия с операционной системой — в том числе с помощью жестов.

«Я всю жизнь пользовался Windows, а потом перешёл на MacBook Air M1 — понравились отзывы. macOS отличается от Windows, причём в лучшую сторону. Всё, начиная от жестов трекпада и взаимодействия с пользователем до ОС в целом, кажется более интуитивным и плавным. Я ни разу не сталкивался с ограничениями в необходимых для работы программах.

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

Proxima_Centuari,
пользователь Reddit


«Пару недель назад перешёл на базовую модель M1 MacBook Air. Это мой первый продукт Apple за более чем 10 лет. Однажды у него произошёл один сбой — причину я так и не выяснил. Но в остальном это лучший компьютер, который у меня когда-либо был, — и я сомневаюсь, что когда-нибудь снова куплю ноутбук с Windows. Трекпад тонкий, крутой и совершенно бесшумный, мощности хватает для большей части моих задач. У меня есть и десктоп с Windows, но нужен он только для игр».

GRosasSilva,
пользователь Reddit

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

«Вредоносных программ и вирусов на маке практически нет. У моих родителей дома стоит ПК с Windows 10, а для путешествий я подарил им свой старенький MacBook. Каждый раз, приходя к ним в гости, я обычно проверяю их компьютер на вирусы. И в Windows стабильно нахожу до 600 нежелательных элементов. В итоге я даже забрал права администратора у отца. А что в macOS? Ноль…»

Jeff LeBlanc,
пользователь Quora, администратор SCCM


«Компьютеры от Apple не так сильно распространены, поэтому для macOS пишется меньше вредоносного ПО — хотя угроза постепенно растёт, например за счёт популярности кросс-платформенной Java. У Windows — гораздо больше установок, чем у других ОС для настольных компьютеров, поэтому чаще всего вирусописатели целятся именно в неё».

Akshay M,
пользователь Quora

Когда вы покупаете макбук, он уже работает как надо. Достаточно только авторизоваться в системе под своим Apple ID: все данные и конфигурации быстро переносятся с предыдущего девайса. В процессе использования вам также не понадобится делать каких-то сложных манипуляций, чтобы установить ПО или настроить систему. В Windows возможностей для настроек и установки софта будет значительно больше, но и сделать всё это нормально будет сложнее.

«Я думаю, что компьютеры Mac — лучший вариант для людей, которые хотят делать только то, что им действительно нужно. Это похоже на разницу между вождением и ремонтом автомобиля. Есть люди, которые любят возиться со своими автомобилями и тюнинговать их — в этом нет ничего плохого. Но есть и люди, которые просто хотят добраться из пункта А в пункт Б, и такие люди просто выбирают максимально комфортную машину.

То же с macOS и Microsoft Windows. Я пробовал Windows много раз — у нас на работе даже есть ноутбук с Windows, но, по моим ощущениям, он гораздо менее интуитивный по сравнению с макбуками. Однако тут надо отметить, что я всю жизнь пользуюсь Mac, поэтому у меня давно сформировались привычки».

Jorge Chambers,
инженер-программист, пользователь Quora

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

«Apple контролирует все пакеты аппаратного и программного обеспечения, обновления, поэтому каждый Mac работает бесперебойно: не возникает задержек или несовместимости по железу. Для Windows разные модели ноутбуков и даже персональные ПК могут не иметь подходящих драйверов для каждого компонента в каждой версии ОС, поэтому регулярно выскакивают проблемы с совместимостью и тормоза. Иногда из-за этого невозможно достичь ожидаемой производительности».

Akshay M,
пользователь Quora

Любителей Windows — тоже немало. Есть даже такие грешники, которые предпочитают ставить Windows… на устройства от Apple, хотя это скорее исключение из правил.

Скриншот: Skillbox Media

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

Ещё Windows — единственный вариант для геймеров. На macOS и Linux выбор игр сильно ограничен. Да и по-настоящему крутые игровые компьютеры с мощной графикой существуют только в мире Windows.

«Будучи тру-геймером, я люблю использовать Windows из-за её хардкорной графики и потрясающей производительности, а также простоты доступа по сравнению с macOS».

Akshay M,
пользователь Quora

А ещё на Windows существует больше бесплатного софта, а в ОС от Apple почти за всё нужно платить.

Для Windows существует больше разнообразных программ. Гораздо больше. Кроме игр есть куча софта для архитектуры, видеомонтажа, бизнес-аналитики и других задач — и многие из этих программ выпускаются в режиме only Windows.

Инженеры утверждают, что в Windows можно запускать среду разработки, сохраняя идентичность окружения, что довольно удобно. А ещё есть свой аналог CLI — WSL — и нет проклятущего Finder, как в macOS.

Скриншот: Skillbox Media

Многим нравится, что Windows поддерживает MST: при закрытии окна закрывается и приложение, а аудиомикшер позволяет регулировать громкость каждого приложения отдельно, а не только всех сразу. Плюс на «окнах» удобнее работать, используя только клавиатуру.

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

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

Akshay M,
пользователь Quora

По версии специалистов, организовать корпоративную рабочую среду, где есть AD, групповые политики Exchange, серверы, клиенты и тонкие клиенты на macOS или iOS, — нереально.

Скриншот: Skillbox Media

Инструменты разработки для Windows чаще всего критикуют за то же, за что и инструменты для Apple, — ценовую политику. Зато сам выбор софта на платформе от Microsoft, безусловно, шире.

«Инструменты разработки под Win хороши, но дороги — например, та же Visual Studio. Да и все инструменты разработки под Win в первую очередь выпускаются для Win (и конечно, не бесплатно), при этом остальные ОС поддерживаются гораздо хуже. А уж инструменты разработки с открытым исходным кодом на Windows поддерживаются и настраиваются гораздо хуже, чем в Linux и macOS».

Sergiy Reypolskyy,
разработчик в Apple, пользователь Quora

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

«Обычно я использую компьютеры с Windows для игр и программирования. По-моему, Windows — гораздо более развитая ОС с точки зрения программирования и игр. Существует множество вариантов настройки вашего ПК с Windows, и вы можете кастомизировать чуть ли не все компоненты. Да и в целом Windows очень гибкая — и хотя иногда это может быть недостатком, мне она нравится.

С точки зрения персонализации и настройки под себя macOS — ужасная система, потому что в ней очень мало пространства для манёвра. Конечно, Mac тоже можно использовать для разработки, но я предпочитаю Windows, потому что маковский терминал не умеет запускать сложные программы».

Sameep Rastogi,
технический энтузиаст, пользователь Quora

Чтобы полноценно работать с Windows, не нужно покупать какой-то специальный ноутбук, есть множество вариантов по любым ценам — от эконом-класса до мощных машин, не уступающих по ценам продукции Apple. А ещё вы всегда можете докупить оперативной памяти или сменить жёсткий диск. В случае с техникой Apple это сделать уже нельзя. Единственная возможность апгрейдить яблочный ноутбук или ПК — купить новую модель.

«Когда вы покупаете ПК с Windows (или любой ПК со стандартным аппаратным обеспечением), это ваш компьютер. Вы администратор. Вы можете изменять, настраивать и обновлять всё, что захотите. Вы можете собрать компьютер с нуля. Вы можете установить SSD любого размера, оперативную память, процессор, ОС, аккумулятор, устройства чтения дисков и так далее. Обновляйте своё оборудование в любое время — как хотите и гораздо дешевле. Я активно использовал Windows на множестве компьютеров, но никогда не сталкивался с синим экраном смерти, BSOD».

Evan Sawyer,
пользователь Quora


«Windows — это универсальная ОС, которая поддерживает всё, что вы ей предлагаете. Я могу использовать её с любой конфигурацией процессора, материнской платы, видеокарты, и она заработает под управлением Windows».

Collin Campbell,
пользователь Quora

Полноценно пользоваться операционной системой от Apple можно, только если вы счастливый обладатель фирменной техники. А вот купить и поставить копию Windows может любой человек — и оборудование может стоить хоть 300, хоть 3000 долларов.

«Покупка Mac в наши дни — это, по сути, покупка ПК от Gucci. Процессор, платы и другое железо имеют ту же архитектуру, что и железо других брендов, — во многих случаях они идентичны. Единственное, что удерживает вас от запуска macOS на ПК, — это один дополнительный чип на материнской плате. Однако в итоге вы платите бешеные деньги за этот маленький логотип Apple на корпусе».

Gregg Schoenberger,
специалист по компьютерной безопасности и системный администратор, разработчик, бакалавр компьютерных наук, пользователь Quora

Обычно выбор операционки зависит от того, чем именно занимается человек и какой софт для работы ему нужен. Например, пользователи 3ds Max используют Windows, потому что этот самый Max существует только в версии для Windows. А пользователи Final Cut Pro, напротив, используют компьютеры Mac, потому что этот софт не работает на Windows.

Скриншот: Skillbox Media

Современные macOS и Windows 10 — удобные и инновационные операционные системы с кучей классных приложений, функций и инструментов. Поэтому многие разработчики констатируют, что выбирают одну или другую ОС просто потому, что им так привычнее.

Скриншот: Skillbox Media

Однако есть и третья коалиция — суровые линуксоиды, «бздуны», бубунтоводы и прочие маргиналы от IT, которые плюются от «проприетарщины» и давно сидят на Linux, BSD-системах :)

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

Посмотреть курсы

Уровень сложности
Простой

Время на прочтение
50 мин

Количество просмотров 43K

Предисловие

Что ж, перед тем, как перейти к содержательной части, обозначу, в чем я вижу здесь проблему, стоящую упоминания. Компьютер — довольно сложное в управлении устройство. Если вам кажется, что это не так, попробуйте вспомнить свое первое знакомство с клавиатурой, когда вам надо на ней что-то напечатать, а где буквы — вы еще не выучили. Я вот помню, что у нас это была целая лабораторная работа — набрать на компьютере короткое стихотворение Пушкина из трех строф, и на это отводился весь академический час — 45 минут. И этого еще не хватало, потому что все время, отведенное на выполнение задания, занимал поиск «да где же тут эта чертова буква на этой чертовой клавиатуре».

Это понимали люди, стоявшие у истоков тех рек, чье мощное течение создало ландшафт IT-экосистемы в том виде, в котором мы имеем честь наблюдать его в настоящее время. Одним из таких людей был специалист по UI-UX интерфейсам, одно время возглавлявший данное направление в корпорации Apple, а также летчик-любитель Джеф Раскин. Именно он сформулировал основной принцип проектирования эргономичных (удобных для использования) интерфейсов, применимый равно как для взаимодействия людей и самолетов, так и людей и компьютеров  — принцип монотонности.

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

  • переучиваться больно и тяжело

  • выгоды от переучивания должны превышать затраченный на переучивание труд

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

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

Часть 1. Что не так и что с этим можно сделать?

  • Штатный Alt-Tab не работает (так, как должен). Решилось установкой бесплатной опенсорсной программы AltTab.

  • Непривычные (для виндузятника) хоткеи. Решается тем, что в штатных настойках клавиатуры отключаются почти все хоткеи, назначенные по умолчанию, а потом постепенно, по мере использования, перенастраиваются на привычные.

  • Штатное в Windows и в Ubuntu переключение на самые нужные приложения по Win-1, Win-2, Win-3 и т.д. не работает. Решилось установкой бесплатной программы Snap (спасибо за совет коллеге Алексею. Алексей, привет!)

  • Штатное переключение РУС/ЛАТ по Caps Lock есть и работает, но в моём специальном случае (надо часто подключаться по RDP к машинам с Windows) очень быстро задолбало его включать и отключать. Решилось созданием клавиатурной раскладки ruscaps в бесплатной программе Ukelele (точно такое же концептуально решение я использую и на Windows, которое подсмотрел в статье Ассемблер/дизассемблер клавиатурных раскладок Windows с помощью flat assembler здесь же на Хабре. Работает этот способ хорошо как на маке, так и на винде, по сути это оказался и там и там самый безглючный способ использовать переключение языка по Caps Lock. В Приложении техническая инструкция, как настроить[1]).

  • При использовании такого способа переключения клавиатурных раскладок очень хочется иметь наглядный индикатор, какая именно сейчас раскладка активна, а штатного индикатора состояния Caps Lock, которое и служит индикатором активной раскладки, в menu bar нет. Решилось установкой бесплатной программы Captin (программа работает хорошо, хотя по таймеру состояние Caps (нажато или нет) не опрашивает, отчего иногда кажется, что она зависла)

  • Как семантический эквивалент клавиши Ctrl в системе используется специфичная для маков клавиша Command, которой ни на каких других компьютерах нет. Тут пользователю надо либо переучиться, изменив свои десятилетиями наработанные клавиатурные привычки, либо попытаться настроить систему под себя.  Второй путь сложнее, но я пошел по нему, потому что Vim (для мака это будет MacVim, один из основных моих инструментов) ничего не знает про клавишу Command, и по умолчанию использует клавиатурные комбинации с клавишей Control.

  • Idea в клавиатурной раскладке по умолчанию на маках использует Command вместо Ctrl, но это решается перенастройкой клавиатурной схемы, что требует много телодвижений, но хотя бы работает  (скорее всего, она, как и MacVim, ловит скан-коды, и поэтому может использовать любую клавиатурную раскладку, но почему-то в комплект не положили схему «Idea classic как в Windows», где вместо Command был бы Control, и ее пришлось городить самостоятельно).

  • Очень непривычно себя ведут операции манипулирования с текстом в обычных текстовых полях и редакторах, в частности, при вводе текста в textarea в браузерах, и т.п. Сочетания Ctrl-Home, Ctrl-End, Shift-Ctrl-Home, Shift-Ctrl-End, и аналогичные сочетания с кнопками курсора делают не совсем то (или совсем не то), что они делают в Windows и в Ubuntu. Это приводит просто к ужасному дискомфорту, когда Idea и Vim ведут себя как надо (ну, почти), а редактирование текста в браузерной форме (набить заметку в Evernote) или штатном редакторе вроде TextEdit использует совершенно другие сочетания клавиш для тех же самых действий. Так жить совершенно точно нельзя и не нужно, и, к счастью, это можно почти полностью исправить с помощью настроек: DefaultKeyBinding (в Приложении инструкция, как настроить[2]).

  • горячие клавиши в Chrome (Ctrl-T, Ctrl-W, Ctrl-L, Ctrl-F, F3) не работают по дефолту, потому что вместо Ctrl тут для них нужно использовать Command. Решилось штатными настройками горячих клавиш в System Settings — Keyboard — Application hotkeys (заменить Command на Ctrl, и клавиатурное управление наиболее частыми действиями в Chrome становится консистентным с Windows).

  • Аналог «ножниц» (сделать скриншот части экрана) есть, но сочетание клавиш для его активации не такое, как в Windows. Решилось назначением хоткея Win-Shift-S (такой же, как в Windows) при помощи штатных средств (системные настройки хоткеев)

  • Некоторого привычного софта нету, а есть только аналоги. Решается тем, что приобретается новый опыт, как использовать эти аналоги для решения задач, справляться с которыми ранее помогал привычный софт. (привычный Tortoise Git или DBForge не поставишь, но в Idea есть почти вся нужная функциональность, которую нужно освоить, попутно освоив способы, как обходить присущие этой функциональности баги и шероховатости. Idea хорошая программа, и JetBrains хорошая корпорация, но UX дизайнеров уровня Раскина там нет ни одного, и, кажется, не будет никогда).

  • вместо Far Manager тут Midnight Commander. Некоторой функциональности в нем все равно нет, но базовые вещи (вроде пользовательского меню с пунктами «Отправить в MacVim», «Показать в Finder», «Скопировать путь» и т.п.) настроить вроде получилось (в Приложении инструкция, как именно [3]). Также есть возможность сделать список с самыми часто используемыми директориями, и SFTP-подключения (которые умеют использовать ключи из ssh-agent). В настройках программы Terminal нужно включить галку «Use Option as Meta key», и тогда оно станет реагировать на клавиатурные сочетания, включающие Meta key (это Alt на обычной клавиатуре), а их там немало.

  • кое-где всё равно используются только маковские хоткеи. Вставить текст из буфера в терминале получается только по Command-V. Решилось… никак не решилось, но таких мест мало, и я решил, что пока с ними можно смириться. Возможно, по мере обживания конфигов найдется способ что-то подправить и там.

  • Концепция «рабочих простанств» (Spaces) оказалась сравнительно удобной для использования вместе с виртуальными машинами, но пришлось немного подкрутить: — штатный хоткей для перемещения туда-сюда между пространствами это Ctrl-Left и Ctrl-Right, который использовать совершенно невозможно, потому что в моем представлении это сочетание клавиш должно использоваться для перемещения курсора между словами при редактировании текста. Это довольно просто перенастраивается штатными средствами (я сделал Ctrl-Alt-Shift-(Left | Right). Второй нюанс в том, что мне нужно, чтобы виртуальная машина ловила все хоткеи, в том числе те, для которых назначено действие в хост-системе (Alt-Tab, Win-1, Win-2, Win-3, …). И этого можно достичь, если в настройках Parallels включить пункт «Send macOs system shortcuts = Always». Но побочным следствием такого будет то, что по Ctrl-Alt-Shift-Right войти в виртуальную машину можно, а выйти из нее по Ctrl-Alt-Shift-Left уже нельзя! К счастью, нашелся workaround — если двинуть мышь вверх, чтобы показалось системное меню Parallels, то Ctrl-Alt-Shift-Left обработается хост-системой. Ну и еще одно, что надо упомянуть — по умолчанию macOs использует поведение «Automatically rearrange spaces based on most recent use», что, возможно, иногда оправдано, но нарушает вышеупомянутый принцип монотонности совершенно явным образом (Раскин бы не одобрил), и чаще всего лучше эту опцию выключить.

  • Еще часто критикуют Макось за ее «недостаточные» возможности, предназначенные для тайлинга (расположения окон приложений по рабочему пространству одного или нескольких мониторов). Тут ничего толкового сказать не могу, потому что мой сценарий использования — это окно приложения, распахнутое на весь экран и переход к этому окну «монотонным» способом — Vim: Win-1, Chrome: Win-2, Far (Terminal): Win-3 и так далее.  Однако в комментариях к предыдущей статье был упомянут проект https://github.com/ianyh/Amethyst — на первый взгляд его возможностей должно быть достаточно для тех, кто привык раскладывать из окон красивую мозаику (автор вдохновлялся xmonad, когда его делал). Я, возможно, когда-нибудь попробую его поюзать.

Часть 2.  Субъективные реплики к пунктам статей этой своеобразной серии.

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

Тут попробую записать свое восприятие проблем, которые при переходе на Mac испытали авторы двух перечисленных статей. Начну с более старой опытной «7 причин почему вам не стоит переходить на Mac, или как справиться с этой демонической машиной»

  • Бестолковый Dock Bar

Мне он не показался бестолковым, потому что я, пользуясь Windows с версии Windows 95, еще помню, как эволюционировал Task Bar там. Раньше он выглядел так:

но, начиная с Windows Vista, стал выглядеть очень похоже на Mac-версию. В Windows 7 иконки приложений стали более квадратными (чтобы их помещалось по горизонтали больше) — как и в Mac, добавились визуальные элементы индикации, отображающие текущий статус приложения (запущено, не запущено, сколько окон — как и в Маке, скачивает / занято процессом — лучше, чем в Маке), но в целом никаких неудобств докбар не вызвал, потому что этот элемент управления работает и ведет себя почти так же, как и в Windows. Здесь мы видим пример процесса, когда UI-элементы из разных систем эволюционируют, перенимая друг у друга лучшие черты, и превращаются плюс-минус в одно и то же. Мое имхо: докбар — хорошо сделано, еще и выглядит eye-candy.  Доставить программу Snap, и оно еще и на клавиши начинает реагировать монотонно.

  • Планшетный LaunchPad

Это просто второстепенное приложение для запуска других приложений, которое использует метафоры UI, принятые на планшетах — вроде «перетащите Pages на Numbers, чтобы сделать Productivity», и т.п. Никаких проблем это не вызывает, потому что этим можно пользоваться точно так же, как на iPad, если привык к такому UI-решению, либо не пользоваться вовсе, если оно не нужно (как мне). А вот облегчить переходный период пользователю iPad, который впервые купил себе Макбук зачем-то, такое приложение может.

  • Активные углы

Тут пока воздержусь от комментария, потому что не пользовался, и не имею hands-on experience, как оно. Но в теории, эта штука обладает свойством монотонности, то есть бросок мыши в конкретный угол экрана должен приводить к одинаковому результату. Поэтому, вероятно, если настроить эту фичу правильно, то она скорее полезна, чем вредна.

  • Окна — боль

Тут сценарии использования тоже могут отличаться, но по моим многолетним наблюдениям за собой и за окружающими, основной сценарий использования — это окно приложения, распахнутое на весь экран, и переключение между несколькими  такими «максимизированными» окнами по мере того, какое приложение нужно. История с тайловыми менеджерами, призванными городить хитрую мозаику из окон запущенных приложений, почти никогда не находит применений в практике (исключения — двухпанельный интерфейс файловых менеджеров вроде Far, mc, Total Commander — но и там удобнее оказалось это сделать в виде двух панелей внутри одного приложения, и дашборды мониторинга, где надо одновременно выводить много метрик (визуально оформленных как градусники, спидометры, энцефалограммы, и т.п.) в реальном времени — но и там оказалось удобнее сделать это в чем-то вроде Графаны). В результате эти кнопки светофорных цветов оказались не особо нужны, поэтому и не особо мешают (хотя то, что они ведут себя по разному для разных приложений — это стыд, позор и нарушение принципа монотонности Раскина — например, красная кнопка может просто «свернуть» приложение, а может отправить виртуальную машину в сон, что, хотя концептуально и похоже на «свернуть», а все же значительно отличается, потому что при отправке в сон, в отличие от свертывания, порвутся открытые сокетные соединения).

  • Full Screen — выбор между плохим и ужасным

Вообще в теории Full Screen режим — это хорошо, потому что вспомогательные элементы управления прячутся и не отвлекают внимания, а нужное в данный момент приложение занимает всё доступное место. На практике же это оказывается неудобным, потому что прячутся не только ненужные элементы интерфейса, но и нужные тоже (menu bar вверху, где нужно обычно не само меню, а часы, календарь, текущая раскладка, статус клавиши CapsLock), докбар (где нужна иконка System Monitor с текущей загрузкой процессора), и подобные мелочи. Эту информацию о текущем статусе системы наверняка можно реализовать как дополнительное приложение, которое будет показывать ее и в полноэкранном режиме тоже, в виде какого-нибудь полупрозрачного окна, но такое приложение надо либо искать, либо писать. Кстати, это мысль.

  • Trackpad

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

  • Touch Bar

Про Touch Bar либо хорошо, либо ничего. Его убрали в новых макбуках, и правильно сделали.

Теперь про статью «Перейти с Linux на macOS и не сойти с ума».

Проблема: Dock занимает много места, принося минимальную пользу.

Решение: убрать влево, включить автоскрытие.

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

Проблема: Command + Tab (аналог Alt + Tab в других ОС) показывает все приложения со всех рабочих столов, непригоден для переключения между несколькими окнами одного приложения.

Решение: использовать альтернативный переключатель окон AltTab, использовать жесты тачпада.

Тут благодарность автору за наводку на бесплатную опенсорсную программу Alt-Tab. Работает очень хорошо, хотя и не совсем так как в Windows, но в чем-то даже лучше.

Проблема: Тайлинг окон, нормальное разворачивание окна на весь экран.

Решение: Rectangle.

Для меня это не оказалось проблемой, потому что окно разворачивается на весь экран двойным кликом по заголовку (как и в Windows) и дальше остается в этом состоянии до перезагрузки. Еще можно зажать Alt на клавиатуре и мышкой нажать на зеленую кнопку — это, оказалось, как раз разворачивание окна на весь экран.

Проблема: Переключение раскладки клавиатуры по CapsLock для тех, кто быстро печатает и часто переключает раскладки.

Решение: Использование Karabiner-Elements.

А вот тут мне пришлось почесать репу. Я тоже быстро печатаю, и тоже привык использовать CapsLock для переключения РУС/ЛАТ. В Макоси есть для этого штатная функция (Use CapsLock to switch to and from US, что-то такое), и, сначала показалось, что это прямо то, что нужно. Оно действительно работает хорошо, пока не надо использовать странные сценарии, вроде таких как «подключиться по RDP к Windows-машине», где клавиатурную раскладку тоже нужно переключать по CapsLock. TL;DR: рабочим решением оказалось сделать то же самое, что и под Windows, а именно — сконструировать кастомную клавиатурную раскладку. На Маке это оказалось сделать (с помощью программы Ukelele) даже проще, потому что клавиатурная раскладка здесь — это файл в xml-формате, а на Windows — это полноценная DLL в формате PE, который еще разный под 32, 64 и ARM архитектуру должен быть. Под ARM (aarch64) у меня пока не получилось такую DLL собрать. Пичалька.

Проблема: Непривычная русская раскладка.

Решение: Использование раскладки «Russian — PC».

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

Проблема: Autocomplete в терминале.

Решение: Fig.

Тут я это решение использовать пока не стал, потому что мне настолько хитрое решение пока не нужно, а автодополнение названий веток в Git по Tab как-то само заработало (то ли после установки Homebrew, то ли сразу было).  Терминал (zsh) можно подвергнуть настройке, чтобы показывал текущую ветку git. Для этого в ~/.zshrc нужно дописать примерно такое (честно утянуто со StackOverflow):

Hidden text

parse_git_branch() {
    git branch 2> /dev/null | sed -n -e 's/^\* \(.*\)/[\1]/p'
}
COLOR_DEF='%f'
COLOR_USR='%F{243}'
COLOR_DIR='%F{197}'
COLOR_GIT='%F{39}'
NEWLINE=$'\n'
setopt PROMPT_SUBST
export PROMPT='${COLOR_USR}%n@%M ${COLOR_DIR}%d ${COLOR_GIT}$(parse_git_branch)${COLOR_DEF}%% '

Проблема: Docker-контейнеры тормозят.

Решение: нет.

Тут промолчу, ибо сам еще не налаживал и не запускал, но, говорят, что если надо запустить что-то x64, то придется использовать какое-то странное решение, в котором одновременно встречаются слова «docker» и «qemu», и оно вроде как еще потребляет много оперативы. (A work around is to spin up an x86 container using Colima, https://oralytics.com/2022/09/22/running-oracle-database-on-docker-on-apple-m1-chip/)

Проблема: Виртуальная машина с Windows и Linux.

Решение: UTM или QEMU.

Там автору подсказали, что «более лучшее» решение — это Parallels. Работает очень хорошо, Microsoft совсем недавно (февраль 2023) что-то даже официально сертифицировала, что Parallels для запуска Windows на макбуках с процессором Apple Silicon — это ОК, но все же Windows работает в режиме виртуальной машины там. То есть софт, который не лезет в ядро, вроде как работает весь, и с отличной, почти native, скоростью, но драйвера не запустятся, даже сравнительно безопасные, типа виртуальных сетевых интерфейсов для openconnect.

Часть 3.  Минусы и плюсы.

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

Сильнее всего не понравилось — это поведение курсора и системы выделения текста в штатных полях редактирования текста. Как-будто специально сделано, чтобы виндузятники не лезли на мак, и наоборот, с целью огораживания. Это оказалось возможным преодолеть (не полностью), но сама необходимость этим заниматься (гуглить нетривиальный способ настройки, а затем еще тюнить его под мои потребности) — создало достаточное количество предвзятости, немного даже переходящей в негатив. При этом в GUI линуксов, сколько их помню, редактирование текста вело себя так же, как в Windows, либо очень похоже.

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

Не понравилось, что частота сканирования внешней клавиатуры совсем уж мала (внутренняя работает без нареканий), и с нее Caps иногда не включается или не выключается, когда жмешь его слишком быстро. «А вы просто не жмите так, а жмите помедленнее, с чувством, с толком, с расстановкой», — ну, что ж, такой совет помогает. Но вот в Windows никогда не крохоборничали на этой частоте, и оно всегда, сколько помню, отрабатывало моментально (с одним исключением — когда у Windows забивается дисковая очередь — вот тогда даже ядро начинает тормозить в базовых функциях реагирования на мышь и клавиатуру)

Что еще? Ну, непривычное и неконсистентное поведение кнопок управления размером окна… но это не воспринималось, как напряг, просто местная особенность.

Остальное же плюс-минус точно такое же, как и в других компьютерах. Процессор с регистрами, память, прерывания, планировщик, тред, файл, диск, сокет, пайп, GUI с реактивной моделью, что тут еще можно придумать… [место для смайлика с разведенными руками ¯_(ツ)_/¯ ]

Теперь про плюсы.

  • не глючит (не глючит сама ОС, приложения, к сожалению, еще как глючат и вылетают, в том числе даже системный WindowServer)

  • не тормозит (заставить тормозить не удалось)

  • не греется и не жужжит вентиляторами (заставить греться и жужжать получилось, но для этого надо было выключить режим low power mode, запустить виртуалку с виндой и в ней запустить GPU Stress Test системы «волосатый бублик», при этом включив еще опции «cpu burner», и запустить этот cpu burner параллельно с бубликом)

  • производительный (10 ядер, быстрая оперативка, можно запустить виртуальную машину с виндой и в ней упомянутый «волосатый бублик», и он будет показывать 60 FPS на FullHD. Не знаю, умеет ли так какой-либо ноутбук на Windows).

  • почти все нужные тулзы тут есть сразу (ssh, openssl, base64, md5, curl, split, xmllint, вот это вот все) — на винде сейчас приходится доустанавливать даже банальный telnet. Git, как я понял, ставится вместе с Homebrew, и потом тоже доступен везде.

  • чего нету — обычно легко доустанавливается через Homebrew (типа jq для форматирования JSON или nginx, тоже бывает нужен, хотя бы захостить статику)

  • обнаружил, что MacVim довольно тесно интегрируется с шеллом (zsh), и может исполнять команды шелла прямо если написать непосредственно в текущем документе (а не в режиме командной строки), причем это корректно отрабатывает даже с sudo-командами, когда надо вводить пароль, или ping, которые выдают строку за строкой. Это повышает удобство использования CLI-утилит просто в разы, и на Винде такой тесной интеграции мне достичь не удалось, хотя дёргать CLI-утилиты таким способом можно и там тоже (см. Приложение [4]).

  • долго держит батарейку (не проверял, потому что у меня компьютер практически всегда подключен к сети, и мне это не очень актуально)

  • умеет подзаряжаться даже от старых и слабых телефонных зарядок. Как-то у меня не было нормального мощного зарядного устройства, и пришлось подключить разряженный макбук к тому, что было (телефонное зарядное устройство, 5В, 2А). Часов за 9 он набрал полный заряд. Не видел, чтобы виндобуки так умели делать.

  • есть Spotlight Search (тот самый, который по Command-Space) — вот он работает быстро и принцип монотонности соблюдает как раз просто канонически. Хотя, справедливости ради, похожий по назначению Everything Search Engine под Windows работает не хуже, если не считать, что функциональность последнего ограничена поиском только по именам файлов и каталогов.

  • вроде как не кряхтит даже под нагрузкой (две виртуальных машины, Ubuntu и Windows 11, Идея,  запущенный java-проект и запущенный dev server под node, запущенный Хром и остальное по мелочи) — и оно не демонстрирует никаких подтормаживаний, хотя график Memory Pressure в мониторе ресурсов уже устойчиво уходит в желтую зону. Это у меня с 16 Gb RAM конфигурация, а бывают и с 32.

  • экран и встроенная клавиатура, говорят, хороши, но я пользуюсь нормальной внешней клавиатурой со стандартной раскладкой, к которой приспособлен мой навык десятипальцевой слепой печати, и, по возможности, внешним монитором тоже (4K 60 Hz без проблем работает через HDMI), так что тут оценить в полной мере не могу.

  • Имеется rosetta2 (которую надо, сначала, доустановить с помощью sudo softwareupgrade rosetta2), которая позволяет запускать собранные (для Макоси, конечно) бинарники с архитектурой x86_64. Помогает, если нужно запустить что-то, что под aarch64 еще не успели пересобрать.

  • Как Ubuntu, так и ARM-версия Windows 11 запускаются в Parallels, причем работают почти что с native-производительностью. При этом Windows с помощью какой-то магии умеет запускать exe-шники всех трех архитектур: x86, x86_64 и ARM (hint: чтобы посмотреть, что это за exe-шник, можно использовать встроенную в макбук программу file). Однако полного чуда все равно не происходит, и кое-что все равно не работает: некоторые драйверы (у меня не завелся openconnect под Windows, потому что он не смог установить tap/tun драйвер, или что-то такое), а также не смогла загрузиться DLL с клавиатурной раскладкой, предназначенной для переключения по Caps Lock, собранная под x86_64, причем система ее видит и показывает в списке доступных клавиатурных раскладок, но не может использовать. Даже Microsoft Keyboard Layout Creator, запущенный под ARM-виндой, собирает DLL под архитектуру x86_64, и она под этой виндой оказывается неюзабельной.

  • красиво и престижно иметь красивый и престижный компьютер с яблоком (ну, тут, как бы да, но как бы и не совсем)

Эпилог. «И как тебе макбук»?

Скорее стал нравиться,  после полугодовой доработки напильником, но фэнбойства никакого не появилось и близко. Как-то так. У этого компьютера есть ощутимые плюсы, которые, может быть, перевешивают минусы, но минусы никуда не деваются, а устранить их могут только в корпорации Apple, потому что это вопросы идеологии. «Является ли такое поведение системы багом или фичей», вот в чем вопрос.

Стоило ли оно того (полгода не очень больших, но всё же усилий, чтобы сконфигурировать этот макбук под мои потребности виндузятника)? Вопрос почти риторический. В моем случае — скорее это было не оправдано. На Винде у меня уже всё было готовое (не только набор софта, но и клавиатурные привычки и наработанные способы решения задач), а тут мне пришлось многое заново изучать, настраивать и конфигурировать. Но с другой стороны, любим же мы компьютерщину не за то, что все настроено и работает, а именно за то, что можно возиться и все настраивать и улучшать :). По принципу «put the fun back into computing — use Linux, BSD…» Поэтому с одной стороны у меня присутствует ощущение потраченных не таких уж маленьких денег и затраченного не такого уж маленького времени, чтобы настроить этот компьютер до состояния, что я могу на нем работать (а при этом он работает плюс-минус с той же отзывчивостью, скоростью и безглючностью, что и хороший виндобук), а с другой стороны, есть и ощущение некоторого удовлетворения, что я смог разобраться и настроить как мне надо, и, в процессе этого, наверное, узнал какие-то новые нюансы взаимодействия с nix-системами.  От которых мы в ближайшем обозримом будущем никуда не денемся, потому что сейчас уже понятно, что мало-мальски важную инфраструктуру будут впредь выстраивать именно на открытых, а не на проприетарных решениях.

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

Еще некоторое удовлетворение приносит факт, что я осилил дописать эту статью :)

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

Приложение. Как конкретно настроить то, сё, пятое, десятое. Технические подробности.

Мои конфиги для макоси, которые описываю ниже, я разместил в репозитории https://github.com/konstlvov/macos.

  1. Переключение РУС/ЛАТ по CapsLock. Решается с помощью создания кастомной клавиатурной раскладки «ruscaps» с помощью программы Ukelele для Макоси. Эта программа предоставляет графический интерфейс, с помощью нажимания на кнопки в котором в конце концов получается примерно такой файл:

Hidden text

<?xml version="1.1" encoding="UTF-8"?>
<!DOCTYPE keyboard SYSTEM "file://localhost/System/Library/DTDs/KeyboardLayout.dtd">
<!--Created by Ukelele version 359 on 2023-02-24 at 13:05 (GMT+3)-->
<!--Last edited by Ukelele version 359 on 2023-02-26 at 13:38 (GMT+3)-->
<keyboard group="126" id="-5618" name="ruscaps" maxout="1">
    <layouts>
        <layout first="0" last="17" mapSet="ANSI" modifiers="Modifiers"/>
        <layout first="18" last="18" mapSet="JIS" modifiers="Modifiers"/>
        <layout first="21" last="23" mapSet="JIS" modifiers="Modifiers"/>
        <layout first="30" last="30" mapSet="JIS" modifiers="Modifiers"/>
        <layout first="33" last="33" mapSet="JIS" modifiers="Modifiers"/>
        <layout first="36" last="36" mapSet="JIS" modifiers="Modifiers"/>
        <layout first="194" last="194" mapSet="JIS" modifiers="Modifiers"/>
        <layout first="197" last="197" mapSet="JIS" modifiers="Modifiers"/>
        <layout first="200" last="201" mapSet="JIS" modifiers="Modifiers"/>
        <layout first="206" last="207" mapSet="JIS" modifiers="Modifiers"/>
    </layouts>
    <modifierMap id="Modifiers" defaultIndex="10">
        <keyMapSelect mapIndex="0">
            <modifier keys=""/>
        </keyMapSelect>
        <keyMapSelect mapIndex="1">
            <modifier keys="anyShift"/>
        </keyMapSelect>
        <keyMapSelect mapIndex="2">
            <modifier keys="anyOption"/>
        </keyMapSelect>
        <keyMapSelect mapIndex="3">
            <modifier keys="anyShift caps? anyOption"/>
        </keyMapSelect>
        <keyMapSelect mapIndex="4">
            <modifier keys="caps"/>
        </keyMapSelect>
        <keyMapSelect mapIndex="5">
            <modifier keys="command"/>
        </keyMapSelect>
        <keyMapSelect mapIndex="6">
            <modifier keys="anyShift command"/>
        </keyMapSelect>
        <keyMapSelect mapIndex="7">
            <modifier keys="anyOption command"/>
        </keyMapSelect>
        <keyMapSelect mapIndex="8">
            <modifier keys="anyShift anyOption command"/>
        </keyMapSelect>
        <keyMapSelect mapIndex="9">
            <modifier keys="caps command"/>
        </keyMapSelect>
        <keyMapSelect mapIndex="10">
            <modifier keys="anyControl"/>
        </keyMapSelect>
        <keyMapSelect mapIndex="11">
            <modifier keys="caps anyControl"/>
        </keyMapSelect>
        <keyMapSelect mapIndex="12">
            <modifier keys="anyShift caps"/>
        </keyMapSelect>
    </modifierMap>
    <keyMapSet id="ANSI">
        <keyMap index="0">
            <key code="0" output="a"/>
            <key code="1" output="s"/>
            <key code="2" output="d"/>
            <key code="3" output="f"/>
            <key code="4" output="h"/>
            <key code="5" output="g"/>
            <key code="6" output="z"/>
            <key code="7" output="x"/>
            <key code="8" output="c"/>
            <key code="9" output="v"/>
            <key code="10" output="§"/>
            <key code="11" output="b"/>
            <key code="12" output="q"/>
            <key code="13" output="w"/>
            <key code="14" output="e"/>
            <key code="15" output="r"/>
            <key code="16" output="y"/>
            <key code="17" output="t"/>
            <key code="18" output="1"/>
            <key code="19" output="2"/>
            <key code="20" output="3"/>
            <key code="21" output="4"/>
            <key code="22" output="6"/>
            <key code="23" output="5"/>
            <key code="24" output="="/>
            <key code="25" output="9"/>
            <key code="26" output="7"/>
            <key code="27" output="-"/>
            <key code="28" output="8"/>
            <key code="29" output="0"/>
            <key code="30" output="]"/>
            <key code="31" output="o"/>
            <key code="32" output="u"/>
            <key code="33" output="["/>
            <key code="34" output="i"/>
            <key code="35" output="p"/>
            <key code="36" output="&#x000D;"/>
            <key code="37" output="l"/>
            <key code="38" output="j"/>
            <key code="39" output="&#x0027;"/>
            <key code="40" output="k"/>
            <key code="41" output=";"/>
            <key code="42" output="\"/>
            <key code="43" output=","/>
            <key code="44" output="/"/>
            <key code="45" output="n"/>
            <key code="46" output="m"/>
            <key code="47" output="."/>
            <key code="48" output="&#x0009;"/>
            <key code="49" output=" "/>
            <key code="50" output="`"/>
            <key code="51" output="&#x0008;"/>
            <key code="53" output="&#x001B;"/>
            <key code="64" output="&#x0010;"/>
            <key code="65" output="."/>
            <key code="66" output="&#x001D;"/>
            <key code="67" output="*"/>
            <key code="69" output="+"/>
            <key code="70" output="&#x001C;"/>
            <key code="71" output="&#x001B;"/>
            <key code="72" output="&#x001F;"/>
            <key code="75" output="/"/>
            <key code="76" output="&#x0003;"/>
            <key code="77" output="&#x001E;"/>
            <key code="78" output="-"/>
            <key code="79" output="&#x0010;"/>
            <key code="80" output="&#x0010;"/>
            <key code="81" output="="/>
            <key code="82" output="0"/>
            <key code="83" output="1"/>
            <key code="84" output="2"/>
            <key code="85" output="3"/>
            <key code="86" output="4"/>
            <key code="87" output="5"/>
            <key code="88" output="6"/>
            <key code="89" output="7"/>
            <key code="91" output="8"/>
            <key code="92" output="9"/>
            <key code="96" output="&#x0010;"/>
            <key code="97" output="&#x0010;"/>
            <key code="98" output="&#x0010;"/>
            <key code="99" output="&#x0010;"/>
            <key code="100" output="&#x0010;"/>
            <key code="101" output="&#x0010;"/>
            <key code="103" output="&#x0010;"/>
            <key code="105" output="&#x0010;"/>
            <key code="106" output="&#x0010;"/>
            <key code="107" output="&#x0010;"/>
            <key code="109" output="&#x0010;"/>
            <key code="111" output="&#x0010;"/>
            <key code="113" output="&#x0010;"/>
            <key code="114" output="&#x0005;"/>
            <key code="115" output="&#x0001;"/>
            <key code="116" output="&#x000B;"/>
            <key code="117" output="&#x007F;"/>
            <key code="118" output="&#x0010;"/>
            <key code="119" output="&#x0004;"/>
            <key code="120" output="&#x0010;"/>
            <key code="121" output="&#x000C;"/>
            <key code="122" output="&#x0010;"/>
            <key code="123" output="&#x001C;"/>
            <key code="124" output="&#x001D;"/>
            <key code="125" output="&#x001F;"/>
            <key code="126" output="&#x001E;"/>
        </keyMap>
        <keyMap index="1">
            <key code="0" output="A"/>
            <key code="1" output="S"/>
            <key code="2" output="D"/>
            <key code="3" output="F"/>
            <key code="4" output="H"/>
            <key code="5" output="G"/>
            <key code="6" output="Z"/>
            <key code="7" output="X"/>
            <key code="8" output="C"/>
            <key code="9" output="V"/>
            <key code="10" output="±"/>
            <key code="11" output="B"/>
            <key code="12" output="Q"/>
            <key code="13" output="W"/>
            <key code="14" output="E"/>
            <key code="15" output="R"/>
            <key code="16" output="Y"/>
            <key code="17" output="T"/>
            <key code="18" output="!"/>
            <key code="19" output="@"/>
            <key code="20" output="#"/>
            <key code="21" output="$"/>
            <key code="22" output="^"/>
            <key code="23" output="%"/>
            <key code="24" output="+"/>
            <key code="25" output="("/>
            <key code="26" output="&#x0026;"/>
            <key code="27" output="_"/>
            <key code="28" output="*"/>
            <key code="29" output=")"/>
            <key code="30" output="}"/>
            <key code="31" output="O"/>
            <key code="32" output="U"/>
            <key code="33" output="{"/>
            <key code="34" output="I"/>
            <key code="35" output="P"/>
            <key code="36" output="&#x000D;"/>
            <key code="37" output="L"/>
            <key code="38" output="J"/>
            <key code="39" output="&#x0022;"/>
            <key code="40" output="K"/>
            <key code="41" output=":"/>
            <key code="42" output="|"/>
            <key code="43" output="&#x003C;"/>
            <key code="44" output="?"/>
            <key code="45" output="N"/>
            <key code="46" output="M"/>
            <key code="47" output="&#x003E;"/>
            <key code="48" output="&#x0009;"/>
            <key code="49" output=" "/>
            <key code="50" output="~"/>
            <key code="51" output="&#x0008;"/>
            <key code="53" output="&#x001B;"/>
            <key code="64" output="&#x0010;"/>
            <key code="65" output="."/>
            <key code="66" output="&#x001D;"/>
            <key code="67" output="*"/>
            <key code="69" output="+"/>
            <key code="70" output="&#x001C;"/>
            <key code="71" output="&#x001B;"/>
            <key code="72" output="&#x001F;"/>
            <key code="75" output="/"/>
            <key code="76" output="&#x0003;"/>
            <key code="77" output="&#x001E;"/>
            <key code="78" output="-"/>
            <key code="79" output="&#x0010;"/>
            <key code="80" output="&#x0010;"/>
            <key code="81" output="="/>
            <key code="82" output="0"/>
            <key code="83" output="1"/>
            <key code="84" output="2"/>
            <key code="85" output="3"/>
            <key code="86" output="4"/>
            <key code="87" output="5"/>
            <key code="88" output="6"/>
            <key code="89" output="7"/>
            <key code="91" output="8"/>
            <key code="92" output="9"/>
            <key code="96" output="&#x0010;"/>
            <key code="97" output="&#x0010;"/>
            <key code="98" output="&#x0010;"/>
            <key code="99" output="&#x0010;"/>
            <key code="100" output="&#x0010;"/>
            <key code="101" output="&#x0010;"/>
            <key code="103" output="&#x0010;"/>
            <key code="105" output="&#x0010;"/>
            <key code="106" output="&#x0010;"/>
            <key code="107" output="&#x0010;"/>
            <key code="109" output="&#x0010;"/>
            <key code="111" output="&#x0010;"/>
            <key code="113" output="&#x0010;"/>
            <key code="114" output="&#x0005;"/>
            <key code="115" output="&#x0001;"/>
            <key code="116" output="&#x000B;"/>
            <key code="117" output="&#x007F;"/>
            <key code="118" output="&#x0010;"/>
            <key code="119" output="&#x0004;"/>
            <key code="120" output="&#x0010;"/>
            <key code="121" output="&#x000C;"/>
            <key code="122" output="&#x0010;"/>
            <key code="123" output="&#x001C;"/>
            <key code="124" output="&#x001D;"/>
            <key code="125" output="&#x001F;"/>
            <key code="126" output="&#x001E;"/>
        </keyMap>
        <keyMap index="2">
            <key code="0" output=""/>
            <key code="1" output=""/>
            <key code="2" output=""/>
            <key code="3" output=""/>
            <key code="4" output=""/>
            <key code="5" output=""/>
            <key code="6" output=""/>
            <key code="7" output=""/>
            <key code="8" output=""/>
            <key code="9" output=""/>
            <key code="10" output=""/>
            <key code="11" output=""/>
            <key code="12" output=""/>
            <key code="13" output=""/>
            <key code="14" output=""/>
            <key code="15" output=""/>
            <key code="16" output=""/>
            <key code="17" output=""/>
            <key code="18" output=""/>
            <key code="19" output=""/>
            <key code="20" output=""/>
            <key code="21" output=""/>
            <key code="22" output=""/>
            <key code="23" output=""/>
            <key code="24" output=""/>
            <key code="25" output=""/>
            <key code="26" output=""/>
            <key code="27" output=""/>
            <key code="28" output=""/>
            <key code="29" output=""/>
            <key code="30" output=""/>
            <key code="31" output=""/>
            <key code="32" output=""/>
            <key code="33" output=""/>
            <key code="34" output=""/>
            <key code="35" output=""/>
            <key code="36" output="&#x000D;"/>
            <key code="37" output=""/>
            <key code="38" output=""/>
            <key code="39" output=""/>
            <key code="40" output=""/>
            <key code="41" output=""/>
            <key code="42" output=""/>
            <key code="43" output=""/>
            <key code="44" output=""/>
            <key code="45" output=""/>
            <key code="46" output=""/>
            <key code="47" output=""/>
            <key code="48" output="&#x0009;"/>
            <key code="49" output=""/>
            <key code="50" output=""/>
            <key code="51" output="&#x0008;"/>
            <key code="53" output="&#x001B;"/>
            <key code="64" output="&#x0010;"/>
            <key code="65" output=""/>
            <key code="66" output="&#x001D;"/>
            <key code="67" output=""/>
            <key code="69" output=""/>
            <key code="70" output="&#x001C;"/>
            <key code="71" output="&#x001B;"/>
            <key code="72" output="&#x001F;"/>
            <key code="75" output=""/>
            <key code="76" output="&#x0003;"/>
            <key code="77" output="&#x001E;"/>
            <key code="78" output=""/>
            <key code="79" output="&#x0010;"/>
            <key code="80" output="&#x0010;"/>
            <key code="81" output=""/>
            <key code="82" output=""/>
            <key code="83" output=""/>
            <key code="84" output=""/>
            <key code="85" output=""/>
            <key code="86" output=""/>
            <key code="87" output=""/>
            <key code="88" output=""/>
            <key code="89" output=""/>
            <key code="91" output=""/>
            <key code="92" output=""/>
            <key code="96" output="&#x0010;"/>
            <key code="97" output="&#x0010;"/>
            <key code="98" output="&#x0010;"/>
            <key code="99" output="&#x0010;"/>
            <key code="100" output="&#x0010;"/>
            <key code="101" output="&#x0010;"/>
            <key code="103" output="&#x0010;"/>
            <key code="105" output="&#x0010;"/>
            <key code="106" output="&#x0010;"/>
            <key code="107" output="&#x0010;"/>
            <key code="109" output="&#x0010;"/>
            <key code="111" output="&#x0010;"/>
            <key code="113" output="&#x0010;"/>
            <key code="114" output="&#x0005;"/>
            <key code="115" output="&#x0001;"/>
            <key code="116" output="&#x000B;"/>
            <key code="117" output="&#x007F;"/>
            <key code="118" output="&#x0010;"/>
            <key code="119" output="&#x0004;"/>
            <key code="120" output="&#x0010;"/>
            <key code="121" output="&#x000C;"/>
            <key code="122" output="&#x0010;"/>
            <key code="123" output="&#x001C;"/>
            <key code="124" output="&#x001D;"/>
            <key code="125" output="&#x001F;"/>
            <key code="126" output="&#x001E;"/>
        </keyMap>
        <keyMap index="3">
            <key code="0" output=""/>
            <key code="36" output="&#x000D;"/>
            <key code="48" output="&#x0009;"/>
            <key code="51" output="&#x0008;"/>
            <key code="53" output="&#x001B;"/>
            <key code="64" output="&#x0010;"/>
            <key code="66" output="&#x001D;"/>
            <key code="70" output="&#x001C;"/>
            <key code="71" output="&#x001B;"/>
            <key code="72" output="&#x001F;"/>
            <key code="76" output="&#x0003;"/>
            <key code="77" output="&#x001E;"/>
            <key code="79" output="&#x0010;"/>
            <key code="80" output="&#x0010;"/>
            <key code="96" output="&#x0010;"/>
            <key code="97" output="&#x0010;"/>
            <key code="98" output="&#x0010;"/>
            <key code="99" output="&#x0010;"/>
            <key code="100" output="&#x0010;"/>
            <key code="101" output="&#x0010;"/>
            <key code="103" output="&#x0010;"/>
            <key code="105" output="&#x0010;"/>
            <key code="106" output="&#x0010;"/>
            <key code="107" output="&#x0010;"/>
            <key code="109" output="&#x0010;"/>
            <key code="111" output="&#x0010;"/>
            <key code="113" output="&#x0010;"/>
            <key code="114" output="&#x0005;"/>
            <key code="115" output="&#x0001;"/>
            <key code="116" output="&#x000B;"/>
            <key code="117" output="&#x007F;"/>
            <key code="118" output="&#x0010;"/>
            <key code="119" output="&#x0004;"/>
            <key code="120" output="&#x0010;"/>
            <key code="121" output="&#x000C;"/>
            <key code="122" output="&#x0010;"/>
            <key code="123" output="&#x001C;"/>
            <key code="124" output="&#x001D;"/>
            <key code="125" output="&#x001F;"/>
            <key code="126" output="&#x001E;"/>
        </keyMap>
        <keyMap index="4">
            <key code="0" output="ф"/>
            <key code="1" output="ы"/>
            <key code="2" output="в"/>
            <key code="3" output="а"/>
            <key code="4" output="р"/>
            <key code="5" output="п"/>
            <key code="6" output="я"/>
            <key code="7" output="ч"/>
            <key code="8" output="с"/>
            <key code="9" output="м"/>
            <key code="10" output="ё"/>
            <key code="11" output="и"/>
            <key code="12" output="й"/>
            <key code="13" output="ц"/>
            <key code="14" output="у"/>
            <key code="15" output="к"/>
            <key code="16" output="н"/>
            <key code="17" output="е"/>
            <key code="18" output="1"/>
            <key code="19" output="2"/>
            <key code="20" output="3"/>
            <key code="21" output="4"/>
            <key code="22" output="6"/>
            <key code="23" output="5"/>
            <key code="24" output="="/>
            <key code="25" output="9"/>
            <key code="26" output="7"/>
            <key code="27" output="-"/>
            <key code="28" output="8"/>
            <key code="29" output="0"/>
            <key code="30" output="ъ"/>
            <key code="31" output="щ"/>
            <key code="32" output="г"/>
            <key code="33" output="х"/>
            <key code="34" output="ш"/>
            <key code="35" output="з"/>
            <key code="36" output="&#x000D;"/>
            <key code="37" output="д"/>
            <key code="38" output="о"/>
            <key code="39" output="э"/>
            <key code="40" output="л"/>
            <key code="41" output="ж"/>
            <key code="42" output="\"/>
            <key code="43" output="б"/>
            <key code="44" output="."/>
            <key code="45" output="т"/>
            <key code="46" output="ь"/>
            <key code="47" output="ю"/>
            <key code="48" output="&#x0009;"/>
            <key code="49" output=" "/>
            <key code="50" output="ё"/>
            <key code="51" output="&#x0008;"/>
            <key code="53" output="&#x001B;"/>
            <key code="64" output="&#x0010;"/>
            <key code="65" output="."/>
            <key code="66" output="&#x001D;"/>
            <key code="67" output="*"/>
            <key code="69" output="+"/>
            <key code="70" output="&#x001C;"/>
            <key code="71" output="&#x001B;"/>
            <key code="72" output="&#x001F;"/>
            <key code="75" output="/"/>
            <key code="76" output="&#x0003;"/>
            <key code="77" output="&#x001E;"/>
            <key code="78" output="-"/>
            <key code="79" output="&#x0010;"/>
            <key code="80" output="&#x0010;"/>
            <key code="81" output="="/>
            <key code="82" output="0"/>
            <key code="83" output="1"/>
            <key code="84" output="2"/>
            <key code="85" output="3"/>
            <key code="86" output="4"/>
            <key code="87" output="5"/>
            <key code="88" output="6"/>
            <key code="89" output="7"/>
            <key code="91" output="8"/>
            <key code="92" output="9"/>
            <key code="96" output="&#x0010;"/>
            <key code="97" output="&#x0010;"/>
            <key code="98" output="&#x0010;"/>
            <key code="99" output="&#x0010;"/>
            <key code="100" output="&#x0010;"/>
            <key code="101" output="&#x0010;"/>
            <key code="103" output="&#x0010;"/>
            <key code="105" output="&#x0010;"/>
            <key code="106" output="&#x0010;"/>
            <key code="107" output="&#x0010;"/>
            <key code="109" output="&#x0010;"/>
            <key code="111" output="&#x0010;"/>
            <key code="113" output="&#x0010;"/>
            <key code="114" output="&#x0005;"/>
            <key code="115" output="&#x0001;"/>
            <key code="116" output="&#x000B;"/>
            <key code="117" output="&#x007F;"/>
            <key code="118" output="&#x0010;"/>
            <key code="119" output="&#x0004;"/>
            <key code="120" output="&#x0010;"/>
            <key code="121" output="&#x000C;"/>
            <key code="122" output="&#x0010;"/>
            <key code="123" output="&#x001C;"/>
            <key code="124" output="&#x001D;"/>
            <key code="125" output="&#x001F;"/>
            <key code="126" output="&#x001E;"/>
        </keyMap>
        <keyMap index="5">
            <key code="0" output="a"/>
            <key code="1" output="s"/>
            <key code="2" output="d"/>
            <key code="3" output="f"/>
            <key code="4" output="h"/>
            <key code="5" output="g"/>
            <key code="6" output="z"/>
            <key code="7" output="x"/>
            <key code="8" output="c"/>
            <key code="9" output="v"/>
            <key code="10" output=""/>
            <key code="11" output="b"/>
            <key code="12" output="q"/>
            <key code="13" output="w"/>
            <key code="14" output="e"/>
            <key code="15" output="r"/>
            <key code="16" output="y"/>
            <key code="17" output="t"/>
            <key code="18" output="1"/>
            <key code="19" output="2"/>
            <key code="20" output="3"/>
            <key code="21" output="4"/>
            <key code="22" output="6"/>
            <key code="23" output="5"/>
            <key code="24" output="="/>
            <key code="25" output="9"/>
            <key code="26" output="7"/>
            <key code="27" output="-"/>
            <key code="28" output="8"/>
            <key code="29" output="0"/>
            <key code="30" output="]"/>
            <key code="31" output="o"/>
            <key code="32" output="u"/>
            <key code="33" output="["/>
            <key code="34" output="i"/>
            <key code="35" output="p"/>
            <key code="36" output="&#x000D;"/>
            <key code="37" output="l"/>
            <key code="38" output="j"/>
            <key code="39" output="&#x0027;"/>
            <key code="40" output="k"/>
            <key code="41" output=";"/>
            <key code="42" output="\"/>
            <key code="43" output=","/>
            <key code="44" output="/"/>
            <key code="45" output="n"/>
            <key code="46" output="m"/>
            <key code="47" output="."/>
            <key code="48" output="&#x0009;"/>
            <key code="49" output=" "/>
            <key code="50" output="`"/>
            <key code="51" output="&#x0008;"/>
            <key code="53" output="&#x001B;"/>
            <key code="64" output="&#x0010;"/>
            <key code="65" output=""/>
            <key code="66" output="&#x001D;"/>
            <key code="67" output="*"/>
            <key code="69" output="+"/>
            <key code="70" output="&#x001C;"/>
            <key code="71" output="&#x001B;"/>
            <key code="72" output="&#x001F;"/>
            <key code="75" output="/"/>
            <key code="76" output="&#x0003;"/>
            <key code="77" output="&#x001E;"/>
            <key code="78" output="-"/>
            <key code="79" output="&#x0010;"/>
            <key code="80" output="&#x0010;"/>
            <key code="81" output="="/>
            <key code="82" output="0"/>
            <key code="83" output="1"/>
            <key code="84" output="2"/>
            <key code="85" output="3"/>
            <key code="86" output="4"/>
            <key code="87" output="5"/>
            <key code="88" output="6"/>
            <key code="89" output="7"/>
            <key code="91" output="8"/>
            <key code="92" output="9"/>
            <key code="96" output="&#x0010;"/>
            <key code="97" output="&#x0010;"/>
            <key code="98" output="&#x0010;"/>
            <key code="99" output="&#x0010;"/>
            <key code="100" output="&#x0010;"/>
            <key code="101" output="&#x0010;"/>
            <key code="103" output="&#x0010;"/>
            <key code="105" output="&#x0010;"/>
            <key code="106" output="&#x0010;"/>
            <key code="107" output="&#x0010;"/>
            <key code="109" output="&#x0010;"/>
            <key code="111" output="&#x0010;"/>
            <key code="113" output="&#x0010;"/>
            <key code="114" output="&#x0005;"/>
            <key code="115" output="&#x0001;"/>
            <key code="116" output="&#x000B;"/>
            <key code="117" output="&#x007F;"/>
            <key code="118" output="&#x0010;"/>
            <key code="119" output="&#x0004;"/>
            <key code="120" output="&#x0010;"/>
            <key code="121" output="&#x000C;"/>
            <key code="122" output="&#x0010;"/>
            <key code="123" output="&#x001C;"/>
            <key code="124" output="&#x001D;"/>
            <key code="125" output="&#x001F;"/>
            <key code="126" output="&#x001E;"/>
        </keyMap>
        <keyMap index="6">
            <key code="0" output="A"/>
            <key code="1" output="S"/>
            <key code="2" output="D"/>
            <key code="3" output="F"/>
            <key code="4" output="H"/>
            <key code="5" output="G"/>
            <key code="6" output="Z"/>
            <key code="7" output="X"/>
            <key code="8" output="C"/>
            <key code="9" output="V"/>
            <key code="11" output="B"/>
            <key code="12" output="Q"/>
            <key code="13" output="W"/>
            <key code="14" output="E"/>
            <key code="15" output="R"/>
            <key code="16" output="Y"/>
            <key code="17" output="T"/>
            <key code="18" output="!"/>
            <key code="19" output="@"/>
            <key code="20" output="#"/>
            <key code="21" output="$"/>
            <key code="22" output="^"/>
            <key code="23" output="%"/>
            <key code="24" output="+"/>
            <key code="25" output="("/>
            <key code="26" output="&#x0026;"/>
            <key code="27" output="_"/>
            <key code="28" output="*"/>
            <key code="29" output=")"/>
            <key code="30" output="}"/>
            <key code="31" output="O"/>
            <key code="32" output="U"/>
            <key code="33" output="{"/>
            <key code="34" output="I"/>
            <key code="35" output="P"/>
            <key code="36" output="&#x000D;"/>
            <key code="37" output="L"/>
            <key code="38" output="J"/>
            <key code="39" output="&#x0022;"/>
            <key code="40" output="K"/>
            <key code="41" output=":"/>
            <key code="42" output="|"/>
            <key code="43" output="&#x003C;"/>
            <key code="44" output="?"/>
            <key code="45" output="N"/>
            <key code="46" output="M"/>
            <key code="47" output="&#x003E;"/>
            <key code="48" output="&#x0009;"/>
            <key code="49" output=" "/>
            <key code="50" output="~"/>
            <key code="51" output="&#x0008;"/>
            <key code="53" output="&#x001B;"/>
            <key code="64" output="&#x0010;"/>
            <key code="66" output="&#x001D;"/>
            <key code="67" output="*"/>
            <key code="69" output="+"/>
            <key code="70" output="&#x001C;"/>
            <key code="71" output="&#x001B;"/>
            <key code="72" output="&#x001F;"/>
            <key code="75" output="/"/>
            <key code="76" output="&#x0003;"/>
            <key code="77" output="&#x001E;"/>
            <key code="78" output="-"/>
            <key code="79" output="&#x0010;"/>
            <key code="80" output="&#x0010;"/>
            <key code="81" output="="/>
            <key code="82" output="0"/>
            <key code="83" output="1"/>
            <key code="84" output="2"/>
            <key code="85" output="3"/>
            <key code="86" output="4"/>
            <key code="87" output="5"/>
            <key code="88" output="6"/>
            <key code="89" output="7"/>
            <key code="91" output="8"/>
            <key code="92" output="9"/>
            <key code="96" output="&#x0010;"/>
            <key code="97" output="&#x0010;"/>
            <key code="98" output="&#x0010;"/>
            <key code="99" output="&#x0010;"/>
            <key code="100" output="&#x0010;"/>
            <key code="101" output="&#x0010;"/>
            <key code="103" output="&#x0010;"/>
            <key code="105" output="&#x0010;"/>
            <key code="106" output="&#x0010;"/>
            <key code="107" output="&#x0010;"/>
            <key code="109" output="&#x0010;"/>
            <key code="111" output="&#x0010;"/>
            <key code="113" output="&#x0010;"/>
            <key code="114" output="&#x0005;"/>
            <key code="115" output="&#x0001;"/>
            <key code="116" output="&#x000B;"/>
            <key code="117" output="&#x007F;"/>
            <key code="118" output="&#x0010;"/>
            <key code="119" output="&#x0004;"/>
            <key code="120" output="&#x0010;"/>
            <key code="121" output="&#x000C;"/>
            <key code="122" output="&#x0010;"/>
            <key code="123" output="&#x001C;"/>
            <key code="124" output="&#x001D;"/>
            <key code="125" output="&#x001F;"/>
            <key code="126" output="&#x001E;"/>
        </keyMap>
        <keyMap index="7">
            <key code="0" output=""/>
            <key code="36" output="&#x000D;"/>
            <key code="48" output="&#x0009;"/>
            <key code="51" output="&#x0008;"/>
            <key code="53" output="&#x001B;"/>
            <key code="64" output="&#x0010;"/>
            <key code="66" output="&#x001D;"/>
            <key code="70" output="&#x001C;"/>
            <key code="71" output="&#x001B;"/>
            <key code="72" output="&#x001F;"/>
            <key code="76" output="&#x0003;"/>
            <key code="77" output="&#x001E;"/>
            <key code="79" output="&#x0010;"/>
            <key code="80" output="&#x0010;"/>
            <key code="96" output="&#x0010;"/>
            <key code="97" output="&#x0010;"/>
            <key code="98" output="&#x0010;"/>
            <key code="99" output="&#x0010;"/>
            <key code="100" output="&#x0010;"/>
            <key code="101" output="&#x0010;"/>
            <key code="103" output="&#x0010;"/>
            <key code="105" output="&#x0010;"/>
            <key code="106" output="&#x0010;"/>
            <key code="107" output="&#x0010;"/>
            <key code="109" output="&#x0010;"/>
            <key code="111" output="&#x0010;"/>
            <key code="113" output="&#x0010;"/>
            <key code="114" output="&#x0005;"/>
            <key code="115" output="&#x0001;"/>
            <key code="116" output="&#x000B;"/>
            <key code="117" output="&#x007F;"/>
            <key code="118" output="&#x0010;"/>
            <key code="119" output="&#x0004;"/>
            <key code="120" output="&#x0010;"/>
            <key code="121" output="&#x000C;"/>
            <key code="122" output="&#x0010;"/>
            <key code="123" output="&#x001C;"/>
            <key code="124" output="&#x001D;"/>
            <key code="125" output="&#x001F;"/>
            <key code="126" output="&#x001E;"/>
        </keyMap>
        <keyMap index="8">
            <key code="0" output=""/>
            <key code="36" output="&#x000D;"/>
            <key code="48" output="&#x0009;"/>
            <key code="51" output="&#x0008;"/>
            <key code="53" output="&#x001B;"/>
            <key code="64" output="&#x0010;"/>
            <key code="66" output="&#x001D;"/>
            <key code="70" output="&#x001C;"/>
            <key code="71" output="&#x001B;"/>
            <key code="72" output="&#x001F;"/>
            <key code="76" output="&#x0003;"/>
            <key code="77" output="&#x001E;"/>
            <key code="79" output="&#x0010;"/>
            <key code="80" output="&#x0010;"/>
            <key code="96" output="&#x0010;"/>
            <key code="97" output="&#x0010;"/>
            <key code="98" output="&#x0010;"/>
            <key code="99" output="&#x0010;"/>
            <key code="100" output="&#x0010;"/>
            <key code="101" output="&#x0010;"/>
            <key code="103" output="&#x0010;"/>
            <key code="105" output="&#x0010;"/>
            <key code="106" output="&#x0010;"/>
            <key code="107" output="&#x0010;"/>
            <key code="109" output="&#x0010;"/>
            <key code="111" output="&#x0010;"/>
            <key code="113" output="&#x0010;"/>
            <key code="114" output="&#x0005;"/>
            <key code="115" output="&#x0001;"/>
            <key code="116" output="&#x000B;"/>
            <key code="117" output="&#x007F;"/>
            <key code="118" output="&#x0010;"/>
            <key code="119" output="&#x0004;"/>
            <key code="120" output="&#x0010;"/>
            <key code="121" output="&#x000C;"/>
            <key code="122" output="&#x0010;"/>
            <key code="123" output="&#x001C;"/>
            <key code="124" output="&#x001D;"/>
            <key code="125" output="&#x001F;"/>
            <key code="126" output="&#x001E;"/>
        </keyMap>
        <keyMap index="9">
            <key code="0" output="A"/>
            <key code="1" output="S"/>
            <key code="2" output="D"/>
            <key code="3" output="F"/>
            <key code="4" output="H"/>
            <key code="5" output="G"/>
            <key code="6" output="Z"/>
            <key code="7" output="X"/>
            <key code="8" output="C"/>
            <key code="9" output="V"/>
            <key code="10" output=""/>
            <key code="11" output="B"/>
            <key code="12" output="Q"/>
            <key code="13" output="W"/>
            <key code="14" output="E"/>
            <key code="15" output="R"/>
            <key code="16" output="Y"/>
            <key code="17" output="T"/>
            <key code="18" output="1"/>
            <key code="19" output="2"/>
            <key code="20" output="3"/>
            <key code="21" output="4"/>
            <key code="22" output="6"/>
            <key code="23" output="5"/>
            <key code="24" output="="/>
            <key code="25" output="9"/>
            <key code="26" output="7"/>
            <key code="27" output="-"/>
            <key code="28" output="8"/>
            <key code="29" output="0"/>
            <key code="30" output="]"/>
            <key code="31" output="O"/>
            <key code="32" output="U"/>
            <key code="33" output="["/>
            <key code="34" output="I"/>
            <key code="35" output="P"/>
            <key code="36" output="&#x000D;"/>
            <key code="37" output="L"/>
            <key code="38" output="J"/>
            <key code="39" output="&#x0027;"/>
            <key code="40" output="K"/>
            <key code="41" output=";"/>
            <key code="42" output="\"/>
            <key code="43" output=","/>
            <key code="44" output="/"/>
            <key code="45" output="N"/>
            <key code="46" output="M"/>
            <key code="47" output="."/>
            <key code="48" output="&#x0009;"/>
            <key code="49" output=" "/>
            <key code="50" output="`"/>
            <key code="51" output="&#x0008;"/>
            <key code="53" output="&#x001B;"/>
            <key code="64" output="&#x0010;"/>
            <key code="65" output=""/>
            <key code="66" output="&#x001D;"/>
            <key code="67" output="*"/>
            <key code="69" output="+"/>
            <key code="70" output="&#x001C;"/>
            <key code="71" output="&#x001B;"/>
            <key code="72" output="&#x001F;"/>
            <key code="75" output="/"/>
            <key code="76" output="&#x0003;"/>
            <key code="77" output="&#x001E;"/>
            <key code="78" output="-"/>
            <key code="79" output="&#x0010;"/>
            <key code="80" output="&#x0010;"/>
            <key code="81" output="="/>
            <key code="82" output="0"/>
            <key code="83" output="1"/>
            <key code="84" output="2"/>
            <key code="85" output="3"/>
            <key code="86" output="4"/>
            <key code="87" output="5"/>
            <key code="88" output="6"/>
            <key code="89" output="7"/>
            <key code="91" output="8"/>
            <key code="92" output="9"/>
            <key code="96" output="&#x0010;"/>
            <key code="97" output="&#x0010;"/>
            <key code="98" output="&#x0010;"/>
            <key code="99" output="&#x0010;"/>
            <key code="100" output="&#x0010;"/>
            <key code="101" output="&#x0010;"/>
            <key code="103" output="&#x0010;"/>
            <key code="105" output="&#x0010;"/>
            <key code="106" output="&#x0010;"/>
            <key code="107" output="&#x0010;"/>
            <key code="109" output="&#x0010;"/>
            <key code="111" output="&#x0010;"/>
            <key code="113" output="&#x0010;"/>
            <key code="114" output="&#x0005;"/>
            <key code="115" output="&#x0001;"/>
            <key code="116" output="&#x000B;"/>
            <key code="117" output="&#x007F;"/>
            <key code="118" output="&#x0010;"/>
            <key code="119" output="&#x0004;"/>
            <key code="120" output="&#x0010;"/>
            <key code="121" output="&#x000C;"/>
            <key code="122" output="&#x0010;"/>
            <key code="123" output="&#x001C;"/>
            <key code="124" output="&#x001D;"/>
            <key code="125" output="&#x001F;"/>
            <key code="126" output="&#x001E;"/>
        </keyMap>
        <keyMap index="10">
            <key code="0" output="&#x0001;"/>
            <key code="1" output="&#x0013;"/>
            <key code="2" output="&#x0004;"/>
            <key code="3" output="&#x0006;"/>
            <key code="4" output="&#x0008;"/>
            <key code="5" output="&#x0007;"/>
            <key code="6" output="&#x001A;"/>
            <key code="7" output="&#x0018;"/>
            <key code="8" output="&#x0003;"/>
            <key code="9" output="&#x0016;"/>
            <key code="10" output="0"/>
            <key code="11" output="&#x0002;"/>
            <key code="12" output="&#x0011;"/>
            <key code="13" output="&#x0017;"/>
            <key code="14" output="&#x0005;"/>
            <key code="15" output="&#x0012;"/>
            <key code="16" output="&#x0019;"/>
            <key code="17" output="&#x0014;"/>
            <key code="18" output="1"/>
            <key code="19" output="2"/>
            <key code="20" output="3"/>
            <key code="21" output="4"/>
            <key code="22" output="6"/>
            <key code="23" output="5"/>
            <key code="24" output="="/>
            <key code="25" output="9"/>
            <key code="26" output="7"/>
            <key code="27" output="&#x001F;"/>
            <key code="28" output="8"/>
            <key code="29" output="0"/>
            <key code="30" output="&#x001D;"/>
            <key code="31" output="&#x000F;"/>
            <key code="32" output="&#x0015;"/>
            <key code="33" output="&#x001B;"/>
            <key code="34" output="&#x0009;"/>
            <key code="35" output="&#x0010;"/>
            <key code="36" output="&#x000D;"/>
            <key code="37" output="&#x000C;"/>
            <key code="38" output="&#x000A;"/>
            <key code="39" output="&#x0027;"/>
            <key code="40" output="&#x000B;"/>
            <key code="41" output=";"/>
            <key code="42" output="&#x001C;"/>
            <key code="43" output=","/>
            <key code="44" output="/"/>
            <key code="45" output="&#x000E;"/>
            <key code="46" output="&#x000D;"/>
            <key code="47" output="."/>
            <key code="48" output="&#x0009;"/>
            <key code="49" output=""/>
            <key code="50" output="`"/>
            <key code="51" output="&#x0008;"/>
            <key code="52" output="&#x0003;"/>
            <key code="53" output="&#x001B;"/>
            <key code="65" output="."/>
            <key code="66" output="&#x001D;"/>
            <key code="67" output="*"/>
            <key code="69" output="+"/>
            <key code="70" output="&#x001C;"/>
            <key code="71" output="&#x001B;"/>
            <key code="72" output="&#x001F;"/>
            <key code="75" output="/"/>
            <key code="76" output="&#x0003;"/>
            <key code="77" output="&#x001E;"/>
            <key code="78" output="-"/>
            <key code="81" output="="/>
            <key code="82" output="0"/>
            <key code="83" output="1"/>
            <key code="84" output="2"/>
            <key code="85" output="3"/>
            <key code="86" output="4"/>
            <key code="87" output="5"/>
            <key code="88" output="6"/>
            <key code="89" output="7"/>
            <key code="91" output="8"/>
            <key code="92" output="9"/>
            <key code="96" output="&#x0010;"/>
            <key code="97" output="&#x0010;"/>
            <key code="98" output="&#x0010;"/>
            <key code="99" output="&#x0010;"/>
            <key code="100" output="&#x0010;"/>
            <key code="101" output="&#x0010;"/>
            <key code="102" output="&#x0010;"/>
            <key code="103" output="&#x0010;"/>
            <key code="104" output="&#x0010;"/>
            <key code="105" output="&#x0010;"/>
            <key code="106" output="&#x0010;"/>
            <key code="107" output="&#x0010;"/>
            <key code="108" output="&#x0010;"/>
            <key code="109" output="&#x0010;"/>
            <key code="110" output="&#x0010;"/>
            <key code="111" output="&#x0010;"/>
            <key code="112" output="&#x0010;"/>
            <key code="113" output="&#x0010;"/>
            <key code="114" output="&#x0005;"/>
            <key code="115" output="&#x0001;"/>
            <key code="116" output="&#x000B;"/>
            <key code="117" output="&#x007F;"/>
            <key code="118" output="&#x0010;"/>
            <key code="119" output="&#x0004;"/>
            <key code="120" output="&#x0010;"/>
            <key code="121" output="&#x000C;"/>
            <key code="122" output="&#x0010;"/>
            <key code="123" output="&#x001C;"/>
            <key code="124" output="&#x001D;"/>
            <key code="125" output="&#x001F;"/>
            <key code="126" output="&#x001E;"/>
        </keyMap>
        <keyMap index="11">
            <key code="0" output="&#x0001;"/>
            <key code="1" output="&#x0013;"/>
            <key code="2" output="&#x0004;"/>
            <key code="3" output="&#x0006;"/>
            <key code="4" output="&#x0008;"/>
            <key code="5" output="&#x0007;"/>
            <key code="6" output="&#x001A;"/>
            <key code="7" output="&#x0018;"/>
            <key code="8" output="&#x0003;"/>
            <key code="9" output="&#x0016;"/>
            <key code="10" output="0"/>
            <key code="11" output="&#x0002;"/>
            <key code="12" output="&#x0011;"/>
            <key code="13" output="&#x0017;"/>
            <key code="14" output="&#x0005;"/>
            <key code="15" output="&#x0012;"/>
            <key code="16" output="&#x0019;"/>
            <key code="17" output="&#x0014;"/>
            <key code="18" output="1"/>
            <key code="19" output="2"/>
            <key code="20" output="3"/>
            <key code="21" output="4"/>
            <key code="22" output="6"/>
            <key code="23" output="5"/>
            <key code="24" output="="/>
            <key code="25" output="9"/>
            <key code="26" output="7"/>
            <key code="27" output="&#x001F;"/>
            <key code="28" output="8"/>
            <key code="29" output="0"/>
            <key code="30" output="&#x001D;"/>
            <key code="31" output="&#x000F;"/>
            <key code="32" output="&#x0015;"/>
            <key code="33" output="&#x001B;"/>
            <key code="34" output="&#x0009;"/>
            <key code="35" output="&#x0010;"/>
            <key code="36" output="&#x000D;"/>
            <key code="37" output="&#x000C;"/>
            <key code="38" output="&#x000A;"/>
            <key code="39" output="&#x0027;"/>
            <key code="40" output="&#x000B;"/>
            <key code="41" output=";"/>
            <key code="42" output="&#x001C;"/>
            <key code="43" output=","/>
            <key code="44" output="/"/>
            <key code="45" output="&#x000E;"/>
            <key code="46" output="&#x000D;"/>
            <key code="47" output="."/>
            <key code="48" output="&#x0009;"/>
            <key code="49" output=""/>
            <key code="50" output="`"/>
            <key code="51" output="&#x0008;"/>
            <key code="52" output="&#x0003;"/>
            <key code="53" output="&#x001B;"/>
            <key code="65" output="."/>
            <key code="66" output="&#x001D;"/>
            <key code="67" output="*"/>
            <key code="69" output="+"/>
            <key code="70" output="&#x001C;"/>
            <key code="71" output="&#x001B;"/>
            <key code="72" output="&#x001F;"/>
            <key code="75" output="/"/>
            <key code="76" output="&#x0003;"/>
            <key code="77" output="&#x001E;"/>
            <key code="78" output="-"/>
            <key code="81" output="="/>
            <key code="82" output="0"/>
            <key code="83" output="1"/>
            <key code="84" output="2"/>
            <key code="85" output="3"/>
            <key code="86" output="4"/>
            <key code="87" output="5"/>
            <key code="88" output="6"/>
            <key code="89" output="7"/>
            <key code="91" output="8"/>
            <key code="92" output="9"/>
            <key code="96" output="&#x0010;"/>
            <key code="97" output="&#x0010;"/>
            <key code="98" output="&#x0010;"/>
            <key code="99" output="&#x0010;"/>
            <key code="100" output="&#x0010;"/>
            <key code="101" output="&#x0010;"/>
            <key code="102" output="&#x0010;"/>
            <key code="103" output="&#x0010;"/>
            <key code="104" output="&#x0010;"/>
            <key code="105" output="&#x0010;"/>
            <key code="106" output="&#x0010;"/>
            <key code="107" output="&#x0010;"/>
            <key code="108" output="&#x0010;"/>
            <key code="109" output="&#x0010;"/>
            <key code="110" output="&#x0010;"/>
            <key code="111" output="&#x0010;"/>
            <key code="112" output="&#x0010;"/>
            <key code="113" output="&#x0010;"/>
            <key code="114" output="&#x0005;"/>
            <key code="115" output="&#x0001;"/>
            <key code="116" output="&#x000B;"/>
            <key code="117" output="&#x007F;"/>
            <key code="118" output="&#x0010;"/>
            <key code="119" output="&#x0004;"/>
            <key code="120" output="&#x0010;"/>
            <key code="121" output="&#x000C;"/>
            <key code="122" output="&#x0010;"/>
            <key code="123" output="&#x001C;"/>
            <key code="124" output="&#x001D;"/>
            <key code="125" output="&#x001F;"/>
            <key code="126" output="&#x001E;"/>
        </keyMap>
        <keyMap index="12">
            <key code="0" output="Ф"/>
            <key code="1" output="Ы"/>
            <key code="2" output="В"/>
            <key code="3" output="А"/>
            <key code="4" output="Р"/>
            <key code="5" output="П"/>
            <key code="6" output="Я"/>
            <key code="7" output="Ч"/>
            <key code="8" output="С"/>
            <key code="9" output="М"/>
            <key code="10" output="Ё"/>
            <key code="11" output="И"/>
            <key code="12" output="Й"/>
            <key code="13" output="Ц"/>
            <key code="14" output="У"/>
            <key code="15" output="К"/>
            <key code="16" output="Н"/>
            <key code="17" output="Е"/>
            <key code="18" output="!"/>
            <key code="19" output="&#x0022;"/>
            <key code="20" output="№"/>
            <key code="21" output=";"/>
            <key code="22" output=":"/>
            <key code="23" output="%"/>
            <key code="24" output="+"/>
            <key code="25" output="("/>
            <key code="26" output="?"/>
            <key code="27" output="_"/>
            <key code="28" output="*"/>
            <key code="29" output=")"/>
            <key code="30" output="Ъ"/>
            <key code="31" output="Щ"/>
            <key code="32" output="Г"/>
            <key code="33" output="Х"/>
            <key code="34" output="Ш"/>
            <key code="35" output="З"/>
            <key code="36" output="&#x000D;"/>
            <key code="37" output="Д"/>
            <key code="38" output="О"/>
            <key code="39" output="Э"/>
            <key code="40" output="Л"/>
            <key code="41" output="Ж"/>
            <key code="42" output="/"/>
            <key code="43" output="Б"/>
            <key code="44" output=","/>
            <key code="45" output="Т"/>
            <key code="46" output="Ь"/>
            <key code="47" output="Ю"/>
            <key code="48" output="&#x0009;"/>
            <key code="49" output=" "/>
            <key code="50" output="Ë"/>
            <key code="51" output="&#x0008;"/>
            <key code="53" output="&#x001B;"/>
            <key code="64" output="&#x0010;"/>
            <key code="65" output="."/>
            <key code="66" output="&#x001D;"/>
            <key code="67" output="*"/>
            <key code="69" output="+"/>
            <key code="70" output="&#x001C;"/>
            <key code="71" output="&#x001B;"/>
            <key code="72" output="&#x001F;"/>
            <key code="75" output="/"/>
            <key code="76" output="&#x0003;"/>
            <key code="77" output="&#x001E;"/>
            <key code="78" output="-"/>
            <key code="79" output="&#x0010;"/>
            <key code="80" output="&#x0010;"/>
            <key code="81" output="="/>
            <key code="82" output="0"/>
            <key code="83" output="1"/>
            <key code="84" output="2"/>
            <key code="85" output="3"/>
            <key code="86" output="4"/>
            <key code="87" output="5"/>
            <key code="88" output="6"/>
            <key code="89" output="7"/>
            <key code="91" output="8"/>
            <key code="92" output="9"/>
            <key code="96" output="&#x0010;"/>
            <key code="97" output="&#x0010;"/>
            <key code="98" output="&#x0010;"/>
            <key code="99" output="&#x0010;"/>
            <key code="100" output="&#x0010;"/>
            <key code="101" output="&#x0010;"/>
            <key code="103" output="&#x0010;"/>
            <key code="105" output="&#x0010;"/>
            <key code="106" output="&#x0010;"/>
            <key code="107" output="&#x0010;"/>
            <key code="109" output="&#x0010;"/>
            <key code="111" output="&#x0010;"/>
            <key code="113" output="&#x0010;"/>
            <key code="114" output="&#x0005;"/>
            <key code="115" output="&#x0001;"/>
            <key code="116" output="&#x000B;"/>
            <key code="117" output="&#x007F;"/>
            <key code="118" output="&#x0010;"/>
            <key code="119" output="&#x0004;"/>
            <key code="120" output="&#x0010;"/>
            <key code="121" output="&#x000C;"/>
            <key code="122" output="&#x0010;"/>
            <key code="123" output="&#x001C;"/>
            <key code="124" output="&#x001D;"/>
            <key code="125" output="&#x001F;"/>
            <key code="126" output="&#x001E;"/>
        </keyMap>
    </keyMapSet>
    <keyMapSet id="JIS">
        <keyMap index="0" baseMapSet="ANSI" baseIndex="0">
            <key code="512" output=""/>
        </keyMap>
        <keyMap index="1" baseMapSet="ANSI" baseIndex="1">
            <key code="512" output=""/>
        </keyMap>
        <keyMap index="2" baseMapSet="ANSI" baseIndex="2">
            <key code="512" output=""/>
        </keyMap>
        <keyMap index="3" baseMapSet="ANSI" baseIndex="3">
            <key code="512" output=""/>
        </keyMap>
        <keyMap index="4" baseMapSet="ANSI" baseIndex="4">
            <key code="512" output=""/>
        </keyMap>
        <keyMap index="5" baseMapSet="ANSI" baseIndex="5">
            <key code="512" output=""/>
        </keyMap>
        <keyMap index="6" baseMapSet="ANSI" baseIndex="6">
            <key code="512" output=""/>
        </keyMap>
        <keyMap index="7" baseMapSet="ANSI" baseIndex="7">
            <key code="512" output=""/>
        </keyMap>
        <keyMap index="8" baseMapSet="ANSI" baseIndex="8">
            <key code="512" output=""/>
        </keyMap>
        <keyMap index="9" baseMapSet="ANSI" baseIndex="9">
            <key code="512" output=""/>
        </keyMap>
        <keyMap index="10" baseMapSet="ANSI" baseIndex="10">
            <key code="512" output=""/>
        </keyMap>
        <keyMap index="11" baseMapSet="ANSI" baseIndex="11">
            <key code="512" output=""/>
        </keyMap>
        <keyMap index="12" baseMapSet="ANSI" baseIndex="12">
            <key code="512" output=""/>
        </keyMap>
    </keyMapSet>
</keyboard>

Потом этот файл помещается в /Users/konst/Library/Keyboard Layouts/  ,  в настройках системы он становится виден как новая клавиатурная раскладка с названием ruscaps, и, когда ее выбрать, в режиме, когда включен Caps, набираются русские буквы, а когда выключен — латинские. Система же думает, что язык и клавиатурная раскладка никогда не переключается.

  1. Стандартное (почти) поведение Ctrl, Shift, Home, End, PgUp, PgDown и стрелочных клавиш в режиме редактирования текста достигается созданием файла Users/konst/Library/KeyBindings/DefaultKeyBinding.dict

в котором написано примерно следующее:

Hidden text

{ 
  "^\UF72B"  = "moveToEndOfDocument:";                         /* Ctrl-End */ 
  "^$\UF72B" = "moveToEndOfDocumentAndModifySelection:";       /* Ctrl + Shift + End */ 
  "^\UF729"  = "moveToBeginningOfDocument:";                   /* Ctrl  + Home  */ 
  "^$\UF729" = "moveToBeginningOfDocumentAndModifySelection:"; /* Shift + Ctrl  + Home */ 
  "\UF729"   = "moveToBeginningOfLine:";                       /* Home         */ 
  "$\UF729"  = "moveToBeginningOfLineAndModifySelection:";     /* Shift + Home */ 
  "\UF72B"   = "moveToEndOfLine:";                             /* End          */ 
  "$\UF72B"  = "moveToEndOfLineAndModifySelection:";           /* Shift + End  */ 
  "\UF72C"   = "pageUp:";                                      /* PageUp       */ 
  "\UF72D"   = "pageDown:";                                    /* PageDown     */ 
  "^\U007F"  = "deleteWordBackward:";                          /* Ctrl  + Backspace */ 
  "^c"       = "copy:";                                        /* Ctrl  + C */ 
  "^v"       = "paste:";                                       /* Ctrl  + V */ 
  "^x"       = "cut:";                                         /* Ctrl  + X */ 
  "^z"       = "undo:";                                        /* Ctrl  + Z */ 
  "^с"       = "copy:";                                        /* Ctrl  + C in Russian keyboard layout */ 
  "^м"       = "paste:";                                       /* Ctrl  + V in Russian keyboard layout */ 
  "^ч"       = "cut:";                                         /* Ctrl  + X in Russian keyboard layout */ 
  "^я"       = "undo:";                                        /* Ctrl  + Z in Russian keyboard layout */ 
   
  "^\UF702" = moveWordLeft:; 
  "^\UF703" = moveWordRight:; 
  "^$\UF702" = moveWordLeftAndModifySelection:; 
  "^$\UF703" = moveWordRightAndModifySelection:; 
}
  1. Далее приведены страшные символы, создающие полезные пункты в пользовательском меню Midnight Commander, которое вызывается по F2. Придумать их невозможно, можно только нагуглить из интернета.

Итак, для начала создаем файл ~/mc.menu и в нем дописываем, кому что надо. Мне сразу понадобилось такое:

+ ! t t
v       Edit with MacVim
        /Applications/MacVim.app/Contents/MacOS/Vim --remote-tab-silent %f
+ ! t t
@       Set full path to current file to flist
        echo %d/%f >> ~/flist 
+ ! t t
l       Launch file (with finder)
        open %f
+ ! t t
o       Open and show file in Finder
        open -R %f
+ ! t t
@       Do something bad on the current file
        CMD=%{Enter command}
        $CMD %f
  1. Интеграция Vim и терминала (zsh) у меня выглядит примерно так (фрагмент из моего .vimrc):

" Отформатировать JSON
vnoremap ,j :! /opt/homebrew/bin/jq . <CR>

" Отформатировать XML
vnoremap ,f :!xmllint --format -<CR>

" Исполнить текущую строку в bash (например, вызвать curl на api endpoint)
" точка перед w означает, что использовать надо конкретную строку
nnoremap ,e :.w !bash<CR>:echo('...done.')<CR>

" то же самое, но вставить вывод команды в текущий буфер
nnoremap ,E :exec 'r!'.getline('.')<CR>

" Исполнить текущее выделение (range of lines) в bash
vnoremap ,e :w !bash<CR>

Привет, друзья. Какая из двух лидирующих в мире десктопных операционных систем лучше — Windows или Mac? Ну, очевидно, что на сайте, целиком и полностью посвящённом системе от Microsoft, авторы будут топить за неё же родимую. В этом плане, ребята, не будет никаких интриг. Тем не менее факт определённости в своём выборе авторов сайта не является помехой для объективного осветления плюсов и минусов каждой операционной системы. И потому ниже будут предложены только факты. Без комментариев, без субъективного мнения авторов, без подсчёта плюсов и минусов с выведением в итоге победителя гонки. Только информация к сведению для тех, кто, возможно, рассматривает вариант покупки Apple-устройства или установки Хакинтош.

Mac OS (Macintosh Operating System) – операционная система от компании Apple, предназначенная только для компьютеров и ноутбуков, собранных этой компанией. Первый её выпуск на борту компьютера Macintosh состоялся в январе 1984 года. В 2001 году система стала именоваться как Mac OS X, в 2012 году — как OS X, а в 2016 году — как macOS. Всё это технические названия одной и той же операционной системы от Apple. Мы для удобства будем называть её просто Mac. Mac – регулярно обновляемая система. Обновляется раз в год: получает новый функционал, новый индекс версии 10 по типу 10.ХХ и новое человекопонятное  название типа Sierra (цепь гор), High Sierra (цепь высоких гор), El Capitan (Эль-Капитан, гора такая в США). Названия к системе относятся лишь тем боком, что их изображения настроены в качестве дефолтных обоев рабочего стола.

На сегодняшний день актуальна версия macOS Mojave 10.14, названная в честь пустыни Мохаве в США, представленная в июне 2018 года.

Windows – операционная система от компании Microsoft, впервые представленная миру в 1985 году. Кстати, кому интересно, можете посмотреть её историю. Цепь выпускаемых раз в несколько лет версий Windows была прервана выходом на рынок в 2015 году Windows 10 – операционной системы нового формата, вечной «Десятки», которая стала и брендом, и концептом, и универсальной платформой для всего и вся. Обновляется Windows 10 два раза в год. У неё есть свои версии (подверсии) по типу 1709, 1803, 1809, в которых закодирован код и месяц поставки накопительного обновления. У каждого такого обновления есть человекопонятные названия типа Anniversary Update (юбилейное обновление), Creators Update (творческое обновление), October 2018 Update (октябрьское обновление 2018 года) и т.п.  Названия либо приурочиваются к каким-то значимым в жизни системы событиям, либо отражают направление внедрённого функционала, либо просто привязываются ко времени.

Ну а теперь давайте сравнивать Windows и Mac.

Mac – операционная система только для устройств, производимых самой компанией Apple. У неё нет лицензии, её цена включена в стоимость покупаемого устройства – iMac, iMac Pro, Mac Pro, Mac mini, MacBook, MacBook Air, MacBook Pro.

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

Тогда как Windows – это универсальная система с поддержкой огромнейшего числа компьютерных устройств, произведённых как под брендом самой Microsoft, так и собранных сторонними производителями, как, например, Asus, Acer, Samsung, Hewlett-Packard и пр. Windows продаётся по лицензии, которая может приобретаться как отдельно, так и в комплекте с покупаемым устройством. На базе Windows можно собрать свой компьютер полностью или частично из б/у комплектующих, купить любой моноблок, мини-ПК, ноутбук или планшет из огромного выбора предложений на рынке.

Другой вопрос, насколько слажено весь поддерживаемый Windows, в частности, «Десяткой» зоопарк устройств будет работать в тандеме с аппаратной начинкой. За адаптацию железа к Windows в виде процесса написания драйверов отвечают создатели комплектующих, которых по миру тьма тьмущая. Следовательно, нет единой конторы, которая координировано управляла бы этим процессом. Microsoft часто перебрасывает ответственность за проблемы на производителей железа. А последним не всегда по силам угнаться за всеми проблемами, порождёнными обновлениями Windows.

А вот Apple единолично в ответе за слаженную работу операционной системы и комплектующих. Эта система оптимально оптимизирована под работу с железом собираемых компанией устройств. Об отсутствии поддержки старого железа новыми версиями Mac Apple честно и открыто заявляет. Mac в меньшей степени подвержена проблемам слёта и некорректной работы драйверов.

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

MacBook’и обычно лучше заточены под энергоэффективность, чем Windows-ноутбуки.

И Mac, и Windows просты в установке.

Эти процессы может осилить любой более-менее опытный пользователь. Однако в случае установки Mac не на Apple-устройства эта процедура серьёзно усложняется. Настолько, что потребуется не один, не два дня, а гораздо больше времени провести на ресурсах, посвящённых теме Хакинтош.

Но это если говорить только о процессе установки. На оригинальных устройствах Apple процесс установки системы на её установке и заканчивается. Тогда как в Windows жара только начинается – установка драйверов, программных платформ типа DirectX или .NET Framework, отключение ненужных функций, удаление приложений-приблуд и т.п.

Mac — более стабильная операционная система, чем Windows, даже если мы говорим не о «Десятке», а о старших версиях системы. Тем не менее и у Mac есть иногда глюки, особенно в новых, мало обкатанных версиях. Её стабильность – это результат принадлежности к типу Unix-подобных систем, взаимодействия с более узким кругом комплектующих, меньших возможностей самой системы, менее топорного подхода разработчиков к внедрению обновлений, чем у Windows.

Windows же периодически нуждается в чистке от временных и отработанных данных, в чистке и оптимизации системного реестра, который как явление отсутствует на Mac в принципе. А процесс внедрения накопительного обновления Windows 10 – это всегда рулетка.

Откат Windows – это, по сути, также рулетка. Что штатные средства (точки восстановления и образ резервной копии), что сторонние типа Acronis или AOME не всегда могут удачно восстановить систему.

Тогда как откат Mac с помощью штатной функции Time Machine – это практически всегда предвиденный рабочий вариант.

Файловые системы, используемые в Mac — HFS+ и новая APFS, более совершенны, чем проблемная, морально устаревшая и подверженная фрагментации данных NTFS, используемая в Windows. У Microsoft есть преемница NTFS – усовершенствованная файловая система ReFS, но компания не спешит её массово внедрять, делая эксклюзивом для особых случаев.

Mac – более быстрая за счёт принадлежности к типу Unix-подобных систем и оптимизации ПО под железо. Но взять ту же Windows 8.1, установленную на более-менее производительном компьютере с SSD-диском – это также будет довольно быстрая система.

Mac более заточена под обывателя, проста в освоении, продумана так, чтобы пользователь при отсутствии каких-то дополнительных компонентов меньше обращался за справкой в Интернет. У Mac более простой механизм установки и удаления ПО. 

Дизайн и организация интерфейса Mac более эргономичны по объективным параметрам. Но так субъективно может не показаться пользователям Windows, не видевшим ничего иного, кроме как интерфейса Windows. На самом деле Doc-панель, Launchpad, обустройство Finder, панель задач (статус-бар) вверху, интеграция с панелью задач интерфейса приложений – эти вещи более продуманы, чем их аналоги в среде Windows.

У Mac красивые анимационные эффекты, плавный скроллинг, Finder обустроен системой тегирования данных цветными метками, в нём есть режим карусели просмотра файлов.

Однако не всем нравится левостороннее расположение кнопок окон в Mac и невозможность развёртывания окон на весь экран с оставлением видимой панели задач и Doc.

Mac тесно интегрирована с iOS-устройствами. Тогда как реализация приложения «Твой телефон» Windows 10 оставляет желать лучшего.

Mac – система для обывателей и узкопрофильных специалистов. Тогда как Windows – система для всех подряд, гибко настраиваемая, с потенциалом включения дополнительных штатных фукнций. В Windows 10 идёт активное внедрение смешанной реальности.

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

У каждой из систем есть своё уникальное ПО, аналога которого нет для другой системы. Но, естественно, Windows по этой части страдает меньше. Для Mac не найти многих пиратских программ, редкого софта типа программаторов, перепрошивальщиков Android, клиентского ПО различных сервисов и т.п.

Подводя итоги…

Вот как-то так, друзья. При том, что, казалось бы, Mac – операционная система для избранных, у кого есть средства на покупку дорогостоящих Apple-устройств, она не лишена недостатков. Тогда как Windows – система с большим числом проблем, но это непаханое поле азарта для энтузиастов, продвинутых пользователей, разработчиков.

Ну и напоследок сухая статистика: доля Windows на рынке десктопов долгое время уже колеблется в районе 90%. По итогам 2018 года доля Windows составила почти 88%. Доля же Mac достигла отметки немногим более 9%.

Чем отличается Mac OS от Windows?

Чтобы ответить, чем отличается Mac OS от Windows нужно обратиться для начала к истории. Она у персонального компьютера не была прозаичной и безоблачной. Компьютерную технику начинали разрабатывать для расчета крупномасштабных вычислений, в 1964 году появился IBM System/360, с помощью которого обычные пользователи получали доступ к мейнфрейму.

В 1975 году появился миникомпьютер Altair 8800, в 1976 году персональный компьютер Apple I, в 1977 — Apple II, Tandy, Commodore PET. В этот же период начались работы над привычным для нас IBM PC. Небольшая группа Эстриджа работала в рамках IBM, причем экспертный совет изначально принял решение закрыть проект. В 1981 году выходит IBM PC.

Очевидно, что компьютеры Apple и IBM PC имели принципиально разное устройство. В чем и состоит главное отличие Mac OS от Windows – они работают на разных компьютерах. Первую операционную систему к IBM PC написал неизвестный в тот момент Бил Гейтс со своим компаньоном, впоследствии, они учредили Microsoft и выпустили Windows. Параллельно развивался Apple, который во многом превосходил IBM PC, однако именно компании Microsoft удалось вывести свою разработку на мировой рынок из-за своей простоты, удобности и низким ценам.

Что лучше mac os или windows?

А теперь рассмотрим подробнее отличия Mac OS от Windows. В настоящий момент Mac OS устанавливается на все устройства компании Apple: iPhone, iPad, iMac, iPod. Основное преимущество, что OS X является потомком UNIX. Стив Джобс доработал FreeBSD – это UNIX-подобная операционная система. Что предполагает повышенную стабильность работы устройства и высокую производительностью, благодаря реализованной оптимальной работе операционной системы с ресурсами компьютера.

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

Дизайн MAC OSДизайн Mac OS также существенно отличается от Windows, причем в лучшую сторону:

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

Также отметим, что при необходимости можно поставить Windows, например, если требуется специфическое программное обеспечение, работающее только под Windows.

Почему тогда выбирают Windows, а не Mac OS?

Прежде всего, это связано с выбором не операционной системы, а физических устройств. Если выбирать IBM-совместимые компьютеры, придется работать на Windows, так как установить Mac OS невозможно. Привычные для многих ноутбуки могут иметь некоторые недостатки, но главное достоинство – это их невысокая цена и широкое разнообразие программного обеспечения, в том числе, бесплатного.

При этом высокая производительность устройства и достаточный объем оперативной памяти делают работу удобной. К отличительным особенностям Windows отнесем:

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

В общем, при всех преимуществах Mac OS, чаще потребители выбирают Windows из-за универсальности и доступности. Обращайтесь в компанию  IT-delo.by в Минске и мы настроим в вашем офисе любую операционную систему или локальную сеть.

  • В чем различие между windows и linux
  • В чем отличие windows xp professional и windows xp home edition
  • В чем отличие windows server от обычной windows
  • В чем различие windows home и windows pro
  • В чем отличие windows 11 home от windows 11 pro