• Das Skript ist jetzt mit dem neuen AutoHotkey_L Unicode kompatibel, aber nur mehr bedingt mit dem alten AHK oder dem AutoHotkey_L ANSI.

• Die Dynamische BST (M3+F3) reagiert jetzt nicht nur auf Compose, sondern auch auf Ebene 5/6.

git-svn-id: https://svn.neo-layout.org@2407 b9310e46-f624-0410-8ea1-cfbb3a30dc96
This commit is contained in:
mösi 2011-10-06 09:23:05 +00:00
parent 77ebd4b08e
commit 988ba05fa8
18 changed files with 98 additions and 67 deletions

View file

@ -1,3 +1,5 @@
; -*- encoding: utf-8 -*-
SetWorkingDir, %A_ScriptDir%
#include %A_ScriptDir%\
@ -13,11 +15,11 @@ SetWorkingDir, %A_ScriptDir%
; Hier liegt die Tastaturbelegung
#include source\keydefinitions.ahk
; Shortcuts, um die Zeichen wieder sauber zur Applikation bringen zu können
; Shortcuts, um die Zeichen wieder sauber zur Applikation bringen zu können
#include source\performance.ahk
#include source\shortcuts.ahk
; Good-old AHK-Skripts, enthalten die ersten Key-Hooks für Mod-Tasten
; Good-old AHK-Skripts, enthalten die ersten Key-Hooks für Mod-Tasten
; Achtung: Hinter dem ersten Keyboard-Hook werden keine globalen Variablen
; mehr gesetzt!
#include source\initialize.ahk

View file

