1 (изменено: ypppu, 2017-02-23 15:11:41)

Тема: AHK: АвтоЗамены и переназначенная запятая

Здравствуйте! Сразу к делу.

Для примера возьму слово АЗ:

::н::надо

Переназначил запятую на другую клавишу:

::\::,

В результате:
"надо\"
Только после пробела меняется на запятую. "надо,".
Вроде работает, но хочу сделать красиво, чтобы \ работал точно так же как запятая, т.е по нажатию на \ появлялась запятая, а слово разворачивалось как по нажатию запятой(без появления \).

Пробовал сымитировать поведение запятой, шифт + точка, через капс:

Capslock::+sc035

Как запятая работает, но исчезает с применением АЗ.

Получилось:
"ннадо" без запятой, и первой буквой АЗ.

Чувствую знаний АНК не хватает, подскажите что копать, куда смотреть, куда смотреть, если можно поподробней.

Спасибо за внимание.

2

Re: AHK: АвтоЗамены и переназначенная запятая

Точки в предложениях расставил, хелп и так читаю, но как исправить мою ситуацию, на данный момент я не нашёл.
ПС: И конечно гуглил перед созданием темы(на всякий случай напишу).

Вопрос в работе АЗ и переназначенных клавиш. По отдельности работает, а совместно не корректно. Через send, sendinput тоже самое. Может это вообще проблема АНК? Хотя вряд ли.

Может нужен какой-то прерыватель, имитирующий нажатие на пробел, но как это записать, я не знаю. В общем вопрос остаётся открытым.

3

Re: AHK: АвтоЗамены и переназначенная запятая

Нужна пара опций (в справке они описаны):


:*?:\::,

4 (изменено: AHK_on, 2017-02-23 13:16:20)

Re: AHK: АвтоЗамены и переназначенная запятая

Так я уже делал, (даже так делал :*?c:\::, ) но с АЗ этот вариант не работает.

:*?:\::,

::н::надо

В таком виде работает, если набирать без АЗ. С АЗ данный код, к сожалению не работает.

Попробуйте код написанный чуть выше. Запятая исчезнет, и получится "ннадо". А мне это не "ннадо". А очень хочется разобраться, штука ведь полезная.

Если написать по буквам, "надо" и после нажать на переназначенную запятую, то всё работает, а если нажать "н" затем "\" а после этого "{space}" получается "ннадо".


Тут без специалиста не разобраться, это ясно..

5

Re: AHK: АвтоЗамены и переназначенная запятая

А, понятно, о чём вы. Ну, довольно логично, что ввод самого скрипта не считается вводом юзера и не обрабатывается, как таковой. Это уже выходные данные, а не входные. Что может получиться, если выход соединить со входом, вы, наверно, знаете — зацикливание. С горячими клавишами, кстати, оно возможно и там надо принимать меры против него. А с автозаменами, значит, проблема отсутствует.

AHK_on пишет:

а если нажать "н" затем "\" а после этого "{space}" получается "ннадо".

Точно? У меня получается "н, ".

6 (изменено: ypppu, 2017-02-23 15:14:03)

Re: AHK: АвтоЗамены и переназначенная запятая

Да, действительно. получается "н, ". Это из-за того что я тестовый файл открыл параллельно с дефолтным. Дублировался. Но проблема никуда не ушла.

На данный момент используют скрипт:

:?:\::,

::н::надо

Он работает и с АЗ и с по-буквенным вводом. Остаётся проблема появления заменяемого символа (\ в нашем случае), после пробела он превращается в запятую. Но ведь можно сделать чтобы сразу появлялась запятая.

Microsoft Keyboard Layout Creator 1.4 - я не использую, потому, что нужно не только для своей машины.

Подобный код:

vkE2:: Send, {ASC 44}

Тоже не работает с АЗ.

Вот две темы замены запятой, но там без использования АЗ.

http://forum.script-coding.com/viewtopic.php?id=4190
http://forum.script-coding.com/viewtopi … 452#p39452

7

Re: AHK: АвтоЗамены и переназначенная запятая

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

8

Re: AHK: АвтоЗамены и переназначенная запятая

Такой вариант у меня работает. Как у вас?


\::Send, {,}

::н::надо

9 (изменено: AHK_on, 2017-02-23 13:17:39)

Re: AHK: АвтоЗамены и переназначенная запятая

