Войти
ПрограммированиеФорумОбщее

MacOS клавиатура.

#0
(Правка: 9:35) 8:16, 24 июля 2021

Привет всем! И больше вопрос к тем кто пользуется MacOS.
В общем при работе с клавиатурой (раскладка стандартная для PC не Mac) и запустив виртуальную клавиатуру, я вижу различие в раскладке. Меня бы это сильно не волновало... но вот пользователям MacOS  я думаю не понравится, что при нажатии какой-то клавиши и ожидая знак вопроса, у них выползет точка (ну и подобные вещи).

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

Как мне ориентироваться на пользователя? По какой раскладке, той, что у меня на клавиатуре или виртуальной (как я понимаю настоящей MacOS)?

Как мне определить, какая клавиатура у пользователя? Стандартная PC или MacOS?

Где вообще почитать про эту всю лабуду?

бесиииииит... эта вся мелочёвка уже задралаааа!!!!

И что за фигня с капсом творится? Почему он не генерирует сигнал отжатия? А срабатывает только при нажатии?

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

Даже в обычных приложениях и в консоли и в блокноте тупит, что говорить об остальном?


#1
7:44, 25 июля 2021

Ау!!! Есть тут кто живой и с MacOS и с Windows?
То толпами бегаете, кричите о своём железе, то в топик зайти не можете и помочь делом?

#2
0:47, 26 июля 2021

Mirrel
> Ау!!! Есть тут кто живой и с MacOS и с Windows?
plakware разработка что-ли?
бан на гугле?

program project1;

{$mode objfpc}{$H+}
{$modeswitch objectivec2}
{$linkframework Carbon} // работает даже на M1 под BigSur

uses
  CocoaAll // используется только для NSString, как удобнобыстрый конвертатор в PChar не более
  ,  MacOSAll;

var
  src : TISInputSourceRef; 

begin
  src := TISCopyCurrentKeyboardInputSource;
  writeln(NSString( TISGetInputSourceProperty(src, kTISPropertyInputSourceID)).UTF8String);
end.

Mirrel
> То толпами бегаете, кричите о своём железе, то в топик зайти не можете и помочь делом?
а теперь объясни какая связь между железом и раскладкой?

Mirrel
> Как мне определить, какая клавиатура у пользователя? Стандартная PC или MacOS?
вообще нафик не надо. Всё что тебя интересует это какие символы нажали, а система уже сама тебе всю информацию готовую держит

Mirrel
> Как мне ориентироваться на пользователя?
достаточно убедиться, чтобы горячие клавиши не конфликтовали с системными хоткеями

#3
6:51, 26 июля 2021

skalogryz
> src := TISCopyCurrentKeyboardInputSource;
> writeln(NSString( TISGetInputSourceProperty(src, kTISPropertyInputSourceID)).UTF8String);
вот про это можно просто забыть. Не будет ни какого NSString в ZenGL. Мне нужно универсальное средство для всех систем.

> а теперь объясни какая связь между железом и раскладкой?
меня интересует именно раскладка клавиатуры! Чтобы при нажатии на клавишу "." - выводилась именно точка, а не "&". То же самое и про многие другие клавиши, особенно в русском. На MacOS коды клавиш стандартные, а выводимая символика другая.

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

> бан на гугле?
Честно говоря, с маком гугл почти не помощник. Вся информация именно от Apple идёт и приходится ковыряться именно в документации что предоставляет Apple. А это уже порядком надоело... Вот и хотел узнать у людей, что пользуются несколькими осями, как будет правильно.

Но по сути, получается: "делай всё как обычно, как считаешь правильным"... (это я про самого себя).

#4
(Правка: 7:44) 7:43, 26 июля 2021

Mirrel
> вот про это можно просто забыть. Не будет ни какого NSString в ZenGL. Мне нужно
> универсальное средство для всех систем
без NSString ты уже ничего не напишешь, потому что NSApplication и UIApplication NSString тащат.
Но не хочешь NSString, полно функций для конвертации CFString. Под капотом, NSString это и есть CFString.
TISGetInputSourceProperty возвращает поинтер, которой есть CFStringRef

