Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

UoKit.com Форумы _ UO Pilot _ Эмодзи, ALT-коды, UTF-8(hex)

Автор: JyT0 1.7.2019, 20:13

Здравствуйте.
Задался вопросом ввода Emoji с помощью UOPilota в Telegram.
Имеется: Windows 10 и iGram (клиент телеграм)
Сразу скажу, имеется более легкий способ через простой набор шорткода в ТГ, например :joy: для ��. Но захотелось проверить получится ли именно отправлять эмодзи средствами пилота в винде 10.

Поиск Эмодзи показал только одно упоминание https://forum.uokit.com/index.php?showtopic=23643&st=40&p=423377&#entry423377. Уважаемый FREEON дал очевидную точку отправки

Цитата
нужно искать шорткоды эмодзи или юникод код с зажимом клавиши Alt.

Вариант 1: Самым очевидным вводом эмодзи мне видится комбинация Alt+цифры.
Вариант 2: Есть еще коды виртуальных клавиш https://docs.microsoft.com/en-us/windows/desktop/inputdev/virtual-key-codes
Для примера взял
//0x30 0 key
//0x34 4 key
Проверяю:
Код
send {0x30}
// всё отлично, в чат вводится 0

Пробую узнать вирт. код клавиши для эмодзи. Для себя отобрал сайты https://apps.timwhitlock.info/unicode/ и https://graphemica.com/%D0%AF
К сожалению, кода виртуальных клавиш эмодзи для Windows 10 найти так и не смог. Точнее не совсем вышло разобраться, что является этим кодом.
На timwhitlock ввел пример из символов и эмодзи https://apps.timwhitlock.info/unicode/inspect?s=%E2%96%AC%E2%95%A4209%D1%8F%D0%AF%E2%80%BC%F0%9F%8F%9B*4%F0%9F%92%96%E2%98%A0
Цифра 2 на https://docs.microsoft.com/en-us/windows/desktop/inputdev/virtual-key-codes имеет код 0x32 и на сайте в графе HEX Code стоит 0032, а UTF-8 (hex) 32
И тут первый нюанс - HEX Code иUTF-8 (hex) других символов имеют уже 16-ричный вид.
☠ "череп" = UTF-8 (hex) 0xE2 0x98 0xA0 (e298a0)
▬ "черта" (альт+209) = UTF-8( E2 96 AC ) Code (25AC)
"Я" = UTF-8 (hex) 0xD0 0xAF (d0af) https://graphemica.com/%D0%AF
"Я"
Код
send {0xD0}{0xAF}
, но такое не работает
Как быть с двойными указателями кода?

Ради интереса вместо HEX попробую использовать DEX коды https://apps.timwhitlock.info/unicode/inspect?s=%E2%96%AC%E2%95%A4209%D1%8F%D0%AF%E2%80%BC%F0%9F%8F%9B*4%F0%9F%92%96%E2%98%A01
//"Я" = HEX Code:042F UTF-8(hex): D0 AF | DEX Code:1071 UTF-8(dex) 208 175
//"4" = HEX Code:0034 UTF-8(hex): 34 | DEX Code:52 UTF-8(dex) 52
//"" = HEX Code:2564 UTF-8(hex): E2 95 A4 | DEX Code:9572 UTF-8(dex) 226 149 164
Символ "4":
Код
send {0x0034} //4 HEX оба варианта пишут 4
send [code]{0x034} //4 HEX оба варианта пишут 4
send {52} //4 DEX пишет 4.

Очень похоже, что DEX значения так же можно использовать.
Символ "╤"
Код
send {0x2564} // ╤ HEX  получаю в строке цифру 4 
send {9572} // ╤ DEX и снова получаю 4.

Зато руками набранное ALT + 209 вводит ╤ . Почему в этом случае не срабатывает прежний способ ввода HEX и DEX как с цифрами?
Буква "Я"
так же не удалось набрать, хоть её DEX Code одни цифры
А UTF-8 (dex)
Код
send {208}{175}
Отправляет в iGram (клиент для Telegram) {220088}{117755}, а
Код
send {208175}
просто выбил iGram
Ради интереса попробовал UTF-8(hex): D0 AF
Код
sendex {0xD0}{0xAF}
это на 1 добавляло громкость винды, скрипт был привязан к окну. (Получается, одно из значений - код кнопки громкости).
А с цифрами всё было просто.

И это еще не встретились 16-ричные значения.

Встретим их.
Возможно придется уточнить с левым или правым ALT набирать.
Проверю еще раз левый Alt+209 это "" Всё работает, но если в коде есть буква, то ничего не получалось - вводились буквы и набор кода пропадал!
На http://www.fileformat.info/tip/microsoft/enter_unicode.htm и в обсуждении https://superuser.com/questions/871062/how-to-insert-any-unicode-character-using-the-unicode-hex-code-on-windows-word совет добавить кое-что в реестр. Возможно, по другому никак.
Пробую
Изображение

