Unicode Enter

Veröffentliche deine funktionierenden Skripte und Funktionen

Moderator: jNizM

User avatar
bichlepa
Posts: 155
Joined: 15 Aug 2014, 06:44
GitHub: bichlepa
Contact:

Unicode Enter

24 May 2017, 14:55

Es gibt so viele schöne Unicode Zeichen, die man in eigene Texte stilvoll einsetzen kann❗
Leider ist es immer so kompliziert, die Passenden Zeichen auf die Schnelle zu finden ⌕. Daher habe ich ein Unicode Helper geschrieben.

Es reicht, ein Begriff aufzuschreiben, z.B. Herz. Dann drückt man die Raute-Taste und voila ♥! Da es mehrere Herz-Symbole gibt, kann man für das zweite einfach das zweite mal Raute drücken ❤!
Oder man möchte einen Pfeil nach Rechts eingeben. Also: rechts eintippen und Raute drücken. Schon erhält man ca. 30 verschiedene Pfeile zur Auswahl. Durch mehrfaches Drücken der Raute Taste, kann man einen der Pfeile aussuchen. ►⇢⇨˃ usw.
Ganz nützlich ist es für Mathegleichungen:
  • 5/6 → ⅚
  • /= → ≠
  • alpha → α
  • ^3 → ³
  • wurzel → √ oder ∛ oder ∜
Möglich ist auch, Abkürzungen zu verwenden: mfg → Mit freundlichen Grüßen
Und es ist möglich, beliebige Tasten oder Tastenkombinationen zu definieren. Z.B. kann nach dem Drücken einer Pfeiltaste und anschließendem Drücken der Raute Taste ein Pfeil eingegeben werden. ←↓↑→

Die Definitionen der Namen und dazu passender Symbole können übersichtlich in einer Textdatei aufgeschrieben werden. Ich habe mir die Mühe gemacht, vielen Unicode Zeichen passende deutsche Namen zu geben, sodass ihr gleich loslegen könnt.
Hier gehts zum ⇛ GitHub Projekt ⇚
Last edited by bichlepa on 25 May 2017, 13:18, edited 1 time in total.
Scripting is too complicated? Try AutoHotFlow, the graphical automation tool! Written in AutoHotkey.
BoBo
Posts: 2515
Joined: 13 May 2014, 17:15

Re: Unicode Enter

24 May 2017, 15:06

Dasamacool :clap: :thumbup: :clap:
Mille grazie 8-)
User avatar
divanebaba
Posts: 743
Joined: 20 Dec 2016, 03:53
Location: Diaspora

Re: Unicode Enter

24 May 2017, 17:05

Hi, das Skript ist ganz nett. Für Chatter sicherlich sogar unentbehrlich.

Bei mir werden ein Haufen Zeichen nicht angezeigt. Das ist aber nicht mein Anliegen.
Dein Skript hat mich inspiriert, endlich die von mir ständig benutzten Sonderzeichen, die in Kombination mit der Alt-Taste zu erzielen sind, auf Deine Art festzulegen.
Gemeint sind, z. B. ± (Alt + 0177 auf dem Zehnerblock) oder ø (Alt + 0248) oder Ø (Alt + 0216)
Vor Jahren stellte jemand ein Skript rein, mit dem man türkische Sonderzeichen kreieren konnte.
Der Aufbau war genial einfach. Unten im Code sieht man, daß nach dem Tippen eines s, gefolgt von zwei Rautesymbolen, das türkische ş mit unterem Querstrich ausgegeben wird. (Das Original war sogar mit nur einem einzigen Rautesymbol.)
Supernützlich, ohne wenn und aber.

Code: Select all

:?*c:s##::                                    ; s## types a ş
SendInput, ş
return

:?*c:g##::                                    ; g## types a ğ
SendInput, ğ
return
Mir persönlich ist Dein Skript zu allmächtig, weswegen ich interessierten Personen, die nur eine Handvoll Sonderzeichen nutzen, die von mir vorgeschlagene Methode ans Herz lege.

Auch wenn ich jahrelang ein ähnliches Verfahren nutzte, kam mir tatsächlich nie in den Sinn, dies für die von mir ständig vergessenen Sonderzeichen zu nutzen.
Stattdessen musste ich ständig in der Windows Zeichentabelle nachschauen.