Mirrel
> меня интересует именно раскладка клавиатуры! Чтобы при нажатии на клавишу "." -
> выводилась именно точка, а не "&"
NSEvent.charaters
NSEvent.charactersIgnoringModifiers
все метОды хороши, выбирай на вкус. Знать раскладку для этого не обязательно.

Mirrel
> Пользователь, при установке системы (или уже при работе с ней) определяет эти
> самые "хоткеи" (я ведь правильно понимаю?). Точнее система с помощью
> пользователя определяет.
тебе достаточно поддерживать "все известные на момент разработки"

Mirrel
> Значит эти данные должны содержаться уже в системе?
...а добавить возможность переопределять клавиши


Mirrel
> Вся информация именно от Apple идёт и приходится ковыряться именно в
> документации что предоставляет Apple
врят ли ты найдёшь "официальную документацию" по TISCopyCurrentKeyboardInputSource().
(Ябло почему-то ленится перетаскивать документацию по "старым библиотекам" в новый формат. Пример. Поинтересуйся у wat-а почему так)
описание есть, но в хедерах с описанием функции.
Так что гугол как раз в этом случае друг, с примерами и архивами документаций.


Mirrel
> Но по сути, получается: "делай всё как обычно, как считаешь правильным"... (это я про самого себя).
нет. "делай как все". Все остальные движки успешно живут без проблем и без знаний о раскладке. под Винду, кстати тоже.
Там никто раскладкой не интересуются доверяя WM_UNICHAR

#5
(Правка: 9:13) 9:12, 26 июля 2021

skalogryz
> без NSString ты уже ничего не напишешь, потому что NSApplication и
> UIApplication NSString тащат.
не правильно выразился. Внутри ZenGL не будет NSString. Пользователю надо, пусть пользуется.

> все метОды хороши, выбирай на вкус. Знать раскладку для этого не обязательно.
мы разговариваем изначально на разных зыках. ))) Я спрашивал про Фому, ты мне про Ерёму.

> тебе достаточно поддерживать "все известные на момент разработки"
ну да, прикольно, заходит пользователь на маке в игру, начинает что-то писать, а у него билиберда из-под рук выходит. ))) В настройки программы заходит, а там стандартная клавиатура светится (или наоборот, потому что у него стоит стандартная)
И конечно же пользователь знал об этой проблеме и конечно же он полез переключать раскладку в самой программе. ))))

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

> "делай как все"
давно пора понять. Я не все!

А чтоб было понятнее, почему я не использую NSString в маке, ушёл от системных вызовов в Windows (смотрим последние изменения) и собираюсь отключать дефолтную клавиатуру в android: - я именно ухожу от системных вызовов, там, где это скажется на скорости или может вызвать какие-то "глюки" (от которых так же придётся уходить).

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

И потому я и задавал вопрос про клавиатуру. Чтоб всё было совместимо с системой, в которой работает пользователь.

#6
(Правка: 9:32) 9:29, 26 июля 2021

Mirrel
> мы разговариваем изначально на разных зыках. ))) Я спрашивал про Фому, ты мне про Ерёму.
Mirrel
> ну да, прикольно, заходит пользователь на маке в игру, начинает что-то писать,
> а у него билиберда из-под рук выходит. )))
Mirrel
> я именно ухожу от системных вызовов, там, где это скажется на скорости или
> может вызвать какие-то "глюки"
дай угадаю, ты пытаешь сделать маппинг Кодов клавиш, к текстовым символам... пфф... ну успехов!

...лучше бы ты retained mode прикрутил ZenGL
#7
9:37, 26 июля 2021

skalogryz
> ты пытаешь сделать маппинг Кодов клавиш
почему пытаюсь? Если уже сделано. Не сделано только для мака.
Так-то многое было уже сделано до меня. )))

#8
9:43, 26 июля 2021

skalogryz
> retained mode
doublebuffer - чем отличаются?

#9
15:08, 26 июля 2021

Mirrel
> doublebuffer - чем отличаются?
меши и шейдеры не нужно лить на гпу.

с immediate mode движок может только гадать что будет переиспользовано

ПрограммированиеФорумОбщее