Проба:
‼ После перезагрузки alt+203C ("+" тоже нужно нажимать). Результат "" (в тг это ярко красные знаки) Но! работает это не стабильно. Может ввестись последняя буква, станет - "С‼"
⛺️ https://graphemica.com/%E2%9B%BA = Alt+26FA Результат ⛺️, в Телеграм вводятся (Вот только в Chrome не работает, т.к. alt+F открывает меню)
�� https://graphemica.com/%F0%9F%92%96 и набираем alt+1F496 . Результат ни-че-го.
То есть после правки реестра 100% гарантий нет. Бывает, что вводится только эмодзи с 1 буквой на конце

Выводы:
1. Альт-коды не лучшее решение, придется править реестр - само по себе не работает Не универсально, в разных приложениях могут сработать горячие клавиши
2. Виртуальные коды эмодзи не получается взять из DEX и HEX значений. Но раз средствами Windows они вводятся с виртуально клавиатуры, то должен быть способ.

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

Автор: DarkMaster 1.7.2019, 20:28

Я бы рекомендовал попробовать использовать say - там несколько иная схема отправки, но я не уверен (очень сильно) насчет возможности отправки не ascii кода. Т.е. через say сделать примерно так:
say †
Может быть пройдет. С блокнотом не получилось, но тем не менее что-то в него прилетело, т.к. спрашвивает сохранить ли изменения.

Автор: JyT0 1.7.2019, 20:33

как-то не вышло
say 2 шлет куча 2222 как и ожидалось. То есть работает.
say † ничего не делает.
Хотя сам iGram нормально отображает say † при копипасте, значит понимает символ.

Эти, не очень то нужные, эмодзи как то добавляют хлопот) Ох юникод.

Автор: DarkMaster 2.7.2019, 8:59

В пилоте есть возможность посылать виндовые api. Не могу найти оператор, думаю cirus подскажет. Там скорее всего получится и юникод отправить, но я когда возился не смог найти способа вязаться к окну - функции поиска окна там несколько другие. Необходимо структурку подсунуть, а ее создать корректно не получалось.

Автор: FREEON 2.7.2019, 17:43

Цитата(JyT0 @ 1.7.2019, 20:13) *

Здравствуйте.
Задался вопросом ввода Emoji с помощью UOPilota в Telegram.

Не вижу трудностей для отправки сообщений с помощью шорт кода https://k3a.me/telegram-emoji-list-codes-descriptions/
Делаем привязку к окну Telegram с помощью Ctrl+A
Код

kleft 5, 11  //координаты поля ввода
wait 1s
say текст :smiley:   //набираем строку текста с эмоджи
wait 3s
send217 {Enter}
end_script

Единственное правило при использовании шорт кода это смайлики разделять пробелами между собой и текстом.
Цитата

Например:
:herb: :bamboo: текст :zap: 123 :carrot:


Автор: Fors1k 3.7.2019, 20:01

Что-то я не очень въехал как это должно работать
Прикрепленное изображение

Автор: DarkMaster 4.7.2019, 12:06

может пробелов добавить?

Автор: Fors1k 4.7.2019, 18:57

Цитата(DarkMaster @ 4.7.2019, 12:06) *

может пробелов добавить?

до и после двоеточия? Не, не помогает.

Автор: FREEON 5.7.2019, 0:21

Цитата(Fors1k @ 3.7.2019, 20:01) *

Что-то я не очень въехал как это должно работать
Прикрепленное изображение

Код

set linedelay 0
left 846, 237
say :herb
say :
end_script

в принципе так тоже работает
Код

set linedelay 0
left 846, 237
say :herb::angry::confounded::triumph:
end_script

Не работает тогда когда тупо копировать вставить, не преобразует в эмоджи если использовать команд send send217 если отправить текст с командой сенд то получим вот такой текст(:HhEeRrBb:) почему-то двоятся буквы символы вводятся норм, sendex c телеграм не работает...на клавиши Ctrl+V в телеге делает скрин экрана может где-то не контачит простая вставка текста либо используется другой метод ввода эмоджи.
Если отправлять текст через посыл символов (SAY) то все работает. До конца еще не разобрался, возможное есть еще способы но пока только say

Автор: DarkMaster 5.7.2019, 12:53

В общем случае say - это самый быстрый и корректный способ печати текста. Остальное больше для хоткеев и скилов.

Автор: Fors1k 5.7.2019, 20:14

Цитата(FREEON @ 5.7.2019, 0:21) *

Не работает тогда, когда тупо копировать вставить...
Если отправлять текст через посыл символов (SAY) то все работает

Вот это прикол. Реально, если руками набрать :herb: , то ноль эмоций, а если пилотом послать тоже самое, то появляется смайл. Интересно в чем фокус)

Автор: FREEON 5.7.2019, 20:52

Цитата(Fors1k @ 5.7.2019, 20:14) *

Вот это прикол. Реально, если руками набрать :herb: , то ноль эмоций, а если пилотом послать тоже самое, то появляется смайл. Интересно в чем фокус)

Посимвольный ввод. А когда руками набираеш думает наверное что машина строчит.
Руками для преобразования в смайл нужно между :herb и : сделать небольшую паузу.

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)