Code: Select all

:?*c:dm##::                                    
SendInput, Ø
return

:?*c:dmk##::                                    
SendInput, ø
return

:?*c:pm##::                                    
SendInput, ±
return
Ich hatte ständig die Abkürzungen eines der Durchmessersymbole vergessen. Das sollte, mit der Ergänzung von gerade zitiertem Code, Vergangenheit sein.
Allein für den Gedankenanstoß bekommt Dein Skript 5 Sterne. :crazy: :crazy:
[Starklichtbirne IQ >> 250!!] Dank deutscher Lehrerempfehlung, nur Süperdepp und Hartz4-Bezieher, statt Abitürient und Einkommensbezieher.
[Strong light bulb IQ >> 250!!] Thanks to german teacher's recommendation, willful and welfare recipient, instead of high school graduate and moneymaker.

Entering high school for foreign children is not prohibited in GERMANY, it's only made nearly impossible by government.
Virtually the only way - visiting high school abroad.

ADVERTISING: Patent pending strip accumulator - süper advanced technology - priceless inexpensive, space-saving, energy efficient - Patent priority for sale.
User avatar
bichlepa
Posts: 155
Joined: 15 Aug 2014, 06:44
GitHub: bichlepa
Contact:

Re: Unicode Enter

25 May 2017, 06:54

divanebaba wrote:Bei mir werden ein Haufen Zeichen nicht angezeigt. Das ist aber nicht mein Anliegen.
Ist zwar nicht dein Anliegen. Aber es liegt einfacht daran, dass die Schriftart, die du verwendest, die Zeichen nicht unterstützt. Die Standardschriftart in Windows 7 kann viele Sonderzeichen nicht anzeigen.
divanebaba wrote:Mir persönlich ist Dein Skript zu allmächtig, weswegen ich interessierten Personen, die nur eine Handvoll Sonderzeichen nutzen, die von mir vorgeschlagene Methode ans Herz lege.
Da bin ich geneigt zu widersprechen. Niemand muss die von mir geschriebenen Definitionen verwenden. Man kann ganz einfach eine neue Datei erstellen, und eigene Namen und Sonderzeichen eintragen. Für dein Beispiel sähe die Datei so aus:

Code: Select all

dm = Ø
dmk = ø
pm = ±
Scripting is too complicated? Try AutoHotFlow, the graphical automation tool! Written in AutoHotkey.
User avatar
divanebaba
Posts: 743
Joined: 20 Dec 2016, 03:53
Location: Diaspora

Re: Unicode Enter

25 May 2017, 07:47

Ich habe Win7 und habe die Datei german.txt mit Notepad++ v7.4.1 64bit geöffnet. Standard-Schriftart unverändert Courier New.
Ich habe mal interessehalber die Anzeige von Notepad++ auf MS Arial Unicode gestellt. Ich sah keinen Unterschied. Es schien, als wenn die vorher fehlenden Zeichen noch immer fehlen. Liegt vermutlich, wie Du sagst, wirklich am Betriebssystem.

Die Umschaltfunktion durch mehrmaliges Drücken gefällt mir außerordentlich gut. Bei Gelegenheit werde ich es bestimmt in mein Standard-Skript einarbeiten.
Aber, wie erwähnt, ich bin nicht der "Heavy-User" von Sonderzeichen. Ab und zu ein Durchmesser- und das PlusMinus-Zeichen sind wirklich die einzigen Sonderzeichen, die ich nutze.
Es ist für mich sinvoller, einige Hotstrings in mein Standard-Skript einzuarbeiten, als ein zusätzliches Skript zu verwalten. Ich habe nachgezählt, ich habe immerhin 18 Hotstrings, aber alleine 10 sind durch Dein Skript inspiriert worden..

Ich denke, für Chatter, Blogger und alle, die viel Text verfassen, ist Dein Skript eine Goldgrube.

Es gibt da noch den Andreas Borutta, der eine sog. Globale Autokorrektur erstellt hat. Vielleicht kann man das mit Deiner Arbeit kombinieren?
[Starklichtbirne IQ >> 250!!] Dank deutscher Lehrerempfehlung, nur Süperdepp und Hartz4-Bezieher, statt Abitürient und Einkommensbezieher.
[Strong light bulb IQ >> 250!!] Thanks to german teacher's recommendation, willful and welfare recipient, instead of high school graduate and moneymaker.

