Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
8a8d1b93
Commit
8a8d1b93
authored
Jul 09, 2003
by
Dmitry Timoshkov
Committed by
Alexandre Julliard
Jul 09, 2003
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added support for CP_UNIXCP.
parent
37da1e67
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
181 additions
and
121 deletions
+181
-121
locale.c
dlls/kernel/locale.c
+86
-8
clipboard.c
dlls/x11drv/clipboard.c
+4
-12
keyboard.c
dlls/x11drv/keyboard.c
+55
-57
window.c
dlls/x11drv/window.c
+2
-19
configuring.sgml
documentation/configuring.sgml
+0
-12
config
documentation/samples/config
+0
-3
winnls.h
include/winnls.h
+2
-0
codepage.c
memory/codepage.c
+32
-8
properties.h
programs/winecfg/properties.h
+0
-1
winecfg.c
programs/winecfg/winecfg.c
+0
-1
No files found.
dlls/kernel/locale.c
View file @
8a8d1b93
...
@@ -43,7 +43,60 @@ WINE_DEFAULT_DEBUG_CHANNEL(nls);
...
@@ -43,7 +43,60 @@ WINE_DEFAULT_DEBUG_CHANNEL(nls);
#define LOCALE_LOCALEINFOFLAGSMASK (LOCALE_NOUSEROVERRIDE|LOCALE_USE_CP_ACP|LOCALE_RETURN_NUMBER)
#define LOCALE_LOCALEINFOFLAGSMASK (LOCALE_NOUSEROVERRIDE|LOCALE_USE_CP_ACP|LOCALE_RETURN_NUMBER)
extern
void
CODEPAGE_Init
(
UINT
ansi
,
UINT
oem
,
UINT
mac
,
LCID
lcid
);
extern
void
CODEPAGE_Init
(
UINT
ansi_cp
,
UINT
oem_cp
,
UINT
mac_cp
,
UINT
unix_cp
,
LCID
lcid
);
/* Charset to codepage map, sorted by name. */
static
const
struct
charset_entry
{
const
char
*
charset_name
;
UINT
codepage
;
}
charset_names
[]
=
{
{
"CP1250"
,
1250
},
{
"CP1251"
,
1251
},
{
"CP1252"
,
1252
},
{
"CP1253"
,
1253
},
{
"CP1254"
,
1254
},
{
"CP1255"
,
1255
},
{
"CP1256"
,
1256
},
{
"CP1257"
,
1257
},
{
"CP1258"
,
1258
},
{
"IBM037"
,
37
},
{
"IBM1026"
,
1026
},
{
"IBM424"
,
424
},
{
"IBM437"
,
437
},
{
"IBM500"
,
500
},
{
"IBM850"
,
850
},
{
"IBM852"
,
852
},
{
"IBM855"
,
855
},
{
"IBM857"
,
857
},
{
"IBM860"
,
860
},
{
"IBM861"
,
861
},
{
"IBM862"
,
862
},
{
"IBM863"
,
863
},
{
"IBM864"
,
864
},
{
"IBM865"
,
865
},
{
"IBM866"
,
866
},
{
"IBM869"
,
869
},
{
"IBM874"
,
874
},
{
"IBM875"
,
875
},
{
"ISO-8859-1"
,
28591
},
{
"ISO-8859-10"
,
28600
},
{
"ISO-8859-13"
,
28603
},
{
"ISO-8859-14"
,
28604
},
{
"ISO-8859-15"
,
28605
},
{
"ISO-8859-2"
,
28592
},
{
"ISO-8859-3"
,
28593
},
{
"ISO-8859-4"
,
28594
},
{
"ISO-8859-5"
,
28595
},
{
"ISO-8859-6"
,
28596
},
{
"ISO-8859-7"
,
28597
},
{
"ISO-8859-8"
,
28598
},
{
"ISO-8859-9"
,
28599
},
{
"KOI8-R"
,
20866
},
{
"KOI8-U"
,
20866
},
{
"UTF-8"
,
CP_UTF8
}
};
#define NLS_MAX_LANGUAGES 20
#define NLS_MAX_LANGUAGES 20
typedef
struct
{
typedef
struct
{
...
@@ -334,9 +387,18 @@ END:
...
@@ -334,9 +387,18 @@ END:
/***********************************************************************
/***********************************************************************
* charset_cmp (internal)
*/
static
int
charset_cmp
(
const
void
*
name
,
const
void
*
entry
)
{
const
struct
charset_entry
*
charset
=
(
struct
charset_entry
*
)
entry
;
return
strcasecmp
(
(
char
*
)
name
,
charset
->
charset_name
);
}
/***********************************************************************
* init_default_lcid
* init_default_lcid
*/
*/
static
LCID
init_default_lcid
(
void
)
static
LCID
init_default_lcid
(
UINT
*
unix_cp
)
{
{
char
buf
[
256
];
char
buf
[
256
];
char
*
lang
,
*
country
,
*
charset
,
*
dialect
,
*
next
;
char
*
lang
,
*
country
,
*
charset
,
*
dialect
,
*
next
;
...
@@ -359,6 +421,19 @@ static LCID init_default_lcid(void)
...
@@ -359,6 +421,19 @@ static LCID init_default_lcid(void)
country
=
strchr
(
lang
,
'_'
);
if
(
country
)
*
country
++=
'\0'
;
country
=
strchr
(
lang
,
'_'
);
if
(
country
)
*
country
++=
'\0'
;
ret
=
get_language_id
(
lang
,
country
,
charset
,
dialect
);
ret
=
get_language_id
(
lang
,
country
,
charset
,
dialect
);
if
(
ret
&&
charset
)
{
const
struct
charset_entry
*
entry
;
entry
=
bsearch
(
charset
,
charset_names
,
sizeof
(
charset_names
)
/
sizeof
(
charset_names
[
0
]),
sizeof
(
charset_names
[
0
]),
charset_cmp
);
if
(
entry
)
{
*
unix_cp
=
entry
->
codepage
;
TRACE
(
"charset %s was mapped to cp %u
\n
"
,
charset
,
*
unix_cp
);
}
else
FIXME
(
"charset %s was not recognized
\n
"
,
charset
);
}
lang
=
next
;
lang
=
next
;
}
while
(
lang
&&
!
ret
);
}
while
(
lang
&&
!
ret
);
...
@@ -1316,20 +1391,23 @@ int WINAPI lstrcmpiW(LPCWSTR str1, LPCWSTR str2)
...
@@ -1316,20 +1391,23 @@ int WINAPI lstrcmpiW(LPCWSTR str1, LPCWSTR str2)
*/
*/
void
LOCALE_Init
(
void
)
void
LOCALE_Init
(
void
)
{
{
UINT
ansi
=
1252
,
oem
=
437
,
mac
=
10000
;
UINT
ansi
_cp
=
1252
,
oem_cp
=
437
,
mac_cp
=
10000
,
unix_cp
=
-
1
;
LCID
lcid
=
init_default_lcid
();
LCID
lcid
=
init_default_lcid
(
&
unix_cp
);
NtSetDefaultLocale
(
FALSE
,
lcid
);
NtSetDefaultLocale
(
FALSE
,
lcid
);
NtSetDefaultLocale
(
TRUE
,
lcid
);
NtSetDefaultLocale
(
TRUE
,
lcid
);
GetLocaleInfoW
(
lcid
,
LOCALE_IDEFAULTANSICODEPAGE
|
LOCALE_RETURN_NUMBER
,
GetLocaleInfoW
(
lcid
,
LOCALE_IDEFAULTANSICODEPAGE
|
LOCALE_RETURN_NUMBER
,
(
LPWSTR
)
&
ansi
,
sizeof
(
ansi
)
/
sizeof
(
WCHAR
)
);
(
LPWSTR
)
&
ansi
_cp
,
sizeof
(
ansi_cp
)
/
sizeof
(
WCHAR
)
);
GetLocaleInfoW
(
lcid
,
LOCALE_IDEFAULTMACCODEPAGE
|
LOCALE_RETURN_NUMBER
,
GetLocaleInfoW
(
lcid
,
LOCALE_IDEFAULTMACCODEPAGE
|
LOCALE_RETURN_NUMBER
,
(
LPWSTR
)
&
mac
,
sizeof
(
mac
)
/
sizeof
(
WCHAR
)
);
(
LPWSTR
)
&
mac
_cp
,
sizeof
(
mac_cp
)
/
sizeof
(
WCHAR
)
);
GetLocaleInfoW
(
lcid
,
LOCALE_IDEFAULTCODEPAGE
|
LOCALE_RETURN_NUMBER
,
GetLocaleInfoW
(
lcid
,
LOCALE_IDEFAULTCODEPAGE
|
LOCALE_RETURN_NUMBER
,
(
LPWSTR
)
&
oem
,
sizeof
(
oem
)
/
sizeof
(
WCHAR
)
);
(
LPWSTR
)
&
oem_cp
,
sizeof
(
oem_cp
)
/
sizeof
(
WCHAR
)
);
if
(
unix_cp
==
-
1
)
GetLocaleInfoW
(
lcid
,
LOCALE_IDEFAULTUNIXCODEPAGE
|
LOCALE_RETURN_NUMBER
,
(
LPWSTR
)
&
unix_cp
,
sizeof
(
unix_cp
)
/
sizeof
(
WCHAR
)
);
CODEPAGE_Init
(
ansi
,
oem
,
mac
,
lcid
);
CODEPAGE_Init
(
ansi
_cp
,
oem_cp
,
mac_cp
,
unix_cp
,
lcid
);
update_registry
(
lcid
);
update_registry
(
lcid
);
}
}
...
...
dlls/x11drv/clipboard.c
View file @
8a8d1b93
...
@@ -955,7 +955,6 @@ HANDLE X11DRV_CLIPBOARD_ImportXAString(LPBYTE lpdata, UINT cBytes)
...
@@ -955,7 +955,6 @@ HANDLE X11DRV_CLIPBOARD_ImportXAString(LPBYTE lpdata, UINT cBytes)
if
((
lpstr
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
cBytes
+
inlcount
+
1
)))
if
((
lpstr
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
cBytes
+
inlcount
+
1
)))
{
{
UINT
count
;
UINT
count
;
UINT
text_cp
=
CP_ACP
;
for
(
i
=
0
,
inlcount
=
0
;
i
<=
cBytes
;
i
++
)
for
(
i
=
0
,
inlcount
=
0
;
i
<=
cBytes
;
i
++
)
{
{
...
@@ -965,16 +964,13 @@ HANDLE X11DRV_CLIPBOARD_ImportXAString(LPBYTE lpdata, UINT cBytes)
...
@@ -965,16 +964,13 @@ HANDLE X11DRV_CLIPBOARD_ImportXAString(LPBYTE lpdata, UINT cBytes)
lpstr
[
inlcount
++
]
=
lpdata
[
i
];
lpstr
[
inlcount
++
]
=
lpdata
[
i
];
}
}
GetLocaleInfoW
(
LOCALE_SYSTEM_DEFAULT
,
LOCALE_IDEFAULTUNIXCODEPAGE
|
count
=
MultiByteToWideChar
(
CP_UNIXCP
,
0
,
lpstr
,
-
1
,
NULL
,
0
);
LOCALE_RETURN_NUMBER
,
(
WCHAR
*
)
&
text_cp
,
(
sizeof
(
UINT
)
/
sizeof
(
WCHAR
)));
count
=
MultiByteToWideChar
(
text_cp
,
0
,
lpstr
,
-
1
,
NULL
,
0
);
hUnicodeText
=
GlobalAlloc
(
GMEM_MOVEABLE
|
GMEM_DDESHARE
,
count
*
sizeof
(
WCHAR
));
hUnicodeText
=
GlobalAlloc
(
GMEM_MOVEABLE
|
GMEM_DDESHARE
,
count
*
sizeof
(
WCHAR
));
if
(
hUnicodeText
)
if
(
hUnicodeText
)
{
{
WCHAR
*
textW
=
GlobalLock
(
hUnicodeText
);
WCHAR
*
textW
=
GlobalLock
(
hUnicodeText
);
MultiByteToWideChar
(
text_cp
,
0
,
lpstr
,
-
1
,
textW
,
count
);
MultiByteToWideChar
(
CP_UNIXCP
,
0
,
lpstr
,
-
1
,
textW
,
count
);
GlobalUnlock
(
hUnicodeText
);
GlobalUnlock
(
hUnicodeText
);
}
}
...
@@ -1104,21 +1100,17 @@ HANDLE X11DRV_CLIPBOARD_ExportXAString(LPWINE_CLIPDATA lpData, LPDWORD lpBytes)
...
@@ -1104,21 +1100,17 @@ HANDLE X11DRV_CLIPBOARD_ExportXAString(LPWINE_CLIPDATA lpData, LPDWORD lpBytes)
UINT
size
;
UINT
size
;
LPWSTR
uni_text
;
LPWSTR
uni_text
;
LPSTR
text
,
lpstr
;
LPSTR
text
,
lpstr
;
UINT
text_cp
=
CP_ACP
;
*
lpBytes
=
0
;
/* Assume return has zero bytes */
*
lpBytes
=
0
;
/* Assume return has zero bytes */
GetLocaleInfoW
(
LOCALE_SYSTEM_DEFAULT
,
LOCALE_IDEFAULTUNIXCODEPAGE
|
LOCALE_RETURN_NUMBER
,
(
WCHAR
*
)
&
text_cp
,
(
sizeof
(
UINT
)
/
sizeof
(
WCHAR
)));
uni_text
=
GlobalLock
(
lpData
->
hData32
);
uni_text
=
GlobalLock
(
lpData
->
hData32
);
size
=
WideCharToMultiByte
(
text_cp
,
0
,
uni_text
,
-
1
,
NULL
,
0
,
NULL
,
NULL
);
size
=
WideCharToMultiByte
(
CP_UNIXCP
,
0
,
uni_text
,
-
1
,
NULL
,
0
,
NULL
,
NULL
);
text
=
HeapAlloc
(
GetProcessHeap
(),
0
,
size
);
text
=
HeapAlloc
(
GetProcessHeap
(),
0
,
size
);
if
(
!
text
)
if
(
!
text
)
return
None
;
return
None
;
WideCharToMultiByte
(
text_cp
,
0
,
uni_text
,
-
1
,
text
,
size
,
NULL
,
NULL
);
WideCharToMultiByte
(
CP_UNIXCP
,
0
,
uni_text
,
-
1
,
text
,
size
,
NULL
,
NULL
);
/* remove carriage returns */
/* remove carriage returns */
...
...
dlls/x11drv/keyboard.c
View file @
8a8d1b93
...
@@ -670,63 +670,62 @@ static const char main_key_vnc[MAIN_LEN][4] =
...
@@ -670,63 +670,62 @@ static const char main_key_vnc[MAIN_LEN][4] =
/*** Layout table. Add your keyboard mappings to this list */
/*** Layout table. Add your keyboard mappings to this list */
static
const
struct
{
static
const
struct
{
const
char
*
comment
;
const
char
*
comment
;
const
UINT
layout_cp
;
/* Code page for this layout */
const
char
(
*
key
)[
MAIN_LEN
][
4
];
const
char
(
*
key
)[
MAIN_LEN
][
4
];
const
WORD
(
*
scan
)[
MAIN_LEN
];
/* scan codes mapping */
const
WORD
(
*
scan
)[
MAIN_LEN
];
/* scan codes mapping */
const
WORD
(
*
vkey
)[
MAIN_LEN
];
/* virtual key codes mapping */
const
WORD
(
*
vkey
)[
MAIN_LEN
];
/* virtual key codes mapping */
}
main_key_tab
[]
=
{
}
main_key_tab
[]
=
{
{
"United States keyboard layout"
,
28591
,
&
main_key_US
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"United States keyboard layout"
,
&
main_key_US
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"United States keyboard layout (phantom key version)"
,
28591
,
&
main_key_US_phantom
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"United States keyboard layout (phantom key version)"
,
&
main_key_US_phantom
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"United States keyboard layout (dvorak)"
,
28591
,
&
main_key_US_dvorak
,
&
main_key_scan_dvorak
,
&
main_key_vkey_dvorak
},
{
"United States keyboard layout (dvorak)"
,
&
main_key_US_dvorak
,
&
main_key_scan_dvorak
,
&
main_key_vkey_dvorak
},
{
"British keyboard layout"
,
28605
,
&
main_key_UK
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"British keyboard layout"
,
&
main_key_UK
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"German keyboard layout"
,
28605
,
&
main_key_DE
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"German keyboard layout"
,
&
main_key_DE
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"German keyboard layout without dead keys"
,
28605
,
&
main_key_DE_nodead
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"German keyboard layout without dead keys"
,
&
main_key_DE_nodead
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"German keyboard layout for logitech desktop pro"
,
28605
,
&
main_key_DE_logitech
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"German keyboard layout for logitech desktop pro"
,
&
main_key_DE_logitech
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"German keyboard layout without dead keys 105"
,
28605
,
&
main_key_DE_nodead_105
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"German keyboard layout without dead keys 105"
,
&
main_key_DE_nodead_105
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Swiss German keyboard layout"
,
28605
,
&
main_key_SG
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Swiss German keyboard layout"
,
&
main_key_SG
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Swedish keyboard layout"
,
28605
,
&
main_key_SE
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Swedish keyboard layout"
,
&
main_key_SE
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Estonian keyboard layout"
,
28605
,
&
main_key_ET
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Estonian keyboard layout"
,
&
main_key_ET
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Norwegian keyboard layout"
,
28605
,
&
main_key_NO
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Norwegian keyboard layout"
,
&
main_key_NO
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Danish keyboard layout"
,
28605
,
&
main_key_DA
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Danish keyboard layout"
,
&
main_key_DA
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"French keyboard layout"
,
28605
,
&
main_key_FR
,
&
main_key_scan_qwerty
,
&
main_key_vkey_azerty
},
{
"French keyboard layout"
,
&
main_key_FR
,
&
main_key_scan_qwerty
,
&
main_key_vkey_azerty
},
{
"Canadian French keyboard layout"
,
28591
,
&
main_key_CF
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Canadian French keyboard layout"
,
&
main_key_CF
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Belgian keyboard layout"
,
28605
,
&
main_key_BE
,
&
main_key_scan_qwerty
,
&
main_key_vkey_azerty
},
{
"Belgian keyboard layout"
,
&
main_key_BE
,
&
main_key_scan_qwerty
,
&
main_key_vkey_azerty
},
{
"Swiss French keyboard layout"
,
28605
,
&
main_key_SF
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Swiss French keyboard layout"
,
&
main_key_SF
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Portuguese keyboard layout"
,
28605
,
&
main_key_PT
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Portuguese keyboard layout"
,
&
main_key_PT
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Brazilian ABNT-2 keyboard layout"
,
28591
,
&
main_key_PT_br
,
&
main_key_scan_abnt_qwerty
,
&
main_key_vkey_abnt_qwerty
},
{
"Brazilian ABNT-2 keyboard layout"
,
&
main_key_PT_br
,
&
main_key_scan_abnt_qwerty
,
&
main_key_vkey_abnt_qwerty
},
{
"Brazilian ABNT-2 keyboard layout ALT GR"
,
28591
,
&
main_key_PT_br_alt_gr
,
&
main_key_scan_abnt_qwerty
,
&
main_key_vkey_abnt_qwerty
},
{
"Brazilian ABNT-2 keyboard layout ALT GR"
,
&
main_key_PT_br_alt_gr
,
&
main_key_scan_abnt_qwerty
,
&
main_key_vkey_abnt_qwerty
},
{
"United States International keyboard layout"
,
28591
,
&
main_key_US_intl
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"United States International keyboard layout"
,
&
main_key_US_intl
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Finnish keyboard layout"
,
28605
,
&
main_key_FI
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Finnish keyboard layout"
,
&
main_key_FI
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Bulgarian bds keyboard layout"
,
1251
,
&
main_key_BG_bds
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Bulgarian bds keyboard layout"
,
&
main_key_BG_bds
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Bulgarian phonetic keyboard layout"
,
1251
,
&
main_key_BG_phonetic
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Bulgarian phonetic keyboard layout"
,
&
main_key_BG_phonetic
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Belarusian keyboard layout"
,
1251
,
&
main_key_BY
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Belarusian keyboard layout"
,
&
main_key_BY
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Russian keyboard layout"
,
20866
,
&
main_key_RU
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Russian keyboard layout"
,
&
main_key_RU
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Russian keyboard layout (phantom key version)"
,
20866
,
&
main_key_RU_phantom
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Russian keyboard layout (phantom key version)"
,
&
main_key_RU_phantom
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Russian keyboard layout KOI8-R"
,
20866
,
&
main_key_RU_koi8r
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Russian keyboard layout KOI8-R"
,
&
main_key_RU_koi8r
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Ukrainian keyboard layout KOI8-U"
,
20866
,
&
main_key_UA
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Ukrainian keyboard layout KOI8-U"
,
&
main_key_UA
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Spanish keyboard layout"
,
28605
,
&
main_key_ES
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Spanish keyboard layout"
,
&
main_key_ES
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Italian keyboard layout"
,
28605
,
&
main_key_IT
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Italian keyboard layout"
,
&
main_key_IT
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Icelandic keyboard layout"
,
28605
,
&
main_key_IS
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Icelandic keyboard layout"
,
&
main_key_IS
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Hungarian keyboard layout"
,
28592
,
&
main_key_HU
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Hungarian keyboard layout"
,
&
main_key_HU
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Polish (programmer's) keyboard layout"
,
28592
,
&
main_key_PL
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Polish (programmer's) keyboard layout"
,
&
main_key_PL
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Slovenian keyboard layout"
,
28592
,
&
main_key_SI
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Slovenian keyboard layout"
,
&
main_key_SI
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Croatian keyboard layout"
,
28592
,
&
main_key_HR
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Croatian keyboard layout"
,
&
main_key_HR
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Croatian keyboard layout (specific)"
,
28592
,
&
main_key_HR_jelly
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Croatian keyboard layout (specific)"
,
&
main_key_HR_jelly
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Japanese 106 keyboard layout"
,
932
,
&
main_key_JA_jp106
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Japanese 106 keyboard layout"
,
&
main_key_JA_jp106
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Japanese pc98x1 keyboard layout"
,
932
,
&
main_key_JA_pc98x1
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Japanese pc98x1 keyboard layout"
,
&
main_key_JA_pc98x1
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Slovak keyboard layout"
,
28592
,
&
main_key_SK
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Slovak keyboard layout"
,
&
main_key_SK
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Slovak and Czech keyboard layout without dead keys"
,
28592
,
&
main_key_SK_prog
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Slovak and Czech keyboard layout without dead keys"
,
&
main_key_SK_prog
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Czech keyboard layout"
,
28592
,
&
main_key_CS
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Czech keyboard layout"
,
&
main_key_CS
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Czech keyboard layout cz"
,
28592
,
&
main_key_CZ
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Czech keyboard layout cz"
,
&
main_key_CZ
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Czech keyboard layout cz_qwerty"
,
28592
,
&
main_key_CZ_qwerty
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Czech keyboard layout cz_qwerty"
,
&
main_key_CZ_qwerty
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Latin American keyboard layout"
,
28591
,
&
main_key_LA
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Latin American keyboard layout"
,
&
main_key_LA
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Lithuanian (Baltic) keyboard layout"
,
28603
,
&
main_key_LT_B
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Lithuanian (Baltic) keyboard layout"
,
&
main_key_LT_B
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Turkish keyboard layout"
,
28599
,
&
main_key_TK
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Turkish keyboard layout"
,
&
main_key_TK
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Israeli keyboard layout"
,
28598
,
&
main_key_IL
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Israeli keyboard layout"
,
&
main_key_IL
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"VNC keyboard layout"
,
28605
,
&
main_key_vnc
,
&
main_key_scan_vnc
,
&
main_key_vkey_vnc
},
{
"VNC keyboard layout"
,
&
main_key_vnc
,
&
main_key_scan_vnc
,
&
main_key_vkey_vnc
},
{
"Greek keyboard layout"
,
28597
,
&
main_key_EL
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
"Greek keyboard layout"
,
&
main_key_EL
,
&
main_key_scan_qwerty
,
&
main_key_vkey_qwerty
},
{
NULL
,
0
,
NULL
,
NULL
,
NULL
}
/* sentinel */
{
NULL
,
NULL
,
NULL
,
NULL
}
/* sentinel */
};
};
static
unsigned
kbd_layout
=
0
;
/* index into above table of layouts */
static
unsigned
kbd_layout
=
0
;
/* index into above table of layouts */
...
@@ -1847,7 +1846,7 @@ INT X11DRV_ToUnicode(UINT virtKey, UINT scanCode, LPBYTE lpKeyState,
...
@@ -1847,7 +1846,7 @@ INT X11DRV_ToUnicode(UINT virtKey, UINT scanCode, LPBYTE lpKeyState,
dead_char
=
KEYBOARD_MapDeadKeysym
(
keysym
);
dead_char
=
KEYBOARD_MapDeadKeysym
(
keysym
);
if
(
dead_char
)
if
(
dead_char
)
{
{
MultiByteToWideChar
(
main_key_tab
[
kbd_layout
].
layout_cp
,
0
,
&
dead_char
,
1
,
bufW
,
bufW_size
);
MultiByteToWideChar
(
CP_UNIXCP
,
0
,
&
dead_char
,
1
,
bufW
,
bufW_size
);
ret
=
-
1
;
ret
=
-
1
;
}
}
else
else
...
@@ -1906,9 +1905,8 @@ INT X11DRV_ToUnicode(UINT virtKey, UINT scanCode, LPBYTE lpKeyState,
...
@@ -1906,9 +1905,8 @@ INT X11DRV_ToUnicode(UINT virtKey, UINT scanCode, LPBYTE lpKeyState,
/* perform translation to unicode */
/* perform translation to unicode */
if
(
ret
)
if
(
ret
)
{
{
TRACE_
(
key
)(
"Translating char 0x%02x from code page %d to unicode
\n
"
,
TRACE_
(
key
)(
"Translating char 0x%02x to unicode
\n
"
,
*
(
BYTE
*
)
lpChar
);
*
(
BYTE
*
)
lpChar
,
main_key_tab
[
kbd_layout
].
layout_cp
);
ret
=
MultiByteToWideChar
(
CP_UNIXCP
,
0
,
lpChar
,
ret
,
bufW
,
bufW_size
);
ret
=
MultiByteToWideChar
(
main_key_tab
[
kbd_layout
].
layout_cp
,
0
,
lpChar
,
ret
,
bufW
,
bufW_size
);
}
}
}
}
...
...
dlls/x11drv/window.c
View file @
8a8d1b93
...
@@ -794,36 +794,19 @@ BOOL X11DRV_SetWindowText( HWND hwnd, LPCWSTR text )
...
@@ -794,36 +794,19 @@ BOOL X11DRV_SetWindowText( HWND hwnd, LPCWSTR text )
UINT
count
;
UINT
count
;
char
*
buffer
;
char
*
buffer
;
char
*
utf8_buffer
;
char
*
utf8_buffer
;
static
UINT
text_cp
=
(
UINT
)
-
1
;
Window
win
;
Window
win
;
XTextProperty
prop
;
XTextProperty
prop
;
if
((
win
=
X11DRV_get_whole_window
(
hwnd
)))
if
((
win
=
X11DRV_get_whole_window
(
hwnd
)))
{
{
if
(
text_cp
==
(
UINT
)
-
1
)
{
HKEY
hkey
;
/* default value */
text_cp
=
CP_ACP
;
if
(
!
RegOpenKeyA
(
HKEY_LOCAL_MACHINE
,
"Software
\\
Wine
\\
Wine
\\
Config
\\
x11drv"
,
&
hkey
))
{
char
buffer
[
20
];
DWORD
type
,
count
=
sizeof
(
buffer
);
if
(
!
RegQueryValueExA
(
hkey
,
"TextCP"
,
0
,
&
type
,
buffer
,
&
count
))
text_cp
=
atoi
(
buffer
);
RegCloseKey
(
hkey
);
}
TRACE
(
"text_cp = %u
\n
"
,
text_cp
);
}
/* allocate new buffer for window text */
/* allocate new buffer for window text */
count
=
WideCharToMultiByte
(
text_cp
,
0
,
text
,
-
1
,
NULL
,
0
,
NULL
,
NULL
);
count
=
WideCharToMultiByte
(
CP_UNIXCP
,
0
,
text
,
-
1
,
NULL
,
0
,
NULL
,
NULL
);
if
(
!
(
buffer
=
HeapAlloc
(
GetProcessHeap
(),
0
,
count
)))
if
(
!
(
buffer
=
HeapAlloc
(
GetProcessHeap
(),
0
,
count
)))
{
{
ERR
(
"Not enough memory for window text
\n
"
);
ERR
(
"Not enough memory for window text
\n
"
);
return
FALSE
;
return
FALSE
;
}
}
WideCharToMultiByte
(
text_cp
,
0
,
text
,
-
1
,
buffer
,
count
,
NULL
,
NULL
);
WideCharToMultiByte
(
CP_UNIXCP
,
0
,
text
,
-
1
,
buffer
,
count
,
NULL
,
NULL
);
count
=
WideCharToMultiByte
(
CP_UTF8
,
0
,
text
,
strlenW
(
text
),
NULL
,
0
,
NULL
,
NULL
);
count
=
WideCharToMultiByte
(
CP_UTF8
,
0
,
text
,
strlenW
(
text
),
NULL
,
0
,
NULL
,
NULL
);
if
(
!
(
utf8_buffer
=
HeapAlloc
(
GetProcessHeap
(),
0
,
count
)))
if
(
!
(
utf8_buffer
=
HeapAlloc
(
GetProcessHeap
(),
0
,
count
)))
...
...
documentation/configuring.sgml
View file @
8a8d1b93
...
@@ -2851,18 +2851,6 @@ with the <literal>GraphicsDriver</literal> option in the
...
@@ -2851,18 +2851,6 @@ with the <literal>GraphicsDriver</literal> option in the
</para>
</para>
</listitem>
</listitem>
</varlistentry>
</varlistentry>
<varlistentry>
<term>TextCP</term>
<listitem>
<para>
Codepage to be used for rendering the text in X11
output. Some sample values would be 437 (USA, Canada),
850 (Europe), 852 (Central/Eastern Europe), 855
(Cyrillic). For additional suitable values, see e.g. the Linux
kernel'
s
codepage
configuration
page
.
</
para
>
</
listitem
>
</
varlistentry
>
</variablelist>
</variablelist>
</sect3>
</sect3>
</sect2>
</sect2>
...
...
documentation/samples/config
View file @
8a8d1b93
...
@@ -135,9 +135,6 @@ WINE REGISTRY Version 2
...
@@ -135,9 +135,6 @@ WINE REGISTRY Version 2
; Create the desktop window with a double-buffered visual
; Create the desktop window with a double-buffered visual
; (useful to play OpenGL games)
; (useful to play OpenGL games)
"DesktopDoubleBuffered" = "N"
"DesktopDoubleBuffered" = "N"
; Code page used for captions in managed mode
; 0 means default ANSI code page (CP_ACP == 0)
"TextCP" = "0"
; Use this if you have more than one port for video on your setup
; Use this if you have more than one port for video on your setup
; (Wine uses for now the first 'input image' it finds).
; (Wine uses for now the first 'input image' it finds).
;; "XVideoPort" = "43"
;; "XVideoPort" = "43"
...
...
include/winnls.h
View file @
8a8d1b93
...
@@ -176,6 +176,8 @@ extern "C" {
...
@@ -176,6 +176,8 @@ extern "C" {
#define CP_UTF7 65000
#define CP_UTF7 65000
#define CP_UTF8 65001
#define CP_UTF8 65001
#define CP_UNIXCP 65010
/* Wine extension */
#define WC_DISCARDNS 0x00000010
#define WC_DISCARDNS 0x00000010
#define WC_SEPCHARS 0x00000020
#define WC_SEPCHARS 0x00000020
#define WC_DEFAULTCHAR 0x00000040
#define WC_DEFAULTCHAR 0x00000040
...
...
memory/codepage.c
View file @
8a8d1b93
...
@@ -36,6 +36,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(string);
...
@@ -36,6 +36,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(string);
static
const
union
cptable
*
ansi_cptable
;
static
const
union
cptable
*
ansi_cptable
;
static
const
union
cptable
*
oem_cptable
;
static
const
union
cptable
*
oem_cptable
;
static
const
union
cptable
*
mac_cptable
;
static
const
union
cptable
*
mac_cptable
;
static
const
union
cptable
*
unix_cptable
;
/* NULL if UTF8 */
static
LCID
default_lcid
=
MAKELCID
(
MAKELANGID
(
LANG_ENGLISH
,
SUBLANG_DEFAULT
),
SORT_DEFAULT
);
static
LCID
default_lcid
=
MAKELCID
(
MAKELANGID
(
LANG_ENGLISH
,
SUBLANG_DEFAULT
),
SORT_DEFAULT
);
/* setup default codepage info before we can get at the locale stuff */
/* setup default codepage info before we can get at the locale stuff */
...
@@ -44,9 +45,11 @@ static void init_codepages(void)
...
@@ -44,9 +45,11 @@ static void init_codepages(void)
ansi_cptable
=
wine_cp_get_table
(
1252
);
ansi_cptable
=
wine_cp_get_table
(
1252
);
oem_cptable
=
wine_cp_get_table
(
437
);
oem_cptable
=
wine_cp_get_table
(
437
);
mac_cptable
=
wine_cp_get_table
(
10000
);
mac_cptable
=
wine_cp_get_table
(
10000
);
unix_cptable
=
wine_cp_get_table
(
28591
);
assert
(
ansi_cptable
);
assert
(
ansi_cptable
);
assert
(
oem_cptable
);
assert
(
oem_cptable
);
assert
(
mac_cptable
);
assert
(
mac_cptable
);
assert
(
unix_cptable
);
}
}
/* find the table for a given codepage, handling CP_ACP etc. pseudo-codepages */
/* find the table for a given codepage, handling CP_ACP etc. pseudo-codepages */
...
@@ -83,21 +86,27 @@ static const union cptable *get_codepage_table( unsigned int codepage )
...
@@ -83,21 +86,27 @@ static const union cptable *get_codepage_table( unsigned int codepage )
/* initialize default code pages from locale info */
/* initialize default code pages from locale info */
/* FIXME: should be done in init_codepages, but it can't right now */
/* FIXME: should be done in init_codepages, but it can't right now */
/* since it needs KERNEL32 to be loaded for the locale info. */
/* since it needs KERNEL32 to be loaded for the locale info. */
void
CODEPAGE_Init
(
UINT
ansi
,
UINT
oem
,
UINT
mac
,
LCID
lcid
)
void
CODEPAGE_Init
(
UINT
ansi
_cp
,
UINT
oem_cp
,
UINT
mac_cp
,
UINT
unix_cp
,
LCID
lcid
)
{
{
extern
void
__wine_init_codepages
(
const
union
cptable
*
ansi
,
const
union
cptable
*
oem
);
extern
void
__wine_init_codepages
(
const
union
cptable
*
ansi
_cp
,
const
union
cptable
*
oem_cp
);
const
union
cptable
*
table
;
const
union
cptable
*
table
;
default_lcid
=
lcid
;
default_lcid
=
lcid
;
if
(
!
ansi_cptable
)
init_codepages
();
/* just in case */
if
(
!
ansi_cptable
)
init_codepages
();
/* just in case */
if
((
table
=
wine_cp_get_table
(
ansi
)))
ansi_cptable
=
table
;
if
((
table
=
wine_cp_get_table
(
ansi_cp
)))
ansi_cptable
=
table
;
if
((
table
=
wine_cp_get_table
(
oem
)))
oem_cptable
=
table
;
if
((
table
=
wine_cp_get_table
(
oem_cp
)))
oem_cptable
=
table
;
if
((
table
=
wine_cp_get_table
(
mac
)))
mac_cptable
=
table
;
if
((
table
=
wine_cp_get_table
(
mac_cp
)))
mac_cptable
=
table
;
if
(
unix_cp
==
CP_UTF8
)
unix_cptable
=
NULL
;
else
if
((
table
=
wine_cp_get_table
(
unix_cp
)))
unix_cptable
=
table
;
__wine_init_codepages
(
ansi_cptable
,
oem_cptable
);
__wine_init_codepages
(
ansi_cptable
,
oem_cptable
);
TRACE
(
"ansi=%03d oem=%03d mac=%03d
\n
"
,
ansi_cptable
->
info
.
codepage
,
TRACE
(
"ansi=%03d oem=%03d mac=%03d unix=%03d
\n
"
,
oem_cptable
->
info
.
codepage
,
mac_cptable
->
info
.
codepage
);
ansi_cptable
->
info
.
codepage
,
oem_cptable
->
info
.
codepage
,
mac_cptable
->
info
.
codepage
,
unix_cp
);
}
}
/******************************************************************************
/******************************************************************************
...
@@ -336,9 +345,16 @@ INT WINAPI MultiByteToWideChar( UINT page, DWORD flags, LPCSTR src, INT srclen,
...
@@ -336,9 +345,16 @@ INT WINAPI MultiByteToWideChar( UINT page, DWORD flags, LPCSTR src, INT srclen,
switch
(
page
)
switch
(
page
)
{
{
case
CP_UTF7
:
case
CP_UTF7
:
FIXME
(
"UTF not supported
\n
"
);
FIXME
(
"UTF
-7
not supported
\n
"
);
SetLastError
(
ERROR_CALL_NOT_IMPLEMENTED
);
SetLastError
(
ERROR_CALL_NOT_IMPLEMENTED
);
return
0
;
return
0
;
case
CP_UNIXCP
:
if
(
unix_cptable
)
{
ret
=
wine_cp_mbstowcs
(
unix_cptable
,
flags
,
src
,
srclen
,
dst
,
dstlen
);
break
;
}
/* fall through */
case
CP_UTF8
:
case
CP_UTF8
:
ret
=
wine_utf8_mbstowcs
(
flags
,
src
,
srclen
,
dst
,
dstlen
);
ret
=
wine_utf8_mbstowcs
(
flags
,
src
,
srclen
,
dst
,
dstlen
);
break
;
break
;
...
@@ -412,6 +428,14 @@ INT WINAPI WideCharToMultiByte( UINT page, DWORD flags, LPCWSTR src, INT srclen,
...
@@ -412,6 +428,14 @@ INT WINAPI WideCharToMultiByte( UINT page, DWORD flags, LPCWSTR src, INT srclen,
FIXME
(
"UTF-7 not supported
\n
"
);
FIXME
(
"UTF-7 not supported
\n
"
);
SetLastError
(
ERROR_CALL_NOT_IMPLEMENTED
);
SetLastError
(
ERROR_CALL_NOT_IMPLEMENTED
);
return
0
;
return
0
;
case
CP_UNIXCP
:
if
(
unix_cptable
)
{
ret
=
wine_cp_wcstombs
(
unix_cptable
,
flags
,
src
,
srclen
,
dst
,
dstlen
,
defchar
,
used
?
&
used_tmp
:
NULL
);
break
;
}
/* fall through */
case
CP_UTF8
:
case
CP_UTF8
:
ret
=
wine_utf8_wcstombs
(
src
,
srclen
,
dst
,
dstlen
);
ret
=
wine_utf8_wcstombs
(
src
,
srclen
,
dst
,
dstlen
);
break
;
break
;
...
...
programs/winecfg/properties.h
View file @
8a8d1b93
...
@@ -68,7 +68,6 @@ typedef struct
...
@@ -68,7 +68,6 @@ typedef struct
int
nTakeFocus
;
int
nTakeFocus
;
int
nDXGrab
;
int
nDXGrab
;
int
nDoubleBuffered
;
int
nDoubleBuffered
;
int
nTextCP
;
int
nXVideoPort
;
int
nXVideoPort
;
int
nSynchronous
;
int
nSynchronous
;
}
X11DRV_DESC
;
}
X11DRV_DESC
;
...
...
programs/winecfg/winecfg.c
View file @
8a8d1b93
...
@@ -214,7 +214,6 @@ int loadConfig (WINECFG_DESC* pCfg)
...
@@ -214,7 +214,6 @@ int loadConfig (WINECFG_DESC* pCfg)
pCfg
->
sX11Drv
.
nTakeFocus
=
1
;
pCfg
->
sX11Drv
.
nTakeFocus
=
1
;
pCfg
->
sX11Drv
.
nDXGrab
=
0
;
pCfg
->
sX11Drv
.
nDXGrab
=
0
;
pCfg
->
sX11Drv
.
nDoubleBuffered
=
0
;
pCfg
->
sX11Drv
.
nDoubleBuffered
=
0
;
pCfg
->
sX11Drv
.
nTextCP
=
0
;
pCfg
->
sX11Drv
.
nXVideoPort
=
43
;
pCfg
->
sX11Drv
.
nXVideoPort
=
43
;
pCfg
->
sX11Drv
.
nSynchronous
=
1
;
pCfg
->
sX11Drv
.
nSynchronous
=
1
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment