Автор: 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
Проверяю:
Код
// всё отлично, в чат вводится 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
"Я"
Код
, но такое не работает
Как быть с двойными указателями кода?
Ради интереса вместо 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)
Код
Отправляет в iGram (клиент для Telegram) {220088}{117755}, а
Код
просто выбил iGram
Ради интереса попробовал UTF-8(hex): D0 AF
Код
это на 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 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
Автор: 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 и : сделать небольшую паузу.