Да, с АЗ заработало:) но если набрать по буквам, без использования АЗ, то получается запятая не получается "надо\" хотелось бы чтобы слешь не был частью АЗ.

10

Re: AHK: АвтоЗамены и переназначенная запятая

AHK_on, расставьте заглавные буквы и точки в своих сообщениях. На исправление 3 дня.

11 (изменено: YMP, 2017-02-23 13:18:03)

Re: AHK: АвтоЗамены и переназначенная запятая

AHK_on пишет:

но если набрать по буквам, без использования АЗ, то получается запятая не получается "надо\"

Не понял, так вам что нужно при полном наборе слова "надо" — запятую или слэш?

12

Re: AHK: АвтоЗамены и переназначенная запятая

ypppu пишет:

AHK_on, расставьте заглавные буквы и точки в своих сообщениях. На исправление 3 дня.

Присоединяюсь. Сплошной поток слов трудно понять.

13 (изменено: AHK_on, 2017-02-23 14:00:52)

Re: AHK: АвтоЗамены и переназначенная запятая

У меня задача, чтобы запятая ставилась и с АЗ, и с полным набором, т.к не все слова у меня на АЗ.

\::Send, {,}

:?:\::,

::н::надо

Такой код рабочий, но всё равно сначала появляется слеш, а после пробела превращается в запятую.
Может это вообще нельзя решить? До этого я по разному пробовал, но пришёл к такому результату.

14

Re: AHK: АвтоЗамены и переназначенная запятая

AHK_on пишет:

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

А зачем вы туда автозамену слэша на запятую вставили? Это же делается выше через Send.

15 (изменено: AHK_on, 2017-02-23 13:29:30)

Re: AHK: АвтоЗамены и переназначенная запятая

YMP пишет:

А зачем вы туда автозамену слэша на запятую вставили? Это же делается выше через Send.

\::Send, {,} ;печатает запятую с АЗ, и сразу активирует АЗ.

:?:\::, ;печатает запятую без АЗ(появляется сначала слеш, потом, после пробела превращается в запятую)

::н::надо

Они работают совместно, один с АЗ, другой с посимвольным набором. Осталось избавиться от перехода из слеш в запятую. Чтобы нажатие на слеш было равно нажатию на оригинальную запятую.

Уже здорово получилось. Хочу красиво сделать.

16

Re: AHK: АвтоЗамены и переназначенная запятая

AHK_on
Странно. У меня мой код работает для обоих случаев. Какая-то путаница здесь.

17 (изменено: ypppu, 2017-02-23 15:18:03)

Re: AHK: АвтоЗамены и переназначенная запятая

С АЗ работает, а с посимвольным набором так.
Набираю "надо"(или любое слово) по-символьно, затем жму "\" и слеш так и остаётся слешем. В одиночку от тоже остаётся слешем.

Аааа, понял в чём дело. Я жму на левый слеш. На правом слеше работает.

18 (изменено: YMP, 2017-02-23 13:47:45)

Re: AHK: АвтоЗамены и переназначенная запятая

Клавиатуры у нас сильно разные, что ли? Не совсем понятно мне, что происходит.

19 (изменено: ypppu, 2017-02-23 15:19:01)

Re: AHK: АвтоЗамены и переназначенная запятая

У меня европейская раскладка, маленький шифт слева, купил пару дней назад.

20 (изменено: ypppu, 2017-02-23 15:19:53)

Re: AHK: АвтоЗамены и переназначенная запятая

У левого слеша sc056 (vkE2).
У правого слеша 02B (vkDC).

21

Re: AHK: АвтоЗамены и переназначенная запятая

AHK_on, http://i.smiles2k.net/aiwan_smiles/nono.gif проставьте заглавные буквы и точки:
http://forum.script-coding.com/viewtopi … 16#p113016
http://forum.script-coding.com/viewtopi … 73#p113073
http://forum.script-coding.com/viewtopi … 81#p113081
http://forum.script-coding.com/viewtopi … 83#p113083
http://forum.script-coding.com/viewtopi … 84#p113084

22

Re: AHK: АвтоЗамены и переназначенная запятая

ypppuИзвините, не специально. А после тоже точки нужно ставить, это ведь как бы окончание предложения?

23

Re: AHK: АвтоЗамены и переназначенная запятая

Смайлик жёлтой жирной точкой не считается.

