Почему строки с диакритическими знаками не работают должным образом?Любое решение? - PullRequest
0 голосов
/ 21 сентября 2018

Я не очень разбираюсь в скриптах.В игровом программном обеспечении Logitech я хотел использовать этот скрипт LUA:

function OnEvent(event, family)
    if (event == "MOUSE_BUTTON_PRESSED" and arg == 2) then  
        PlayMacro("DPI Up")
    elseif (event == "MOUSE_BUTTON_RELEASED" and arg == 2) then
        PlayMacro("DPI Down")
    end
end

Это должно увеличить мое DPI, когда я нажимаю RMB, и уменьшить его, когда я отпущу RMB, но значение в скобках (после PlayMacro) должен быть на языке, который я использую (польский).
На польском языке вы пишете «DPI w górę» вместо «DPI Up» и «DPI w dół» вместо «DPI Down», но тогда скрипт неработать.
Я почти уверен, что все дело в диакритике, потому что, например, макрос "Назад" работает нормально - на польском языке вы пишете "Wstecz" <- слово без диакритики, я также проверял такие слова, как "Zmiana DPI", и все работает правильнос ними (потому что они без диалектических знаков, я думаю).</p>

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

1 Ответ

0 голосов
/ 22 сентября 2018
local UTF8_letters = {["ó"] = "\195\179", ["ę"] = "\196\153", ["ł"] = "\197\130"}

local function UTF8(str)
   return (str:gsub(".", UTF8_letters))
end

function OnEvent(event, family)
    if (event == "MOUSE_BUTTON_PRESSED" and arg == 2) then  
        PlayMacro(UTF8"DPI w górę")
    elseif (event == "MOUSE_BUTTON_RELEASED" and arg == 2) then
        PlayMacro(UTF8"DPI w dół")
    end
end
...