Entering high school for foreign children is not prohibited in GERMANY, it's only made nearly impossible by government.
Virtually the only way - visiting high school abroad.

ADVERTISING: Patent pending strip accumulator - süper advanced technology - priceless inexpensive, space-saving, energy efficient - Patent priority for sale.
User avatar
LuckyJoe
Posts: 131
Joined: 02 Oct 2013, 09:52

Re: Unicode Enter

26 May 2017, 02:44

Tolles Tool! - Danke!

Mir ist noch aufgefallen, dass die Codierung der "unicode definitions"-Datei eine Rolle spielt. Ich habe diese (mit Notepad++) in unterschiedlichen Codierungen abgespeichert und schon von der Dateigröße unterschiedliche Ergebnisse erzielt (leere Datei öffnen, Codierung eingestellt, german.txt als RAW-Text angezeigt, alles kopiert und in die leere Datei eingefügt):

Ansi.txt:    34.095
UTF-8.txt:   34.095
UTF-8oB.txt: 38.849
UCS-2LE.txt: 65.832
UCS-2BE.txt: 65.832


Damit sind die Dateien, die generiert werden (unicode enter script.ahk), ebenso unterschiedlich groß:

unicode enter script (Ansi).ahk:    399.545
unicode enter script (UTF-8).ahk:   399.545
unicode enter script (UTF-8OB).ahk: 408.230
unicode enter script (UCS-2LE).ahk: 403.530
unicode enter script (UCS-2BE).ahk:   2.335


Beim Generieren der UCS-2BE-Datei erscheint bei mir die Fehlermeldung: "Warning, the equal sign was not found in this line: ��").
Ich gehe davon aus, dass man mit der Codierung "UTF-8 ohne BOM" die "meisten" Zeichen erstellt.

Viele Grüße
Lucky Joe
User avatar
bichlepa
Posts: 155
Joined: 15 Aug 2014, 06:44
GitHub: bichlepa
Contact:

Re: Unicode Enter

26 May 2017, 02:58

Oh. Das habe ich vergessen zu erwähnen. Die Definitions müssen in der UTF-8 Codierung gespeichert werden.
Scripting is too complicated? Try AutoHotFlow, the graphical automation tool! Written in AutoHotkey.
User avatar
bichlepa
Posts: 155
Joined: 15 Aug 2014, 06:44
GitHub: bichlepa
Contact:

Re: Unicode Enter

26 May 2017, 03:05

Ich wundere mich gerade, warum das BOM bei dir einen Unterschied macht. Es hat bei mir keine Auswirkung. Ich habe probiert, die Datei "german.txt" mit und ohne BOM zu speichern. Der Größenunterschied der Dateien war 3 Byte und die generierten Skripte waren identisch.
Scripting is too complicated? Try AutoHotFlow, the graphical automation tool! Written in AutoHotkey.
User avatar
LuckyJoe
Posts: 131
Joined: 02 Oct 2013, 09:52

Re: Unicode Enter

26 May 2017, 03:44

... ist bei mir ein riesengroßer Unterschied: nur bei "UTF-8 ohne BOM" bekomme ich z.B. Pfeile angezeigt, bei "UTF-8" nur Fragezeichen.
User avatar
Gerdi
Posts: 102
Joined: 03 Aug 2015, 18:48
GitHub: grrdi
Location: Germany

Re: Unicode Enter

24 Oct 2017, 19:31

tolles Tool,

PS. mit

Code: Select all

jetzt = reverse time: " A_Now " [JJJJMMTThhmmss]
in der Definitionsdatei,
kann man sogar auf Variablen zugreifen.
Da liegt der Wunsch nahe, eigene Variablen auch mit

Code: Select all

EigeneVar := "Eigener Variableninhalt"
definieren zu koennen.
Win 10 Home (x64) or Win 7 Enterprise
https://github.com/Grrdi/ZackZackOrdner ... master.zip --> get folders on the quick
User avatar
Gerdi
Posts: 102
Joined: 03 Aug 2015, 18:48
GitHub: grrdi
Location: Germany

Re: Unicode Enter

25 Oct 2017, 18:30

in unicode enter generator.ahk hinter der Zeile

Code: Select all

addcode("#hotstring EndChars #")
die Zeile

Code: Select all

addcode("#include *i Include unicode enter script.ahk")
eingefuegt.
Erfüllt meinen Wunsch nach eigenen Variablen.

Beispiel Include-Inhalt:

Code: Select all

; Include unicode enter script.ahk gedacht fuer eigene Variablen
MeinName:="Max Musterman"
MeinStr:="Beispielstr. 69"
MeinOrt:="12345 MeineStadt"
MeinTel:="+49 123 456789"
MeinMobil:="+49 169 87654321"
MeineMail:="Max.Mustermann@Domain.de"
MeinAdrh:=MeinName "`t" MeinStr "`t" MeinOrt
MeinInfoh:=MeinName "`t" MeinStr "`t" MeinOrt "`t" MeineMail "`t" MeinTel "`t" MeinMobil
MeinAdrv:=MeinName "`r" MeinStr "`r" MeinOrt
MeinInfov:=MeinName "`r" MeinStr "`r" MeinOrt "`r" MeineMail "`r" MeinTel "`r" MeinMobil
zugehöriger Unicode Definitionstext (ab Zeile 7):

Code: Select all

sg = Sehr geehrte Damen und Herren
jetzt = reverse time: " A_Now " [JJJJMMTThhmmss]
now = " A_Now "
[T] = [" A_YYYY A_MM A_DD A_Hour A_Min A_Sec "]
Heute = " A_DD "." A_MM "." A_YYYY "
Bden = Berlin den " A_DD "." A_MM "." A_YYYY "
MeinN = " MeinName "
MeinS = " MeinStr "
MeinO = " MeinOrt "
MeinT = " MeinTel "
MeinM = " MeinMobil "
Meine = " MeineMail "
abs, MeinAh = " MeinAdrh "
MeinIh = " MeinInfoh "
MeinAv = " MeinAdrv "
MeinIv = " MeinInfov "
Win 10 Home (x64) or Win 7 Enterprise
https://github.com/Grrdi/ZackZackOrdner ... master.zip --> get folders on the quick
User avatar
bichlepa
Posts: 155
Joined: 15 Aug 2014, 06:44
GitHub: bichlepa
Contact:

Re: Unicode Enter

26 Oct 2017, 13:35

Es ist ein netter Hack, den du gefunden hast, um Variableninhalte hinzuzufügen.
Auch die Idee mit dem Include ist gut. Ich habe gerade in GitHub eine neue Version eingecheckt. Nun kann in die Definitionsdatei ein #include geschrieben werden, woraufhin der Rest der Datei in den generierten Skript inkludiert wird.

Weitere Neuerung ist, dass ein belibiger Hotkey (Standardmäßig "Pause") verwendet werden kann, statt der Raute Taste bisher. Aber ein Problem konnte ich nicht lösen. Nämlich bleibt jetzt der zuletzt eingegebene Hotstring immer aktiv. Auch wenn in der Zwischenzeit andere Zeichen eingegeben wurden oder geklickt wurde. Hilfe ist willkommen!
Scripting is too complicated? Try AutoHotFlow, the graphical automation tool! Written in AutoHotkey.
User avatar
Gerdi
Posts: 102
Joined: 03 Aug 2015, 18:48
GitHub: grrdi
Location: Germany

Re: Unicode Enter

26 Oct 2017, 17:00

Danke, klasse gemacht :bravo:
Aber ein Problem konnte ich nicht lösen. Nämlich bleibt jetzt der zuletzt eingegebene Hotstring immer aktiv. Auch wenn in der Zwischenzeit andere Zeichen eingegeben wurden oder geklickt wurde. Hilfe ist willkommen!
Dein Script habe ich nur an der Oberfläche durchleuchtet, auch weiß ich nicht, ob ich Dein Problem richtig verstanden habe, aber wenn ich in unicode enter script.ahk

Code: Select all

SoundBeep
if (A_TimeSincePriorHotkey>2000)
 	goto turnOffHotkeyShowNextChar
vor das Return von
turnOffHotkeyShowNextChar2:
einfüge, wird das Piepen deutlich seltener, wie wenn nur SoundBeep eingesetzt wird.
Win 10 Home (x64) or Win 7 Enterprise
https://github.com/Grrdi/ZackZackOrdner ... master.zip --> get folders on the quick
pramach
Posts: 49
Joined: 24 Jan 2018, 08:20