24 (изменено: AHK_on, 2017-02-23 14:15:29)

Re: AHK: АвтоЗамены и переназначенная запятая

Слешь заменил на sc056 или vkE2 и после АЗ слешь в запятую не превращается, плюс дублирует букву из АЗ, но в по-буквам всё в порядке.

sc056::Send, {,}

::н::надо

vkE2::Send, {,}

::н::надо

25

Re: AHK: АвтоЗамены и переназначенная запятая

AHK_on пишет:

У левого слеша sc056 (vkE2)

У меня, похоже, такого нет, или я не могу найти.

У правого слеша 02B (vkDC)

А это у меня левый слэш.

26 (изменено: ypppu, 2017-02-23 15:22:55)

Re: AHK: АвтоЗамены и переназначенная запятая

Да на другой клавиатуре у меня его тоже нет. На европейской, с маленьким левым шифтом, он есть. Так самое главное, отличаются у них только sc и vk, а набирают оба один и тот же символ "\" но нужен именно левый, т.к до правого дотягиваться сложновато будет.

С правым работает просто отлично, а вот с левым(на моей клавиутуре) на половину.

Не понимаю почему код не работает:

sc056::Send, {,}

::н::надо

Ведь по сути я прописываю код символа.

Альт например заменить можно:

SC056::Send {Alt Down}
SC056 up::Send {Alt Up}

На правый другом слеше тоже самое, при использовании АЗ буква удваивается, а запятая исчезает:

vkDC::Send, {,}

::н::надо
sc02B::Send, {,}

::н::надо

Самый рабочий код(для европейской раскладки, с маленьким шифтом и слешем, таким же маленьким слева):


\::Send, {,} ;печатает запятую с АЗ, и сразу активирует АЗ.

:?:\::, ;печатает запятую без АЗ(появляется сначала слеш, потом, после пробела превращается в запятую)

::н::надо

Осталась проблема:

Если со слешем (02B или vkDC) возле Ентера работает идеально.

Со слешем (sc056 или vkE2) возле лШифт работает на половину:

АЗ + "\" = "АЗ,"

По-буквенный набор + "\" = "По-буквенный набор\"

Слешь убирается только после Пробела или Enter.

27

Re: AHK: АвтоЗамены и переназначенная запятая

Перестаньте пихать слеш в автозамену. Заменили слэш запятой - все, больше ничего делать с ним не надо.

vke2:: ; left slash
vkdc:: ; right slash
	Send {,}
	Return

::н::надо

28 (изменено: AHK_on, 2017-02-23 15:30:22)

Re: AHK: АвтоЗамены и переназначенная запятая

Да, у вас красивее получилось, я вот только что решил:

vkE2::Send, {,}
\::Send, {,}

Но так грамотно:

vke2:: ; left slash
vkdc:: ; right slash
	Send {,}
	Return

Спасибо всем кто помог, тему можно закрывать.

ПС: Одно не ясно, почему не сработал sc056, ведь это тоже самое что и vke2, или не тоже самое?

29 (изменено: AHK_on, 2017-02-24 13:28:47)

Re: AHK: АвтоЗамены и переназначенная запятая

На капслок не вешается запятая. Снова буквы с АЗ двоятся.
Делаю тоже, но почему не получается так же.
По-буквенный ввод запятая работает.


vk14:: ; CapsLock = ,
	send {,}
	Return

::н::надо

Код капслока:
vk14
sc03A

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

Ссылка на поиск по форуму, ремаппинг: http://forum.script-coding.com/search.p … 1067894408 Но там больше про HotKey

Если написать код так:

vk14:: Send {vkBC}
return

::н::надо

То будет привязка к регистру.

30

Re: AHK: АвтоЗамены и переназначенная запятая

У меня не двоятся и запятая есть. А автозамена не работает, потому что Капслок не является оконечным символом. Собственно, ему никакой символ не соответствует, так что и внести его в этот список проблематично.

31 (изменено: AHK_on, 2017-02-24 14:02:53)

Re: AHK: АвтоЗамены и переназначенная запятая

Двоится когда использую АЗ, и запятая исчезает. А когда пишу по-буквенно надо, то запятая работает исправно.

YMP пишет:

Капслок не является оконечным символом

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

ему никакой символ не соответствует

А как же vk14? Вроде как клавиша, и частично капс работает. С по-буквенным набором нет проблем.

