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

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