Re: Unicode Enter

21 Feb 2018, 11:04

Hi
Bin gerade erst auf dein Skript gestossen. Cool. Danke.
Was mir aufgefallen ist ...
- Zeile 14: "filefound := true" brauchst du für was ?
- In deiner Datei "german.txt" starten einige Bezeichner mit einem Grossbuchstaben (z.B. Taschenrechner) und andere nicht (z.B. weihnachtsbaum). Hat das einen speziellen Grund ?
- Deine generierte Datei hat immer den Namen "unicode enter script.ahk". Braucht man machmal aber Deutsch und manchmal Englisch, muss man das ganze Verzeichnis duplizieren. Besser wäre die Sprache im Namen, dann könnte man im gleichen Verzeichnis sowohl das deutsche als auch englische Skript generieren. Wobei mir eigentlich ein Skript mit beiden Bezeichnungen am liebsten wäre ;-)
- Das generierte Skript könnte man in der Länge und Grösse einfach reduzieren: Aus

Code: Select all

if (not instr(a_thishotkey,":?:"))
{
	settimer,prepareNewChar,-1
}
else
{
	settimer,showNewChar,-1
}
wird einfach

Code: Select all

if (not instr(a_thishotkey,":?:"))
	settimer,prepareNewChar,-1
else
	settimer,showNewChar,-1
Spart rund 6'000 Zeilen ... und damit etwa 17 KB.
- Spielt man mit der Datei und dem Generator wäre eine Zeile "#SingleInstance, force" in der generierten Datei sinnvoll ;-)
burque505
Posts: 584
Joined: 22 Jan 2017, 19:37

Re: Unicode Enter

31 Mar 2018, 15:37

Hallo bichlepa, das Skript is wirklich toll (und dazu auch extrem nützlich :D ).
Für den QuickStart habe ich "german.txt" in "english.txt" umbenannt.
Ein animiertes GIF von meinen Resultaten (AHK_L 1.1.28.00 64-bit, Win7 SP1):
Unicode_1.gif
Unicode_1.gif (37.8 KiB) Viewed 1250 times
Habe also

Code: Select all

lastsentlength:=strlen(substr(a_thishotkey,2))
anstatt

Code: Select all

lastsentlength:=strlen(substr(a_thishotkey,3))
(Zeile 20, glaube ich)
eingefügt, und jetzt geht es ziemlich besser :D
Unicode_2.gif
Unicode_2.gif (38.19 KiB) Viewed 1250 times
Grüße,
burque505
User avatar
bichlepa
Posts: 155
Joined: 15 Aug 2014, 06:44
GitHub: bichlepa
Contact:

Re: Unicode Enter

01 Apr 2018, 07:54

Hallo burque505,
danke für den Feedback!
Ich kann den Fehler nicht reproduzieren. So ein Problem habe ich schon mal behoben. Hast du die aktuellen Quellen aus GitHub? Wenn ja, kannst du mir bitte deine Skripte schicken?
Scripting is too complicated? Try AutoHotFlow, the graphical automation tool! Written in AutoHotkey.
burque505
Posts: 584
Joined: 22 Jan 2017, 19:37

Re: Unicode Enter

01 Apr 2018, 16:54

Gerne, habe dir einen PM geschickt, Skripte liegen bei.
User avatar
bichlepa
Posts: 155
Joined: 15 Aug 2014, 06:44
GitHub: bichlepa
Contact:

Re: Unicode Enter

02 Apr 2018, 02:58

Mir ist aufgefallen, dass du in der Animation zuerst die Raute-Taste drückst, bevor du die Pause Taste drückst. Die Raute muss nicht eingegeben werden. Wenn du vorher die Raute drückst, dann muss natürlich ein Zeichen mehr entfernt werden.
Das hat mich (wieder) auf einen Bug aufmerksam gemacht: Es wird immer die Ersetzung für den zuletzt erkannten Hotstring einfügt, auch wenn man zwischendurch andere Tasten gedrückt hat. Das konnte ich noch nicht lösen.
Scripting is too complicated? Try AutoHotFlow, the graphical automation tool! Written in AutoHotkey.
just me
Posts: 5515
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Unicode Enter

02 Apr 2018, 06:46

Moin bichlepa,

weil das Thema wieder hochgekommen ist, habe ich mich auch noch einmal internsiver mit den Skripten beschäftigt.

Ich habe mich dann daran erinnert, dass ich auch schon mal einen Skriptgenerator geschrieben habe, der erst ähnlich wie Dein AddCode() das Skript zeilenweise aufgebaut hat. Weil das auch noch 'schön' aussehen sollte, habe ich mich immer wieder damit herumgeärgert, wenn sich nachträgliche Änderungen auf mehrere Zeilen auswirkten. Ich habe dann für die überwiegend 'festen' Teile 'Templatedateien' erstellt, die im Stück eingelesen und dann soweit nötig über 'Platzhalter' modifiziert werden. Das hat das Editieren dieser Skriptteile für mich deutlich vereinfacht.

Nachdem ich mir sowohl unicode enter generator.ahk als auch das 'Ergebnis' unicode enter script.ahk angeschaut habe, bin ich der Meinung, dass Du für den 'festen' ein Template nutzen kannst. Als Platzhalter habe ich Zeichenketten im Format ???...??? verwendet.

Template.ahk:

Code: Select all

#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir%
#persistent
#hotstring ?*B0

???FileInclude???

showNewChar:
gosub prepareNewChar
return

???TriggerHotkey???::
gosub showNextChar
return

prepareNewChar:
lastsentchar:=""
lastsentindex:=0
if instr(a_thishotkey, "::")
{
	lastsentlength:=strlen(substr(a_thishotkey,3))
}
else
{
	lastsentlength:=0
}
return

showNextChar:
settimer, turnOffTooltip, off
settimer, turnOffHotkeyShowNextChar, off
lastsentindex++
if (lastsentindex > currentChars.maxindex())
	lastsentindex = 1
currentcharsstring = 
currentcharsstring1 = 
currentcharsstring2 = 
for oneindex, onechar in currentChars
{
	if (oneindex < lastsentindex)
	{
		currentcharsstring1.= onechar 
		if (CurrentExplanations[oneindex])
		{
			currentcharsstring1.= "(" CurrentExplanations[oneindex] ")"
		}
		currentcharsstring1.= "`n"
	}
	else
	{
		currentcharsstring2.= onechar 
		if (CurrentExplanations[oneindex])
		{
			currentcharsstring2.= "(" CurrentExplanations[oneindex] ")"
		}
		currentcharsstring2.= "`n"
	}
}
currentcharsstring := currentcharsstring2 currentcharsstring1
if (A_CaretX && A_CaretY)
{
	tooltip,% currentcharsstring, % A_CaretX, % A_CaretY +20
}
else
{
	tooltip,% currentcharsstring
}
send,{bs %lastsentlength%}
sendraw,% currentChars[lastsentindex]
lastsentchar:=currentChars[lastsentindex]
lastsentlength:=new_strlen(currentChars[lastsentindex])
loop
{
	if (GetKeyState("???TriggerHotkey???") == False)
		break
	sleep 10
}
settimer, turnOffTooltip, -1000
settimer, turnOffHotkeyShowNextChar, -5000
settimer, turnOffHotkeyShowNextChar2, 1
return

turnOffHotkeyShowNextChar:
hotkey,???TriggerHotkey???,showNextChar, off
settimer, turnOffHotkeyShowNextChar, off
settimer, turnOffHotkeyShowNextChar2, off
return

turnOffHotkeyShowNextChar2:
Input, SingleKey, L1 T0.2 V, {LControl}{RControl}{LAlt}{RAlt}{LShift}{RShift}{LWin}{RWin}{AppsKey}{F1}{F2}{F3}{F4}{F5}{F6}{F7}{F8}{F9}{F10}{F11}{F12}{Left}{Right}{Up}{Down}{Home}{End}{PgUp}{PgDn}{Del}{Ins}{BS}{Capslock}{Numlock}{PrintScreen}{Pause}
if (SingleKey && SingleKey != "???TriggerHotkey???")
goto turnOffHotkeyShowNextChar
return

turnOffTooltip:
tooltip
return

showSymbols:
hotkey,???TriggerHotkey???,showNextChar, on
settimer,turnOffHotkeyShowNextChar, -5000
if (not instr(a_thishotkey,":?:"))
{
	settimer,prepareNewChar,-1
}
else
{
	settimer,showNewChar,-1
}
return

new_strlen(newstrlen_string)
{
	newstrlen_length:=0
	loop,parse,newstrlen_string
	{
		newstrlen_length++
		Transform,newstrlen_charnumber,asc,%A_LoopField%
		if (newstrlen_charnumber >= 0xDC00 && newstrlen_charnumber <= 0xDFFF)
			newstrlen_length--
	}
	return newstrlen_length
}
Ich habe hier noch ein Label showSymbols: eingefügt, das die (für mich) festen Teile aus den Hotkey/string Routinen enthält. Der Code für die Generierung der Hotkeys/strings sähe dann so aus:

Code: Select all

for oneindex, oneentry in allEntriesInverted
{
	;~ MsgBox % oneentry.keytype " -" oneentry.keyname " - " oneentry.chars[1] "," oneentry.chars[2] "," oneentry.chars[3]
	;Add hotkey or hotstring
	If (oneentry.keytype = "hotkey")
	{
		addcode("~" oneentry.keyname "::")
	}
	else
		addcode("::" oneentry.keyname "::")

	;Write variables which will contain the strings and their comments
	codeline:="CurrentChars:= ["
	codelineexpl:="CurrentExplanations:= ["
	for onecharindex, onechar in oneentry.chars
	{
		if a_index > 1
		{
			codeline.=", "
			codelineexpl.=", "
		}
		codeline.="""" onechar """"
		codelineexpl.="""" oneentry.explanations[onecharindex] """"
	}

	codeline.="]"
	codelineexpl.="]"
	addcode(codeline)
	addcode(codelineexpl)
	addcode("gosub, showsymbols")
	addcode("return")

; 	;Enable hotkey
; 	addcode("hotkey," triggerhotkey ",showNextChar, on")
; 	;~ addcode("fileappend,%a_tickcount% %a_thishotkey%, log.txt") ;only for debugging
; 	addcode("settimer,turnOffHotkeyShowNextChar, -5000") ;disable the hotkey after some seconds
;
; 	addcode("if (not instr(a_thishotkey,"":?:""))")
; 	addcode("{")
; 	 ;If this is a hotkey, only prepare the new char without showing it. It will only be shown when user presses the hotkey
; 	addcode("	settimer,prepareNewChar,-1")
; 	addcode("}")
; 	addcode("else")
; 	addcode("{")
; 	;If this is a hotstring, the user already pressed the hotkey. So show the first char
; 	addcode("	settimer,showNewChar,-1")
; 	addcode("}")
; 	addcode("return")

	progresspercentage:=6+(94/countallEntriesInverted*A_Index)
}
Den Code für die Generierung des festen Teils stelle ich mir so vor:

Code: Select all

FileRead, scriptcode, *t Template.ahk
If (ErrorLevel)
{
   MsgBox, 16, Unicode enter generator, Couldn't find or read the file Template.ahk.`nThe program will exit.
   ExitApp
}
scriptcode := StrReplace(scriptcode, "???FileInclude???", fileinclude)
scriptcode := StrReplace(scriptcode, "???TriggerHotkey???", triggerhotkey)
scriptcode .= "`n"
Vielleicht gefällt Dir die Idee? (Ich habe das allerdings nicht wirklich getestet!)

Ostergrüße!
just me

Edit: Template.ahk gefixt: Break statt ???TriggerHotkey???
User avatar
Frosti
Posts: 122
Joined: 27 Oct 2017, 14:30
GitHub: Ixiko

Re: Unicode Enter

03 Apr 2018, 05:54

Danke Bichlepa,
ich war gerade dabei ähnliches zu machen. Deines ist genau das was ich wollte. Die Sonderzeichen sind nicht nur für Chatuser gut, sondern auch um besonderen Text hervorzuheben. Zum Beispiel in GUI‘s oder Markdown Dateien wie der Github Readme.md.
Mein Hinweis für alle die immer nur eine Anwendungsmöglichkeit sehen.

Return to “Skripte und Funktionen”

Who is online

Users browsing this forum: No registered users and 2 guests