Может нужно сымитировать {down} или {up}, но он их не выполняет. Чувствую что с каждым разом углубляюсь в дебри, с которыми разберусь.

Непонятно, почему взяв рабочий код со слешем:

vke2:: ; left slash
vkdc:: ; right slash
	Send {,}
	Return

Я меняю в нём две цифры, и всё срывается, даже на функциональную клавишу ставил(она ведь не оконченный символ?)

vkF8,:: ; left slash
vkdc:: ; right slash
	Send {,}
	Return

32

Re: AHK: АвтоЗамены и переназначенная запятая

AHK_on пишет:

А как же vk14?

Это код виртуальной клавиши. Символы — это буквы, цифры, знаки препинания и т.п., т.е. то, что появляется в текстовом поле при нажатии клавиши.

AHK_on пишет:

Я меняю в нём две цифры, и всё срывается

Что всё? Запятая-то есть при нажатии Капслока, значит не всё.

33 (изменено: AHK_on, 2017-02-24 14:44:19)

Re: AHK: АвтоЗамены и переназначенная запятая

Под всё я подразумеваю не работает так же, как с предыдущим виртуальным кодом.
Запятая с капслоком работает если набирать по буквам, то проблемы нет. А если нажать "н", затем капс, а затем пробел, получается "ннадо ".
Я проверил, никаких дублей запущенных скриптов нет. Один файл запущен, в нём занимаюсь.

Не понимаю, почему виртуальный код vkE2 (слешь) работает, а vk14 (капслок) или 77 (F8) не работает.

Почему такой код со слешем АЗ работает:

vke2:: ; left slash
vkdc:: ; right slash
	Send {,}
	Return

::н::надо

А с Ф8 (vk77) не работает с АЗ:

vk77:: ; left slash
vkdc:: ; right slash
	Send {,}
	Return

::н::надо

Или тоже самое с буквой R:

vk52:: ; left slash
vkdc:: ; right slash
	Send {,}
	Return

::н::надо

Не ясно как это работает. Куда в хелпе смотреть?

34

Re: AHK: АвтоЗамены и переназначенная запятая

AHK_on пишет:

Не понимаю, почему виртуальный код vkE2 (слешь) работает, а vk14 (капслок) или 77 (F8) не работает.

Так я же объяснил. Слэш — это символ, а Капслоку никакой символ не соответствует.

35

Re: AHK: АвтоЗамены и переназначенная запятая

YMP пишет:

Слэш — это символ, а Капслоку никакой символ не соответствует

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

Подвожу итог, чтобы не перечитывать 2 страницы:

Код ниже заменяет слешь на запятую, и работает с:
По-символьным вводом, набирать "надо" без АвтоЗамены.
АЗ, нажать "н" дальше слешь, получить "надо,".

vke2:: ; left slash
vkdc:: ; right slash
	Send {,}
	Return

::н::надо ;тестовое АЗ

Задача: вместо Слеша нужен КапсЛок. Как это сделать я не знаю, может кто-нибудь знает.

Такой код работает с по-символьным набором, но с АЗ не работает. Получается "ннадо ":

vk14:: Send, {,}
return

::н::надо

или

capslock:: Send, {,}
return

::н::надо

36

Re: AHK: АвтоЗамены и переназначенная запятая

Триггерами автозамены служат определённые символы, называемые оконечными. У Капслока символа нет и запустить автозамену он не может.

37 (изменено: AHK_on, 2017-02-24 17:08:50)

Re: AHK: АвтоЗамены и переназначенная запятая

А-а-а, теперь понял. А привязать к Капслоку триггер чтобы он активировал АЗ? В хелпе и вообще в сети решения не нашёл.

38

Re: AHK: АвтоЗамены и переназначенная запятая

Ну так запятая тоже является триггером, то бишь одним из оконечных символов. У вас Капслок её посылает, и что? Срабатывает автозамена от неё? Нет. Не реагируют они на искусственный ввод.

39

Re: AHK: АвтоЗамены и переназначенная запятая

В том то и дело, не срабатывает искусственная запятая. А если к Капслоку привязать триггер для АЗ, задача была бы решена. Под Капслок что угодно можно писать, но АЗ не сработает пока не нажмешь пробел например. Через АНК наверно не выйдет. Спасибо за поддержку

40