@ -1799,7 +1799,17 @@ SetFormat, Integer, hex
break
char := asc(SubStr(str,1,1))
str := SubStr(str,2)
if (char < 0x80)
if (A_IsUnicode) {
if ((char < 0xDC00) or (char >= 0xE000))
result .= "U" . SubStr("000000" . Substr(char, 3), -5)
else {
; unwrap surrogates
char2 := asc(Substr(str,1,1))
str := SubStr(str,2)
result .= "U" . SubStr("000000" . SubStr(((char & 0x3FF) << 12) + (char2 & 0x3FF), 3), -5)
}
}
else if (char < 0x80)
result .= "U" . SubStr("000000" . SubStr(char,3),-5)
else if (char < 0xC0) {
; error

View file

@ -1,4 +1,6 @@
CompRevision := "2231"
; -*- encoding: utf-8 -*-
CompRevision := "2354"
LoadDefaultCompose() {
global

View file

@ -1,4 +1,4 @@
; öäü
; -*- encoding: utf-8 -*-
IniRead,einHandNeo,%ini%,Global,einHandNeo,0
If (einHandNeo)
@ -14,7 +14,7 @@ CharProc___EHt() {
if (einHandNeo) {
CharProc___EH1()
if (zeigeModusBox)
TrayTip,NEO-Einhandmodus,Der NEO-Einhand-Modus wurde aktiviert. Zum Deaktivieren Mod3+F10 drücken.,10,1
TrayTip,NEO-Einhandmodus,Der NEO-Einhand-Modus wurde aktiviert. Zum Deaktivieren Mod3+F10 drücken.,10,1
} else {
CharProc___EH0()
if (zeigeModusBox)
@ -37,7 +37,7 @@ CharProc___EH1() {
TKEH_VK38SC009 := "VK35SC006" ; 8 -> 5
TKEH_VK39SC00A := "VK34SC005" ; 9 -> 4
TKEH_VK30SC00B := "VK33SC004" ; 0 -> 3
TKEH_VKDBSC00C := "VK32SC003" ; ß -> 2
TKEH_VKDBSC00C := "VK32SC003" ; ß -> 2
TKEH_VKDDSC00D := "VK31SC002" ; tot2 -> 1
; Reihe 2
TKEH_VK5ASC015 := "VK54SC014" ; k -> w
@ -45,7 +45,7 @@ CharProc___EH1() {
TKEH_VK49SC017 := "VK45SC012" ; g -> l
TKEH_VK4FSC018 := "VK57SC011" ; f -> v
TKEH_VK50SC019 := "VK51SC010" ; q -> x
TKEH_VKBASC01A := "tab" ; ß -> tab
TKEH_VKBASC01A := "tab" ; ß -> tab
TKEH_VKBBSC01B := "VKDCSC029" ; tot3 -> tot1
; Reihe 3
TKEH_VK48SC023 := "VK47SC022" ; s -> o
@ -56,9 +56,9 @@ CharProc___EH1() {
; Reihe 4
TKEH_VK4ESC031 := "VK42SC030" ; b -> z
TKEH_VK4DSC032 := "VK56SC02F" ; m -> p
TKEH_VKBCSC033 := "VK43SC02E" ; , -> ä
TKEH_VKBESC034 := "VK58SC02D" ; . -> ö
TKEH_VKBDSC035 := "VK59SC02C" ; j -> ü
TKEH_VKBCSC033 := "VK43SC02E" ; , -> ä
TKEH_VKBESC034 := "VK58SC02D" ; . -> ö
TKEH_VKBDSC035 := "VK59SC02C" ; j -> ü
; Modify Space
ED1("space","P__EHSd")
GUISYM("P__EHSd","EH")
@ -83,7 +83,7 @@ CharProc___EH0() {
TKEH_VK38SC009 := "" ; 8
TKEH_VK39SC00A := "" ; 9
TKEH_VK30SC00B := "" ; 0
TKEH_VKDBSC00C := "" ; ß
TKEH_VKDBSC00C := "" ; ß
TKEH_VKDDSC00D := "" ; tot2
; Reihe 2
TKEH_VK5ASC015 := "" ; k
@ -91,7 +91,7 @@ CharProc___EH0() {
TKEH_VK49SC017 := "" ; g
TKEH_VK4FSC018 := "" ; f
TKEH_VK50SC019 := "" ; q
TKEH_VKBASC01A := "" ; ß
TKEH_VKBASC01A := "" ; ß
TKEH_VKBBSC01B := "" ; tot3
; Reihe 3
TKEH_VK48SC023 := "" ; s
@ -114,7 +114,7 @@ CharProc___EH0() {
CharProc__EHSd() {
global
; Space im Einhandmodus gedrückt
; Space im Einhandmodus gedrückt
PRspace := "P__EHSu"
if (!EHSpacePressed) {
EHSpacePressed := 1

View file

@ -1,3 +1,5 @@
; -*- encoding: utf-8 -*-
if (A_IsCompiled) {
; Revisionsinformation bereits verfügbar
} else {
@ -66,7 +68,7 @@ if (inputlocale<>"00000407" and inputlocale<>"00000807" and inputlocale<>"000104
`t%inputlocale%
`nDas deutsche QWERTZ muss als Standardlayout eingestellt
sein, damit %name% wie erwartet funktioniert.
`nÄndern Sie die Tastatureinstellung unter
`nÄndern Sie die Tastatureinstellung unter
`tSystemsteuerung
`t-> Regions- und Sprachoptionen
`t-> Sprachen

View file

@ -1,3 +1,5 @@
; -*- encoding: utf-8 -*-
UpdateOldLEDS() {
global
SwitchIsOn := 1

View file

@ -1,7 +1,9 @@
; Wir müssen F24 nicht hooken, aber bei einem Restart hat AHK den Bug,
; dass manchmal der erste Hook ausgeführt wird, als wäre diese Taste
; gedrückt worden. Da F24 auf den wenigsten Tastaturen vorkommt und daher für
; NEO uninteressant ist, kehren wir einfach wieder zurück.
; -*- encoding: utf-8 -*-
; Wir müssen F24 nicht hooken, aber bei einem Restart hat AHK den Bug,
; dass manchmal der erste Hook ausgeführt wird, als wäre diese Taste
; gedrückt worden. Da F24 auf den wenigsten Tastaturen vorkommt und daher für
; NEO uninteressant ist, kehren wir einfach wieder zurück.
~F24::return
+pause::

View file

@ -1,3 +1,5 @@
; -*- encoding: utf-8 -*-
IniRead,LangSTastatur,%ini%,Global,LangSTastatur,0
If (LangSTastatur)
CharProc__LnS1()
@ -11,7 +13,7 @@ CharProc__LnSt() {
if (LangSTastatur) {
CharProc__LnS1()
if (zeigeModusBox)
TrayTip,Lang-S-Tastatur,Die Lang-S-Belegungsvariante wurde aktiviert. Zum Deaktivieren`, Mod3+F11 drücken.,10,1
TrayTip,Lang-S-Tastatur,Die Lang-S-Belegungsvariante wurde aktiviert. Zum Deaktivieren`, Mod3+F11 drücken.,10,1
} else {
CharProc__LnS0()
if (zeigeModusBox)
@ -22,7 +24,7 @@ CharProc__LnSt() {
CharProc__LnS1() {
global
; Lange-s-Tastatur aktivieren
ED("VKBASC01A",1,"U000073","U001E9E","U0000DF","" ,"U0003C2","U002218") ; ß
ED("VKBASC01A",1,"U000073","U001E9E","U0000DF","" ,"U0003C2","U002218") ; ß
ED("VK48SC023",1,"U00017F","U000053","U00003F","U0000BF","U0003C3","U0003A3") ; s
NEONumLockLEDState := "On"
UpdateNEOLEDS()
@ -31,11 +33,11 @@ CharProc__LnS1() {
CharProc__LnS0() {
global
; Lange-s-Tastatur deaktivieren
ED("VKBASC01A",1,"U0000DF","U001E9E","U00017F","" ,"U0003C2","U002218") ; ß
ED("VKBASC01A",1,"U0000DF","U001E9E","U00017F","" ,"U0003C2","U002218") ; ß
ED("VK48SC023",1,"U000073","U000053","U00003F","U0000BF","U0003C3","U0003A3") ; s
NEONumLockLEDState := "Off"
UpdateNEOLEDS()
if (zeigeModusBox)
TrayTip,Lange-s-Tastatur,Die Lange-s-Belegungsvariante wurde aktiviert. Zum Deaktivieren`, Mod3+F11 drücken.,10,1
TrayTip,Lange-s-Tastatur,Die Lange-s-Belegungsvariante wurde aktiviert. Zum Deaktivieren`, Mod3+F11 drücken.,10,1
}

View file

@ -1,4 +1,6 @@
; die Nachfolgenden sind nützlich um sich die Qwertz-Tasten abzugewöhnen, da alle auf der 4. Ebene vorhanden.
; -*- encoding: utf-8 -*-
; die Nachfolgenden sind nützlich um sich die Qwertz-Tasten abzugewöhnen, da alle auf der 4. Ebene vorhanden.
lernModus_std_Return := 0
lernModus_std_Backspace := 0
lernModus_std_PgUp := 0
@ -28,7 +30,7 @@ CharProc___LMt() {
if (lernModus) {
CharProc___LM1()
if (zeigeModusBox)
TrayTip,NEO-Lernmodus,NEO-Lernmodus wurde aktiviert. Zum Deaktivieren`, Mod3+F9 drücken.,10,1
TrayTip,NEO-Lernmodus,NEO-Lernmodus wurde aktiviert. Zum Deaktivieren`, Mod3+F9 drücken.,10,1
} else {
CharProc___LM0()
if (zeigeModusBox)

View file

@ -1,3 +1,5 @@
; -*- encoding: utf-8 -*-
NEOEbeneAktualisieren() {
global
Ebene7 := 0
@ -15,8 +17,8 @@ NEOEbeneAktualisieren() {
; isMod2Locked 00110011001100110011001100110011
; isShiftPressed 01010101010101010101010101010101
EbeneNC := SubStr("12123535444466664444353512126666",ModPos,1) ; Für normale Tasten (reagieren nicht auf CapsLock)
EbeneC := SubStr("12213535444466664444353512216666",ModPos,1) ; Für Buchstaben (reagieren auf CapsLock)
EbeneNC := SubStr("12123535444466664444353512126666",ModPos,1) ; Für normale Tasten (reagieren nicht auf CapsLock)
EbeneC := SubStr("12213535444466664444353512216666",ModPos,1) ; Für Buchstaben (reagieren auf CapsLock)
Ebene7 := SubStr("00000000010100000101000000000000",ModPos,1)
Ebene8 := SubStr("00000000000001010000000000000101",ModPos,1)
@ -90,7 +92,7 @@ ToggleMod4Lock() {
UpdateNEOLEDS()
}
if (zeigeLockBox)
TrayTip,Mod4-Feststellung,Um Mod4 wieder zu lösen`, drücke beide Mod4-Tasten gleichzeitig!,3,1
TrayTip,Mod4-Feststellung,Um Mod4 wieder zu lösen`, drücke beide Mod4-Tasten gleichzeitig!,3,1
}
}

View file

@ -1,6 +1,4 @@
; -*- encoding:utf-8 -*-
; AHK versteht zwar kein utf-8, aber so lässt sichs doch leichter eingeben.
DefineXKBSym(name,val) {
global
@ -1980,7 +1978,7 @@ CompRevision = %1%
OutputFile = %2%
FileDelete,%OutputFile%
FileAppend,CompRevision := "%CompRevision%"`r`n`r`nLoadDefaultCompose() {`r`n global`r`n`r`n, %OutputFile% ; }
FileAppend,`; -*- encoding: utf-8 -*-`r`n`r`nCompRevision := "%CompRevision%"`r`n`r`nLoadDefaultCompose() {`r`n global`r`n`r`n, %OutputFile% ; }
loop %Numpars% {
if (A_Index < 3)

View file

@ -10,17 +10,17 @@ CharProcNordTt() {
isNordTast := 1
CharProcNordT1()
if (zeigeModusBox)
TrayTip,NordTast-Belegungsvariante,Die Belegungsvariante NT wurde aktiviert. Zum Umschalten`, Mod3+F12 druecken.,10,1
TrayTip,NordTast-Belegungsvariante,Die Belegungsvariante NT wurde aktiviert. Zum Umschalten`, Mod3+F12 drücken.,10,1
} else if (isNordTast == 1) {
isNordTast := 2
CharProcNordT2()
if (zeigeModusBox)
TrayTip,NordTast-Belegungsvariante,Die Belegungsvariante AdNW wurde aktiviert. Zum Umschalten`, Mod3+F12 druecken.,10,1
TrayTip,NordTast-Belegungsvariante,Die Belegungsvariante AdNW wurde aktiviert. Zum Umschalten`, Mod3+F12 drücken.,10,1
} else if (isNordTast == 2) {
isNordTast := 3
CharProcNordT3()
if (zeigeModusBox)
TrayTip,NordTast-Belegungsvariante,Die Belegungsvariante DIEgO wurde aktiviert. Zum Umschalten`, Mod3+F12 druecken.,10,1
TrayTip,NordTast-Belegungsvariante,Die Belegungsvariante DIEgO wurde aktiviert. Zum Umschalten`, Mod3+F12 drücken.,10,1
} else {
isNordTast := 0
CharProcNordT0()

View file

@ -1,3 +1,5 @@
; -*- encoding: utf-8 -*-
#MaxThreadsPerHotKey 1
Thread,Interrupt,-1,-1

View file

@ -1,3 +1,5 @@
; -*- encoding: utf-8 -*-
EnvGet, WindowsEnvTempFolder, TEMP
ResourceFolder = %WindowsEnvTempFolder%\Neo2
FileCreateDir, %ResourceFolder%

View file

@ -23,10 +23,14 @@ UniFontZipFontPath := "dejavu-fonts-ttf-" . UniFontVersion . "/ttf/" . UniFontFi
Check_BSTUpdate(DoBSTUpdate = 0) {
global
if (useDBST) {
if (!useBST and (Comp != "")) {
if (!useBST and ((Comp != "") or (EbeneC == 5) or (EbeneC == 6))) {
useBST := 1
BSTLastComp := ""
CharProc__BST1()
} else if (useBST and ((Comp == "") and (EbeneC != 5) and (EbeneC != 6))) {
useBST := 0
BSTLastComp := ""
CharProc__BST0()
}
}
if (useBST
@ -35,13 +39,6 @@ Check_BSTUpdate(DoBSTUpdate = 0) {
or (EbeneC != BSTLastEbeneC)
or (EbeneNC != BSTLastEbeneNC)))
BSTUpdate()
if (useDBST) {
if (useBST and (Comp == "")) {
useBST := 0
BSTLastComp := ""
CharProc__BST0()
}
}
}
BSTUpdate() {
@ -162,7 +159,7 @@ CharProc_DBSTt() {
useDBST := !(useDBST)
if (useDBST) {
if (zeigeModusBox)
TrayTip,Dynamische Bildschirmtastatur,Die dynamische Bildschirmtastatur wurde aktiviert. Zum Deaktivieren`, Mod3+F3 druecken.,10,1
TrayTip,Dynamische Bildschirmtastatur,Die dynamische Bildschirmtastatur wurde aktiviert. Zum Deaktivieren`, Mod3+F3 drücken.,10,1
} else {
if (zeigeModusBox)
TrayTip,Dynamische Bildschirmtastatur,Die dynamische Bildschirmtastatur wurde deaktiviert.,10,1
@ -177,13 +174,13 @@ BSTOnClose() {
BSTOnSize() {
global
Gui, Show, % "y" . yposition . " w" . A_GuiWidth . " h" . A_GuiWidth*199/729 . " NoActivate", Neo-Bildschirmtastatur
Gui, Font, % "s" . A_GuiWidth*12/729 . " bold", % UniFontName
Gui, Show, % "Y" . yposition . " W" . A_GuiWidth . " H" . Round(A_GuiWidth*199/729,0) . " NoActivate", Neo-Bildschirmtastatur
Gui, Font, % "s" . Round(A_GuiWidth*12/729,0) . " bold", % UniFontName
loop,parse,GuiKeyList,`,
{
GuiPhysKey := A_LoopField
GuiControl,Font,GuiKey%GuiPhysKey%
GuiControl,Move,GuiKey%GuiPhysKey%, % "x" . GuiPosx%GuiPhysKey%*A_GuiWidth/729 . " y" . GuiPosy%GuiPhysKey%*A_GuiWidth/729 . " w" . 38*A_GuiWidth/729 . " h" . 38*A_GuiWidth/729
GuiControl,Move,GuiKey%GuiPhysKey%, % "x" . Round(GuiPosx%GuiPhysKey%*A_GuiWidth/729,0) . " y" . Round(GuiPosy%GuiPhysKey%*A_GuiWidth/729,0) . " w" . Round(38*A_GuiWidth/729,0) . " h" . Round(38*A_GuiWidth/729,0)
}
GuiControl,,Picture0, % "*w" . A_GuiWidth . " *h-1 " . ResourceFolder . "\ebene0.png"
}

View file

@ -1,15 +1,17 @@
; -*- encoding: utf-8 -*-
/* SHORTCUTS
Da in diesem AHK-Skript sämtliche Tastendrücke zur weiteren Verarbeitung
in Unicode- und Spezialzeichen umgewandelt werden, müssen sie für eine
effiziente Tasten-Ausgabe, wo möglich, zurück gewandelt werden. Dazu
Da in diesem AHK-Skript sämtliche Tastendrücke zur weiteren Verarbeitung
in Unicode- und Spezialzeichen umgewandelt werden, müssen sie für eine
effiziente Tasten-Ausgabe, wo möglich, zurück gewandelt werden. Dazu
dienen Shortcuts: Soll beispielsweise das Unicode-Zeichen U0061 (kleines
a) ausgegeben werden, muss dieses durch "send {a}" ersetzt werden. Die
dafür notwendigen Rückwandlungskonstanten werden hier, teilweise
dafür notwendigen Rückwandlungskonstanten werden hier, teilweise
automatisiert, definiert und im entsprechenden Unterprogramm zur Anwendung
gebracht.
*/
; ###### Shortcuts für alle ASCII-Zeichen (0x21 bis 0x7E)
; ###### Shortcuts für alle ASCII-Zeichen (0x21 bis 0x7E)
SetFormat, integer, hex
char := 0x21
loop {
@ -29,9 +31,9 @@ CSU00001B := "esc"
CSU000020 := "space"
/**** die folgenden Shortcuts ersetzen die automatische Wahl entsprechender
**** down- und up-Sendezeichen, da die Zeichenerzeugung entweder aufwändiger
**** down- und up-Sendezeichen, da die Zeichenerzeugung entweder aufwändiger
**** ist (wie bei den diversen toten Zeichen) oder schlicht mit AHK nicht
**** geht (wie das Key-Repeat der schließenden Klammer).
**** geht (wie das Key-Repeat der schließenden Klammer).
*/
DNCSU00007D := "{}}" ; "{} down}" geht nicht, warum auch immer
; CSU00007D := ""
@ -123,7 +125,7 @@ CSS__L_M2 := "LShift"
CSS__R_M2 := "RShift"
/*
Jetzt noch ein paar Verschönerungsabkürzungen
Jetzt noch ein paar Verschönerungsabkürzungen
*/
CBS____M2 := "Shift+"
CBS____M3 := "Mod3+"
@ -137,7 +139,7 @@ CBS__Comp := "Compose"
CBT__Acut := "Akut"
CBT__grav := "Gravis"
CBT__cedi := "Cedille"
CBT__abdt := "Punkt darüber"
CBT__abdt := "Punkt darüber"
CBT__ogon := "Ogonek"
CBT__cflx := "Zircumflex"
CBT__cron := "Hatschek"
@ -147,9 +149,9 @@ CBT__tlde := "Tilde"
CBT__mcrn := "Makron"
CBT__drss := "Trema"
CBT__dbac := "Doppelakut"
CBT__strk := "Schrägstrich"
CBT__strk := "Schrägstrich"
CBU00005E := "^"
CBU000060 := "``"
CBU0000B4 := "´"
CBU0000B4 := "´"
CBCP1VK90SC145 := "Ntab"

View file

@ -1,8 +1,10 @@
; -*- encoding: utf-8 -*-
TrayAktivieren() {
global
menu,tray,icon,%ResourceFolder%\neo_enabled.ico,,1
menu,tray,nostandard
menu,tray,add,Öffnen,open
menu,tray,add,Öffnen,open
menu,helpmenu,add,About,about
menu,helpmenu,add,Autohotkey-Hilfe,help
menu,helpmenu,add
@ -92,15 +94,15 @@ TrayAbout() {
msgbox, 64, %name% Ergonomische Tastaturbelegung,
(
%name%
`nDas Neo-Layout ersetzt das übliche deutsche
`nDas Neo-Layout ersetzt das übliche deutsche
Tastaturlayout mit der Alternative Neo,
beschrieben auf http://neo-layout.org/.
`nDazu sind keine Administratorrechte nötig.
`nDazu sind keine Administratorrechte nötig.
`nWenn Autohotkey aktiviert ist, werden alle Tastendrucke
abgefangen und statt dessen eine Übersetzung weitergeschickt.
`nDies geschieht transparent für den Anwender,
abgefangen und statt dessen eine Übersetzung weitergeschickt.
`nDies geschieht transparent für den Anwender,
es muss nichts installiert werden.
`nDie Zeichenübersetzung kann leicht über das Icon im
`nDie Zeichenübersetzung kann leicht über das Icon im
Systemtray deaktiviert werden. `n
)
}

View file

@ -1,3 +1,5 @@
; -*- encoding: utf-8 -*-
#NoEnv
AllStar(This_HotKey) {
@ -47,9 +49,9 @@ rerun:
if (PP%PhysKey% != "")
CompNew := PP%PhysKey% ; Von Tastaturwiederholung
else
CompNew := Comp . char ; H<EFBFBD>ngen wir mal das neue Zeichen zum Compositum an
CompNew := Comp . char ; H�ngen wir mal das neue Zeichen zum Compositum an
if (CD%CompNew% != "") { ; Compose hat getroffen: wird geschickt, Compose gel<EFBFBD>scht
if (CD%CompNew% != "") { ; Compose hat getroffen: wird geschickt, Compose gel�scht
tosend := CD%CompNew%
PP%PhysKey% := CompNew
Comp := ""
@ -59,7 +61,7 @@ rerun:
Comp := CompNew
} else if (CF%Comp% != "") {
tosend := CF%Comp%
if (PR%PhysKey% != "") { ; Eventuell vergessenen Key-Release aufr<EFBFBD>umen
if (PR%PhysKey% != "") { ; Eventuell vergessenen Key-Release aufr�umen
CharOutUp(PR%PhysKey%)
PR%PhysKey% := ""
}
@ -90,7 +92,7 @@ rerun:
if (strlen(tosend) > 7) { ; Ausgabe mehrerer Zeichen
if (PR%PhysKey% != "") { ; Eventuell vergessenen Key-Release aufr<EFBFBD>umen
if (PR%PhysKey% != "") { ; Eventuell vergessenen Key-Release aufr�umen
CharOutUp(PR%PhysKey%)
PR%PhysKey% := ""
}