Changeset 1677
- Timestamp:
- 02/20/09 16:23:51 (4 years ago)
- Location:
- windows/neo-vars/src
- Files:
-
- 2 modified
- 1 copied
-
neo20-all.ahk (modified) (1 diff)
-
source/compose-gen.ahk (copied) (copied from windows/neo-vars/src/source/makecompose.ahk) (7 diffs)
-
source/initialize.ahk (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
windows/neo-vars/src/neo20-all.ahk
r1247 r1677 10 10 #include *i source\compose-tainted.generated.ahk 11 11 #include source\neovarscompose.ahk 12 #include source\compose-gen.ahk 12 13 13 14 ; Hier liegt die Tastaturbelegung -
windows/neo-vars/src/source/compose-gen.ahk
r1675 r1677 1 ; -*- encoding:utf-8 -*- 2 ; AHK versteht zwar kein utf-8, aber so lässt sich’s doch leichter eingeben. 3 1 ; äöü 4 2 5 3 DefineXKBSym(name,val) { … … 1776 1774 SS := X . " " 1777 1775 pos := InStr(KSYM%nlen%,SS,true) 1778 ; MsgBox,% X . ": " . nlen . ": " . pos1779 1776 if (pos>0) { 1780 1777 poscd := 5*(pos-1)/(nlen+1)+1 1781 1778 X := SubStr(KSCD%nlen%,poscd,5) 1782 ; MsgBox,% X1783 1779 return X 1784 1780 } else if (SubStr(X,1,1) == "U") … … 1792 1788 } 1793 1789 1794 DecodeUni(Uni) { 1790 EncodeUniCompose(str) { 1791 SetFormat, Integer, hex 1795 1792 result := "" 1796 1793 loop { 1797 code := "0x" . SubStr(Uni,2,4) 1798 Uni := SubStr(Uni,6) 1799 if (code < 0x0080) 1800 result := result . chr(code) 1801 else if (code < 0x0800) 1802 result := result . chr(0xC0 + (code >> 6)) . chr(0x80 + (code & 0x3F)) 1803 else 1804 result := result . chr(0xE0 + (code >> 12)) . chr(0x80 + ((code >> 6) & 0x3F)) . chr(0x80 + (code & 0x3F)) 1805 if (Uni == "") 1806 break 1807 } 1808 return result 1809 } 1810 1811 EncodeUni(str) { 1812 SetFormat, Integer, hex 1813 ; MsgBox % Asc(SubStr(str,1,1)) . Asc(SubStr(str,2,1)) 1814 result := "" 1815 loop { 1816 char := SubStr(str,1,1) 1794 char := asc(SubStr(str,1,1)) 1817 1795 str := SubStr(str,2) 1818 if ( asc(char)< 0x80)1819 result := result . "U" . SubStr("0000" . SubStr(asc(char),3),-3)1820 else if ( asc(char)< 0xC0) {1796 if (char < 0x80) 1797 result .= "U" . SubStr("0000" . SubStr(char,3),-3) 1798 else if (char < 0xC0) { 1821 1799 ; error 1822 } else if ( asc(char)< 0xE0) {1823 char2 := Substr(str,1,1)1800 } else if (char < 0xE0) { 1801 char2 := asc(Substr(str,1,1)) 1824 1802 str := SubStr(str,2) 1825 if (( asc(char2) < 0x80) or (asc(char2)> 0xBF)) {1803 if ((char2 < 0x80) or (char2 > 0xBF)) { 1826 1804 ; error 1827 1805 } else { 1828 result := result . "U" . SubStr("0000" . SubStr((((asc(char) & 0x1F) << 6) + (asc(char2)& 0x3F)),3),-3)1806 result .= "U" . SubStr("0000" . SubStr((((char & 0x1F) << 6) + (char2 & 0x3F)),3),-3) 1829 1807 } 1830 } else if ( asc(char)< 0xF8) {1831 char2 := SubStr(str,1,1)1832 char3 := SubStr(str,2,1)1808 } else if (char < 0xF8) { 1809 char2 := asc(SubStr(str,1,1)) 1810 char3 := asc(SubStr(str,2,1)) 1833 1811 str := SubStr(str,3) 1834 ; MsgBox % "chars: " . char . ", " . char2 . ", " . char3 . ", str: " . str 1835 if ((asc(char2) < 0x80) or (asc(char2) > 0xBF) 1836 or (asc(char3) < 0x80) or (asc(char3) > 0xBF)) { 1812 if ((char2 < 0x80) or (char2 > 0xBF) 1813 or (char3 < 0x80) or (char3 > 0xBF)) { 1837 1814 ; error 1838 1815 } else { 1839 ; MsgBox % asc(char) . asc(char2) . asc(char3) 1840 ; MsgBox % (((asc(char) & 0x0F) << 12) + ((asc(char2) & 0x3F) << 6) + (asc(char3) & 0x3F)) 1841 result := result . "U" . SubStr("0000" . SubStr((((asc(char) & 0x0F) << 12) + ((asc(char2) & 0x3F) << 6) + (asc(char3) & 0x3F)),3),-3) 1816 result .= "U" . SubStr("0000" . SubStr((((char & 0x0F) << 12) + ((char2 & 0x3F) << 6) + (char3 & 0x3F)),3),-3) 1842 1817 } 1843 1818 } … … 1852 1827 VarSetCapacity(Composita,10240000) ; 10 MB 1853 1828 1854 EncodeUnicodeFile(FFrom,FTo) {1855 Composita := ""1856 Miss := 0 1829 ProcessComposeFile(FFrom) { 1830 global 1831 1857 1832 FileRead, FileContents, %FFrom% 1858 ProgressTop := "Converting " . FFrom . "..."1859 1833 1860 1834 Loop, parse, FileContents, `n, `r ; Specifying `n prior to `r allows both Windows and Unix files to be parsed. … … 1863 1837 } 1864 1838 1865 Count := 01866 1839 Loop, parse, FileContents, `n, `r ; Specifying `n prior to `r allows both Windows and Unix files to be parsed. 1867 1840 { 1868 Count := Count + 11869 ProgressVal := Count/NumLines*1001870 ProgressInd := "Lines: " . Count . ", Errors: " . Miss1871 Progress,%ProgressVal%,%ProgressInd%,%ProgressTop%1872 1841 Line := A_LoopField 1873 1842 if ((Line == "") or (SubStr(Line,1,5) == "XCOMM") or (SubStr(Line,1,1) == "#")) … … 1905 1874 } 1906 1875 modkeys := modkeys . modkey 1907 if (ReplaceLeft != "") { 1908 if (CM%modkeys% != 1) { 1909 CM%modkeys% := 1 1910 Composita := Composita . " CM" modkeys . ":=1`r`n" 1911 } 1912 } 1913 else 1876 if (ReplaceLeft == "") 1914 1877 break 1878 if (CM%modkeys% != 1) 1879 CM%modkeys% := 1 1915 1880 } 1916 1881 else { 1917 Xkbsym := "*entry*" ; make a non-fancy name from parsing error1918 1882 modkeys := "" ; invalidate whole line 1919 1883 break … … 1921 1885 } 1922 1886 if (modkeys != "") { 1923 ressymb := EncodeUni (ReplaceRight)1924 C omposita .= " CD" . modkeys . ":=""" . ressymb . """`r`n"1887 ressymb := EncodeUniCompose(ReplaceRight) 1888 CD%modkeys% := ressymb 1925 1889 if (StrLen(ressymb)==5) 1926 Composita .= " CRC" . ressymb . ".="" " . modkeys . """`r`n" 1927 } else { 1928 Composita .= " `; illegal " . Xkbsym . " in " . A_LoopField . "`r`n" 1929 Miss := Miss + 1 1890 CRC%ressymb% .= modkeys 1930 1891 } 1931 1892 } 1932 Progress,off 1933 FileAppend,%Composita%,%FTo% 1893 1934 1894 } 1935 1895 1936 DefineXKBSyms() 1937 1938 NumPars = %0% 1939 if (NumPars < 2) { 1940 MsgBox,Zu wenige Parameter`, Minimum=2 1941 exit 1896 LoadCurrentComposeFile(FIn) { 1897 global 1898 if (!CurrentComposeLoaded) { 1899 DefineXKBSyms() 1900 CurrentComposeLoaded := 1 1901 } 1902 ProcessComposeFile(Fin) 1942 1903 } 1943 1904 1944 CompRevision = %1% 1945 OutputFile = %2% 1905 LoadCurrentCompose() { 1906 global 1907 ; setup a new thread to start immediately in the background 1908 SetTimer,ConvertCompose,-1 1909 return 1946 1910 1947 FileDelete,%OutputFile% 1948 FileAppend,CompRevision := "%CompRevision%"`r`n`r`nLoadDefaultCompose() {`r`n global`r`n`r`n, %OutputFile% ; } 1949 1950 loop %Numpars% { 1951 if (A_Index < 3) 1952 continue 1953 EncodeUnicodeFile(%A_Index%, OutputFile) 1911 ConvertCompose: 1912 ComposePath := "..\..\..\Compose" 1913 LoadCurrentComposeFile(ComposePath . "\en_US.UTF-8") 1914 LoadCurrentComposeFile(ComposePath . "\Compose.neo") 1915 TrayTip,Compose-Konvertierung,Konvertierung abgeschlossen!,10,1 1916 return 1954 1917 } 1955 1956 ; {1957 FileAppend,},%OutputFile%1958 1959 ; MsgBox % EncodeUni(DecodeUni("U20ACU0041U0070"))1960 1961 ; MsgBox % ConvertXkbsym("KP_5") . ConvertXkbsym("a") -
windows/neo-vars/src/source/initialize.ahk
r1675 r1677 50 50 IniRead,UseMod4Light,%ini%,Global,UseMod4Light,1 51 51 IniRead,striktesMod2Lock,%ini%,Global,striktesMod2Lock,0 52 IniRead,dynamischesCompose,%ini%,Global,dynamischesCompose,0 52 53 53 54 regread,inputlocale,HKEY_CURRENT_USER,Keyboard Layout\Preload,1 … … 84 85 IsMod4Locked := 0 85 86 EbeneAktualisieren() 86 LoadDefaultCompose() 87 88 89 if (dynamischesCompose) 90 LoadCurrentCompose() 91 else 92 LoadDefaultCompose()