Re: AHK: АвтоЗамены и переназначенная запятая

Так можно:

#InputLevel 1
capslock:: Send, {,}
return
#InputLevel 0
::н::надо

41

Re: AHK: АвтоЗамены и переназначенная запятая

Или так:

::н::надо

CapsLock::
	SendLevel 1
	Send {,}
	Return

42

Re: AHK: АвтоЗамены и переназначенная запятая

Да, отстал я от жизни, оказывается.

43 (изменено: AHK_on, 2017-02-26 15:27:57)

Re: AHK: АвтоЗамены и переназначенная запятая

Огроменное спасибо! Зашёл на форум, а тут такое, просто спасибо за помощь!

PS:/ может кому-то пригодится, переключать КапсЛок можно так:

+capslock::vk14 ; capslock on/off

44

Re: AHK: АвтоЗамены и переназначенная запятая

AHK_on
У меня работает следующий код - нажатие CapsLock заменяется на "{запятая}{пробел}"


CapsLock::
  SendLevel 1
  Send `,
  ;Чтобы после запятой, вставить ещё один символ:
  Sleep 0 ; - нужно немножко "поспать",
  ;иначе не будут правильно работать простые автозамены
  Send {space}
return

45

Re: AHK: АвтоЗамены и переназначенная запятая

Здравствуйте!

Спасибо за код выше, отлично работает! Подскажите, пожалуйста, как также сделать работающей с автозаменами точку с пробелом, назначенную на клавишу точки?

Сейчас у меня для точки с пробелом работает вот такой код:

sc035::Send {sc035}{Space}

И когда с его помощью ставишь точку с пробелом после слова-автозамены, получается так же, как со словом «надо» и запятой в этой теме.  Вот какой код надо вставить, чтобы и автозамена развертывалась, и точка ставилась с пробелом?

Я пробовал взять код выше и просто подставить вместо CapsLock sc035 и вместо запятой точку.  Ничего не получается.

46 (изменено: stealzy, 2017-10-01 15:58:58)

Re: AHK: АвтоЗамены и переназначенная запятая

::н::надо

#InputLevel 1
$/:: ; = sc035 = точка в русской раскладке. Топорно, я бы взял функцию, определяющую раскладку, и горячие клавиши точки в зависимости от нее
	SendLevel 1
	Send .
	Sleep 10 ; задержка, чтобы успела отработать автозамена
	Send {Space}
	Return
#InputLevel 0
::н::надо
#InputLevel 1
sc35::
	Send .
	Sleep 10 ; задержка, чтобы успела отработать автозамена
	Send {Space}
	Return
EnHKL := 0x4090409, RuHKL := 0x4190419

::н::надо

#If (GetInputHKL() = RuHKL)
sc35::SendDotAndSpace()
#If (GetInputHKL() = EnHKL)
sc34::SendDotAndSpace()
#If

SendDotAndSpace() {
	#InputLevel 1
	Send .
	Sleep 10 ; задержка для автозамены
	Send {Space}
}

GetInputHKL(win := 0) { ; if handle incorrect, system default HKL return
	hWnd := win
					? win + 0
						? WinExist("ahk_id" win)
						: WinExist(win)
					: WinExist("A")
	If hWnd = 0 ; Window not found
		Return

	WinGetClass, Class
	if (Class == "ConsoleWindowClass") {
			WinGet, consolePID, PID
			DllCall("AttachConsole", Ptr, consolePID)
			VarSetCapacity(buff, 16)
			DllCall("GetConsoleKeyboardLayoutName", Str, buff)
			DllCall("FreeConsole")
			HKL := "0x" . SubStr(buff, -3)
	} else
		HKL := DllCall("GetKeyboardLayout", Ptr, DllCall("GetWindowThreadProcessId", Ptr, hWnd, UInt, 0, Ptr), Ptr)
	return HKL
}

47

Re: AHK: АвтоЗамены и переназначенная запятая

stealzy
Спасибо вам огромное, все работает!

48

Re: AHK: АвтоЗамены и переназначенная запятая

Ребята, всё, что вы писали, я уже пробовал в различных вариациях (простые автозамены, Send, Input). Но, в конце концов пришел к такому варианту "Запятая-пробел":

CapsLock::
    Send `,
return
~CapsLock UP::
    Send {space}
return

- Этим вариантом пользуюсь уже полгода; доволен.