SysFn2:GetKey

Applications development, KoOS API questions
  • Ну, hidnplayr был бы рад. Можно даже отдельную функцию создать. Только для этого надо сделать таблицы для всех раскладок.
  • У меня есть встречное предложение. Хватит мусорных бит: viewtopic.php?p=67209#p67209
    Сделаем мир лучше!
  • CleverMouse, почему именно UTF-8?
    Вообще, вот есть http://en.wikipedia.org/wiki/Comparison ... _encodings
  • CleverMouse wrote:У меня есть встречное предложение
    Но ведь в этой теме обсуждается конкретно SysFn2. Разве есть необходимость с клавиатуры вводить что-то за пределами https://en.wikipedia.org/wiki/Plane_%28 ... gual_Plane ?

    Ну а за UTF-16 я потому что в ней символ может состоять или из 2-ух, или из 4-ёх байтов. В то время как в UTF-8 4 варианта(1|2|3|4). Это дополнительные проверки в коде, меньше производительность. Хуже, наверное, только EBCDIC.
    В плане совместимости, файловые функции уже давно поддерживают UTF-16.

    Вообще, в плане эффективности, как мне кажется, UCS-2(2 байта на символ) будет ещё лучше. Проще и быстрее строковые функции. Можно элементарно обратиться к i-ому символу, а не парсить всё до него как в UTF-8\16.

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

    Code: Select all

            mov    edi, Str
            mov    ecx, $FFFFFFFF
            xor    eax, eax
            repne scasb
            mov    eax, $FFFFFFFF
            sub    eax, ecx
    Как изменится код для UCS-2? Очень просто, изменится только scasb на scasw

    Code: Select all

            mov    edi, Str
            mov    ecx, $FFFFFFFF
            xor    eax, eax
            repne scasw
            mov    eax, $FFFFFFFF
            sub    eax, ecx
    А для UTF-8/16 надо больше городить, будет гораздо больше проверок. Это даже если реально там символы помещаются в рамки UCS-2.

    Я вовсе не хочу сказать, что надо отказываться от поддержки UTF-8\16. Но всему должно быть своё место.
    Снова скажу, что в основном всё же используется Basic Multilingual Plane. А если нужно будет перекодировать, то пусть в библиотеке будут функции UCS2<->UTF16, UCS2<->UTF8, UTF16<->UTF8.
  • http://utf8everywhere.org/
    Любой код, считающий количество unicode codepoints в строке, сломан. strlen имеет смысл только как количество байт в строке, и в этом значении он остаётся абсолютно одинаковым для однобайтовых кодировок и utf-8.
    Сделаем мир лучше!
  • Who is online

    Users browsing this forum: No registered users and 8 guests