winehq.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
January
2003
December
November
October
September
August
July
June
May
April
March
February
January
2002
December
November
October
September
August
July
June
May
April
March
February
January
2001
December
November
October
September
August
July
June
May
April
March
February
List overview
wine-commits
January 2011
----- 2025 -----
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
January 2004
----- 2003 -----
December 2003
November 2003
October 2003
September 2003
August 2003
July 2003
June 2003
May 2003
April 2003
March 2003
February 2003
January 2003
----- 2002 -----
December 2002
November 2002
October 2002
September 2002
August 2002
July 2002
June 2002
May 2002
April 2002
March 2002
February 2002
January 2002
----- 2001 -----
December 2001
November 2001
October 2001
September 2001
August 2001
July 2001
June 2001
May 2001
April 2001
March 2001
February 2001
wine-commits@winehq.org
2 participants
879 discussions
Start a n
N
ew thread
Alexander Scott-Johns : notepad: Load UTF-8 encoding name from resources instead of using GetCPInfoEx.
by Alexandre Julliard
31 Jan '11
31 Jan '11
Module: wine Branch: master Commit: 321e4c0eec6f88512934e7e5e2f7d16bc0710676 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=321e4c0eec6f88512934e7e5e…
Author: Alexander Scott-Johns <alexander.scott.johns(a)googlemail.com> Date: Thu Jan 27 20:08:22 2011 +0000 notepad: Load UTF-8 encoding name from resources instead of using GetCPInfoEx. --- po/ar.po | 7 ++++++- po/bg.po | 6 +++++- po/ca.po | 6 +++++- po/cs.po | 6 +++++- po/da.po | 7 ++++++- po/de.po | 7 ++++++- po/el.po | 6 +++++- po/en.po | 6 +++++- po/en_US.po | 6 +++++- po/eo.po | 6 +++++- po/es.po | 7 ++++++- po/fa.po | 7 ++++++- po/fi.po | 6 +++++- po/fr.po | 7 ++++++- po/he.po | 7 ++++++- po/hi.po | 6 +++++- po/hu.po | 6 +++++- po/it.po | 7 ++++++- po/ja.po | 7 ++++++- po/ko.po | 7 ++++++- po/lt.po | 7 ++++++- po/ml.po | 6 +++++- po/nb_NO.po | 7 ++++++- po/nl.po | 7 ++++++- po/or.po | 6 +++++- po/pa.po | 6 +++++- po/pl.po | 7 ++++++- po/pt_BR.po | 7 ++++++- po/pt_PT.po | 7 ++++++- po/rm.po | 6 +++++- po/ro.po | 7 ++++++- po/ru.po | 7 ++++++- po/sk.po | 6 +++++- po/sl.po | 7 ++++++- po/sr_RS(a)cyrillic.po | 7 ++++++- po/sr_RS(a)latin.po | 7 ++++++- po/sv.po | 7 ++++++- po/te.po | 6 +++++- po/th.po | 6 +++++- po/tr.po | 6 +++++- po/uk.po | 7 ++++++- po/wa.po | 6 +++++- po/wine.pot | 6 +++++- po/zh_CN.po | 7 ++++++- po/zh_TW.po | 6 +++++- programs/notepad/dialog.c | 12 ++++++++++-- programs/notepad/notepad.rc | 1 + programs/notepad/notepad_res.h | 3 ++- 48 files changed, 262 insertions(+), 48 deletions(-) Diff:
http://source.winehq.org/git/wine.git/?a=commitdiff;h=321e4c0eec6f88512934e…
1
0
0
0
Alexander Scott-Johns : winex11.drv: Remove broken HeapFree call.
by Alexandre Julliard
31 Jan '11
31 Jan '11
Module: wine Branch: master Commit: e81e49787c5f4313f4f34f8986e639cf5d1173e2 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=e81e49787c5f4313f4f34f898…
Author: Alexander Scott-Johns <alexander.scott.johns(a)googlemail.com> Date: Fri Jan 28 20:35:33 2011 +0000 winex11.drv: Remove broken HeapFree call. --- dlls/winex11.drv/clipboard.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) diff --git a/dlls/winex11.drv/clipboard.c b/dlls/winex11.drv/clipboard.c index c3f1b55..75f94e1 100644 --- a/dlls/winex11.drv/clipboard.c +++ b/dlls/winex11.drv/clipboard.c @@ -1546,7 +1546,6 @@ static HANDLE X11DRV_CLIPBOARD_ExportXAString(LPWINE_CLIPDATA lpData, LPDWORD lp *lpBytes = j; /* Number of bytes in string */ done: - HeapFree(GetProcessHeap(), 0, text); GlobalUnlock(lpData->hData); return lpstr;
1
0
0
0
Alexander Scott-Johns : ole32: Fix error handling in get_data_from_metafilepict and get_data_from_bitmap.
by Alexandre Julliard
31 Jan '11
31 Jan '11
Module: wine Branch: master Commit: e39fc20638d384a2c9b2ae5469565709c0d2637e URL:
http://source.winehq.org/git/wine.git/?a=commit;h=e39fc20638d384a2c9b2ae546…
Author: Alexander Scott-Johns <alexander.scott.johns(a)googlemail.com> Date: Fri Jan 28 19:49:50 2011 +0000 ole32: Fix error handling in get_data_from_metafilepict and get_data_from_bitmap. --- dlls/ole32/clipboard.c | 7 ++----- 1 files changed, 2 insertions(+), 5 deletions(-) diff --git a/dlls/ole32/clipboard.c b/dlls/ole32/clipboard.c index b59b554..b98404f 100644 --- a/dlls/ole32/clipboard.c +++ b/dlls/ole32/clipboard.c @@ -876,9 +876,8 @@ static HRESULT get_data_from_metafilepict(IDataObject *data, FORMATETC *fmt, HGL if(FAILED(hr)) return hr; hr = dup_metafilepict(med.u.hMetaFilePict, ©); - if(FAILED(hr)) return hr; - *mem = copy; + if(SUCCEEDED(hr)) *mem = copy; ReleaseStgMedium(&med); @@ -906,10 +905,8 @@ static HRESULT get_data_from_bitmap(IDataObject *data, FORMATETC *fmt, HBITMAP * if(FAILED(hr)) return hr; hr = dup_bitmap(med.u.hBitmap, ©); - if(FAILED(hr)) return hr; - if(hbm) *hbm = copy; - else hr = E_FAIL; + if(SUCCEEDED(hr)) *hbm = copy; ReleaseStgMedium(&med);
1
0
0
0
Alexander Scott-Johns : user32: Partially fix clipboard viewer infinite recursion bug.
by Alexandre Julliard
31 Jan '11
31 Jan '11
Module: wine Branch: master Commit: 6c6b15f2d4c929f2e74837d7d424d130bdc400a6 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=6c6b15f2d4c929f2e74837d7d…
Author: Alexander Scott-Johns <alexander.scott.johns(a)googlemail.com> Date: Tue Jan 25 22:38:49 2011 +0000 user32: Partially fix clipboard viewer infinite recursion bug. --- dlls/user32/clipboard.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dlls/user32/clipboard.c b/dlls/user32/clipboard.c index 99733c3..7b84686 100644 --- a/dlls/user32/clipboard.c +++ b/dlls/user32/clipboard.c @@ -291,7 +291,7 @@ BOOL WINAPI CloseClipboard(void) { BOOL bRet = FALSE; - TRACE("(%d)\n", bCBHasChanged); + TRACE("() Changed=%d\n", bCBHasChanged); if (CLIPBOARD_CloseClipboard()) { @@ -301,10 +301,10 @@ BOOL WINAPI CloseClipboard(void) USER_Driver->pEndClipboardUpdate(); + bCBHasChanged = FALSE; + if (hWndViewer) SendMessageW(hWndViewer, WM_DRAWCLIPBOARD, (WPARAM) GetClipboardOwner(), 0); - - bCBHasChanged = FALSE; } bRet = TRUE;
1
0
0
0
Charles Davis : winecoreaudio: Fix deprecation warnings in mixer.c.
by Alexandre Julliard
31 Jan '11
31 Jan '11
Module: wine Branch: master Commit: 8c6353ea7ed5f740cea72c94fb8edfb964acbf18 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=8c6353ea7ed5f740cea72c94f…
Author: Charles Davis <cdavis(a)mymail.mines.edu> Date: Sat Jan 29 16:44:24 2011 -0700 winecoreaudio: Fix deprecation warnings in mixer.c. --- dlls/winecoreaudio.drv/mixer.c | 97 +++++++++++++++++++++++++++------------- 1 files changed, 66 insertions(+), 31 deletions(-) Diff:
http://source.winehq.org/git/wine.git/?a=commitdiff;h=8c6353ea7ed5f740cea72…
1
0
0
0
Charles Davis : winecoreaudio: Fix deprecation warnings in audio.c.
by Alexandre Julliard
31 Jan '11
31 Jan '11
Module: wine Branch: master Commit: 94d1e8ec7faaf97a4863ff3d21cb385ed2aea548 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=94d1e8ec7faaf97a4863ff3d2…
Author: Charles Davis <cdavis(a)mymail.mines.edu> Date: Sat Jan 29 16:42:25 2011 -0700 winecoreaudio: Fix deprecation warnings in audio.c. --- dlls/winecoreaudio.drv/audio.c | 52 ++++++++++++++++++++++++++++----------- 1 files changed, 37 insertions(+), 15 deletions(-) diff --git a/dlls/winecoreaudio.drv/audio.c b/dlls/winecoreaudio.drv/audio.c index cf876ff..ded830d 100644 --- a/dlls/winecoreaudio.drv/audio.c +++ b/dlls/winecoreaudio.drv/audio.c @@ -486,27 +486,44 @@ BOOL CoreAudio_GetDevCaps (void) OSStatus status; UInt32 propertySize; AudioDeviceID devId = CoreAudio_DefaultDevice.outputDeviceID; + AudioObjectPropertyAddress propertyAddress; - char name[MAXPNAMELEN]; + CFStringRef name; + CFRange range; - propertySize = MAXPNAMELEN; - status = AudioDeviceGetProperty(devId, 0 , FALSE, kAudioDevicePropertyDeviceName, &propertySize, name); + propertySize = sizeof(name); + propertyAddress.mSelector = kAudioObjectPropertyName; + propertyAddress.mScope = kAudioDevicePropertyScopeOutput; + propertyAddress.mElement = kAudioObjectPropertyElementMaster; + status = AudioObjectGetPropertyData(devId, &propertyAddress, 0, NULL, &propertySize, &name); if (status) { - ERR("AudioHardwareGetProperty for kAudioDevicePropertyDeviceName return %s\n", wine_dbgstr_fourcc(status)); + ERR("AudioObjectGetPropertyData for kAudioObjectPropertyName return %s\n", wine_dbgstr_fourcc(status)); return FALSE; } - memcpy(CoreAudio_DefaultDevice.ds_desc.szDesc, name, sizeof(name)); + CFStringGetCString(name, CoreAudio_DefaultDevice.ds_desc.szDesc, + sizeof(CoreAudio_DefaultDevice.ds_desc.szDesc), + kCFStringEncodingUTF8); strcpy(CoreAudio_DefaultDevice.ds_desc.szDrvname, "winecoreaudio.drv"); - MultiByteToWideChar(CP_UNIXCP, 0, name, sizeof(name), - CoreAudio_DefaultDevice.out_caps.szPname, - sizeof(CoreAudio_DefaultDevice.out_caps.szPname) / sizeof(WCHAR)); - memcpy(CoreAudio_DefaultDevice.dev_name, name, 32); + range = CFRangeMake(0, min(sizeof(CoreAudio_DefaultDevice.out_caps.szPname) / sizeof(WCHAR) - 1, CFStringGetLength(name))); + CFStringGetCharacters(name, range, CoreAudio_DefaultDevice.out_caps.szPname); + CoreAudio_DefaultDevice.out_caps.szPname[range.length] = 0; + CFStringGetCString(name, CoreAudio_DefaultDevice.dev_name, 32, kCFStringEncodingUTF8); + CFRelease(name); propertySize = sizeof(CoreAudio_DefaultDevice.streamDescription); - status = AudioDeviceGetProperty(devId, 0, FALSE , kAudioDevicePropertyStreamFormat, &propertySize, &CoreAudio_DefaultDevice.streamDescription); + /* FIXME: kAudioDevicePropertyStreamFormat is deprecated. We're + * "supposed" to get an AudioStream object from the AudioDevice, + * then query it for the format with kAudioStreamPropertyVirtualFormat. + * Apple says that this is for our own good, because this property + * "has been shown to lead to programming mistakes by clients when + * working with devices with multiple streams." Only one problem: + * which stream? For now, just query the device. + */ + propertyAddress.mSelector = kAudioDevicePropertyStreamFormat; + status = AudioObjectGetPropertyData(devId, &propertyAddress, 0, NULL, &propertySize, &CoreAudio_DefaultDevice.streamDescription); if (status != noErr) { - ERR("AudioHardwareGetProperty for kAudioDevicePropertyStreamFormat return %s\n", wine_dbgstr_fourcc(status)); + ERR("AudioObjectGetPropertyData for kAudioDevicePropertyStreamFormat return %s\n", wine_dbgstr_fourcc(status)); return FALSE; } @@ -549,6 +566,7 @@ LONG CoreAudio_WaveInit(void) { OSStatus status; UInt32 propertySize; + AudioObjectPropertyAddress propertyAddress; int i; CFStringRef messageThreadPortName; CFMessagePortRef port_ReceiveInMessageThread; @@ -557,19 +575,23 @@ LONG CoreAudio_WaveInit(void) TRACE("()\n"); /* number of sound cards */ - AudioHardwareGetPropertyInfo(kAudioHardwarePropertyDevices, &propertySize, NULL); + propertyAddress.mSelector = kAudioHardwarePropertyDevices; + propertyAddress.mScope = kAudioObjectPropertyScopeGlobal; + propertyAddress.mElement = kAudioObjectPropertyElementMaster; + AudioObjectGetPropertyDataSize(kAudioObjectSystemObject, &propertyAddress, 0, NULL, &propertySize); propertySize /= sizeof(AudioDeviceID); TRACE("sound cards : %lu\n", propertySize); /* Get the output device */ propertySize = sizeof(CoreAudio_DefaultDevice.outputDeviceID); - status = AudioHardwareGetProperty(kAudioHardwarePropertyDefaultOutputDevice, &propertySize, &CoreAudio_DefaultDevice.outputDeviceID); + propertyAddress.mSelector = kAudioHardwarePropertyDefaultOutputDevice; + status = AudioObjectGetPropertyData(kAudioObjectSystemObject, &propertyAddress, 0, NULL, &propertySize, &CoreAudio_DefaultDevice.outputDeviceID); if (status) { - ERR("AudioHardwareGetProperty return %s for kAudioHardwarePropertyDefaultOutputDevice\n", wine_dbgstr_fourcc(status)); + ERR("AudioObjectGetPropertyData return %s for kAudioHardwarePropertyDefaultOutputDevice\n", wine_dbgstr_fourcc(status)); return DRV_FAILURE; } if (CoreAudio_DefaultDevice.outputDeviceID == kAudioDeviceUnknown) { - ERR("AudioHardwareGetProperty: CoreAudio_DefaultDevice.outputDeviceID == kAudioDeviceUnknown\n"); + ERR("AudioObjectGetPropertyData: CoreAudio_DefaultDevice.outputDeviceID == kAudioDeviceUnknown\n"); return DRV_FAILURE; }
1
0
0
0
Charles Davis : winecoreaudio: Fix deprecation warnings in audiounit.c.
by Alexandre Julliard
31 Jan '11
31 Jan '11
Module: wine Branch: master Commit: b149d7bc7bf28dc13919a2d6d2c4b79e519e7a58 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=b149d7bc7bf28dc13919a2d6d…
Author: Charles Davis <cdavis(a)mymail.mines.edu> Date: Sat Jan 29 16:45:54 2011 -0700 winecoreaudio: Fix deprecation warnings in audiounit.c. --- configure | 14 ++++++++++++ configure.ac | 5 ++++ dlls/winecoreaudio.drv/audiounit.c | 40 +++++++++++++++++++++++++++-------- include/config.h.in | 3 ++ 4 files changed, 53 insertions(+), 9 deletions(-) diff --git a/configure b/configure index 89bfefa..c178d92 100755 --- a/configure +++ b/configure @@ -6535,6 +6535,20 @@ fi COREAUDIO="-framework CoreAudio -framework AudioUnit -framework CoreServices -framework AudioToolbox -framework CoreMIDI" fi + ac_save_LIBS="$LIBS" + LIBS="$LIBS $COREAUDIO" + for ac_func in AUGraphAddNode +do : + ac_fn_c_check_func "$LINENO" "AUGraphAddNode" "ac_cv_func_AUGraphAddNode" +if test "x$ac_cv_func_AUGraphAddNode" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_AUGRAPHADDNODE 1 +_ACEOF + +fi +done + + LIBS="$ac_save_LIBS" fi if test "$ac_cv_header_OpenAL_al_h" = "yes" then diff --git a/configure.ac b/configure.ac index c0a9d7f..b4be299 100644 --- a/configure.ac +++ b/configure.ac @@ -719,6 +719,11 @@ case $host_os in dnl CoreServices needed by AudioUnit AC_SUBST(COREAUDIO,"-framework CoreAudio -framework AudioUnit -framework CoreServices -framework AudioToolbox -framework CoreMIDI") fi + dnl Check for the AUGraphAddNode function + ac_save_LIBS="$LIBS" + LIBS="$LIBS $COREAUDIO" + AC_CHECK_FUNCS(AUGraphAddNode) + LIBS="$ac_save_LIBS" fi if test "$ac_cv_header_OpenAL_al_h" = "yes" then diff --git a/dlls/winecoreaudio.drv/audiounit.c b/dlls/winecoreaudio.drv/audiounit.c index 5191669..bd0ad17 100644 --- a/dlls/winecoreaudio.drv/audiounit.c +++ b/dlls/winecoreaudio.drv/audiounit.c @@ -59,6 +59,18 @@ static inline OSStatus AudioComponentInstanceDispose(AudioComponentInstance aci) } #endif +#ifndef HAVE_AUGRAPHADDNODE +static inline OSStatus AUGraphAddNode(AUGraph graph, const AudioComponentDescription *desc, AUNode *node) +{ + return AUGraphNewNode(graph, desc, 0, NULL, node); +} + +static inline OSStatus AUGraphNodeInfo(AUGraph graph, AUNode node, AudioComponentDescription *desc, AudioUnit *au) +{ + return AUGraphGetNodeInfo(graph, node, desc, 0, NULL, au); +} +#endif + WINE_DEFAULT_DEBUG_CHANNEL(wave); WINE_DECLARE_DEBUG_CHANNEL(midi); @@ -194,11 +206,15 @@ int AudioUnit_GetInputDeviceSampleRate(void) { AudioDeviceID defaultInputDevice; UInt32 param; + AudioObjectPropertyAddress propertyAddress; Float64 sampleRate; OSStatus err; param = sizeof(defaultInputDevice); - err = AudioHardwareGetProperty(kAudioHardwarePropertyDefaultInputDevice, ¶m, &defaultInputDevice); + propertyAddress.mSelector = kAudioHardwarePropertyDefaultInputDevice; + propertyAddress.mScope = kAudioObjectPropertyScopeGlobal; + propertyAddress.mElement = kAudioObjectPropertyElementMaster; + err = AudioObjectGetPropertyData(kAudioObjectSystemObject, &propertyAddress, 0, NULL, ¶m, &defaultInputDevice); if (err != noErr || defaultInputDevice == kAudioDeviceUnknown) { ERR("Couldn't get the default audio input device ID: %08lx\n", err); @@ -206,7 +222,9 @@ int AudioUnit_GetInputDeviceSampleRate(void) } param = sizeof(sampleRate); - err = AudioDeviceGetProperty(defaultInputDevice, 0, 1, kAudioDevicePropertyNominalSampleRate, ¶m, &sampleRate); + propertyAddress.mSelector = kAudioDevicePropertyNominalSampleRate; + propertyAddress.mScope = kAudioDevicePropertyScopeInput; + err = AudioObjectGetPropertyData(defaultInputDevice, &propertyAddress, 0, NULL, ¶m, &sampleRate); if (err != noErr) { ERR("Couldn't get the device sample rate: %08lx\n", err); @@ -226,6 +244,7 @@ int AudioUnit_CreateInputUnit(void* wwi, AudioUnit* out_au, AudioComponent component; AudioUnit au; UInt32 param; + AudioObjectPropertyAddress propertyAddress; AURenderCallbackStruct callback; AudioDeviceID defaultInputDevice; AudioStreamBasicDescription desiredFormat; @@ -291,7 +310,10 @@ int AudioUnit_CreateInputUnit(void* wwi, AudioUnit* out_au, /* Find the default input device */ param = sizeof(defaultInputDevice); - err = AudioHardwareGetProperty(kAudioHardwarePropertyDefaultInputDevice, ¶m, &defaultInputDevice); + propertyAddress.mSelector = kAudioHardwarePropertyDefaultInputDevice; + propertyAddress.mScope = kAudioObjectPropertyScopeGlobal; + propertyAddress.mElement = kAudioObjectPropertyElementMaster; + err = AudioObjectGetPropertyData(kAudioObjectSystemObject, &propertyAddress, 0, NULL, ¶m, &defaultInputDevice); if (err != noErr || defaultInputDevice == kAudioDeviceUnknown) { ERR("Couldn't get the default audio device ID: %08lx\n", err); @@ -396,10 +418,10 @@ int SynthUnit_CreateDefaultSynthUnit(AUGraph *graph, AudioUnit *synth) desc.componentType = kAudioUnitType_MusicDevice; desc.componentSubType = kAudioUnitSubType_DLSSynth; - err = AUGraphNewNode(*graph, &desc, 0, NULL, &synthNode); + err = AUGraphAddNode(*graph, &desc, &synthNode); if (err != noErr) { - ERR_(midi)("AUGraphNewNode cannot create synthNode : %s\n", wine_dbgstr_fourcc(err)); + ERR_(midi)("AUGraphAddNode cannot create synthNode : %s\n", wine_dbgstr_fourcc(err)); return 0; } @@ -407,10 +429,10 @@ int SynthUnit_CreateDefaultSynthUnit(AUGraph *graph, AudioUnit *synth) desc.componentType = kAudioUnitType_Output; desc.componentSubType = kAudioUnitSubType_DefaultOutput; - err = AUGraphNewNode(*graph, &desc, 0, NULL, &outNode); + err = AUGraphAddNode(*graph, &desc, &outNode); if (err != noErr) { - ERR_(midi)("AUGraphNewNode cannot create outNode %s\n", wine_dbgstr_fourcc(err)); + ERR_(midi)("AUGraphAddNode cannot create outNode %s\n", wine_dbgstr_fourcc(err)); return 0; } @@ -430,10 +452,10 @@ int SynthUnit_CreateDefaultSynthUnit(AUGraph *graph, AudioUnit *synth) } /* Get the synth unit */ - err = AUGraphGetNodeInfo(*graph, synthNode, 0, 0, 0, synth); + err = AUGraphNodeInfo(*graph, synthNode, 0, synth); if (err != noErr) { - ERR_(midi)("AUGraphGetNodeInfo return %s\n", wine_dbgstr_fourcc(err)); + ERR_(midi)("AUGraphNodeInfo return %s\n", wine_dbgstr_fourcc(err)); return 0; } diff --git a/include/config.h.in b/include/config.h.in index 5cae81b..0b16b35 100644 --- a/include/config.h.in +++ b/include/config.h.in @@ -52,6 +52,9 @@ /* Define to 1 if you have the <audio/soundlib.h> header file. */ #undef HAVE_AUDIO_SOUNDLIB_H +/* Define to 1 if you have the `AUGraphAddNode' function. */ +#undef HAVE_AUGRAPHADDNODE + /* Define to 1 if you have the <capi20.h> header file. */ #undef HAVE_CAPI20_H
1
0
0
0
Charles Davis : winecoreaudio: Don't use Component Manager on Mac OS 10.6.
by Alexandre Julliard
31 Jan '11
31 Jan '11
Module: wine Branch: master Commit: 459d9427a8b233ad31e7044fa2a647a1b7792dc8 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=459d9427a8b233ad31e7044fa…
Author: Charles Davis <cdavis(a)mymail.mines.edu> Date: Sat Jan 29 16:45:53 2011 -0700 winecoreaudio: Don't use Component Manager on Mac OS 10.6. --- configure | 9 ++++++- configure.ac | 10 ++++++- dlls/winecoreaudio.drv/audiounit.c | 50 ++++++++++++++++++++++++++--------- include/config.h.in | 3 ++ 4 files changed, 56 insertions(+), 16 deletions(-) diff --git a/configure b/configure index 124b7cd..89bfefa 100755 --- a/configure +++ b/configure @@ -5764,6 +5764,7 @@ for ac_header in \ ApplicationServices/ApplicationServices.h \ AudioToolbox/AudioConverter.h \ AudioUnit/AudioUnit.h \ + AudioUnit/AudioComponent.h \ CL/cl.h \ Carbon/Carbon.h \ CoreAudio/CoreAudio.h \ @@ -6526,8 +6527,14 @@ fi fi if test "$ac_cv_header_CoreAudio_CoreAudio_h" = "yes" -a "$ac_cv_header_AudioUnit_AudioUnit_h" = "yes" then - COREAUDIO="-framework CoreAudio -framework AudioUnit -framework CoreServices -framework AudioToolbox -framework CoreMIDI" + if test "$ac_cv_header_AudioUnit_AudioComponent_h" = "yes" + then + COREAUDIO="-framework CoreFoundation -framework CoreAudio -framework AudioUnit -framework AudioToolbox -framework CoreMIDI" + + else + COREAUDIO="-framework CoreAudio -framework AudioUnit -framework CoreServices -framework AudioToolbox -framework CoreMIDI" + fi fi if test "$ac_cv_header_OpenAL_al_h" = "yes" then diff --git a/configure.ac b/configure.ac index eb7b4a1..c0a9d7f 100644 --- a/configure.ac +++ b/configure.ac @@ -371,6 +371,7 @@ AC_CHECK_HEADERS(\ ApplicationServices/ApplicationServices.h \ AudioToolbox/AudioConverter.h \ AudioUnit/AudioUnit.h \ + AudioUnit/AudioComponent.h \ CL/cl.h \ Carbon/Carbon.h \ CoreAudio/CoreAudio.h \ @@ -711,8 +712,13 @@ case $host_os in fi if test "$ac_cv_header_CoreAudio_CoreAudio_h" = "yes" -a "$ac_cv_header_AudioUnit_AudioUnit_h" = "yes" then - dnl CoreServices needed by AudioUnit - AC_SUBST(COREAUDIO,"-framework CoreAudio -framework AudioUnit -framework CoreServices -framework AudioToolbox -framework CoreMIDI") + if test "$ac_cv_header_AudioUnit_AudioComponent_h" = "yes" + then + AC_SUBST(COREAUDIO,"-framework CoreFoundation -framework CoreAudio -framework AudioUnit -framework AudioToolbox -framework CoreMIDI") + else + dnl CoreServices needed by AudioUnit + AC_SUBST(COREAUDIO,"-framework CoreAudio -framework AudioUnit -framework CoreServices -framework AudioToolbox -framework CoreMIDI") + fi fi if test "$ac_cv_header_OpenAL_al_h" = "yes" then diff --git a/dlls/winecoreaudio.drv/audiounit.c b/dlls/winecoreaudio.drv/audiounit.c index bef882b..5191669 100644 --- a/dlls/winecoreaudio.drv/audiounit.c +++ b/dlls/winecoreaudio.drv/audiounit.c @@ -24,7 +24,9 @@ #define ULONG CoreFoundation_ULONG #define HRESULT CoreFoundation_HRESULT +#ifndef HAVE_AUDIOUNIT_AUDIOCOMPONENT_H #include <CoreServices/CoreServices.h> +#endif #include <AudioUnit/AudioUnit.h> #include <AudioToolbox/AudioToolbox.h> #undef ULONG @@ -35,6 +37,28 @@ #include "coreaudio.h" #include "wine/debug.h" +#ifndef HAVE_AUDIOUNIT_AUDIOCOMPONENT_H +/* Define new AudioComponent Manager functions for compatibility's sake */ +typedef Component AudioComponent; +typedef ComponentDescription AudioComponentDescription; +typedef ComponentInstance AudioComponentInstance; + +static inline AudioComponent AudioComponentFindNext(AudioComponent ac, AudioComponentDescription *desc) +{ + return FindNextComponent(ac, desc); +} + +static inline OSStatus AudioComponentInstanceNew(AudioComponent ac, AudioComponentInstance *aci) +{ + return OpenAComponent(ac, aci); +} + +static inline OSStatus AudioComponentInstanceDispose(AudioComponentInstance aci) +{ + return CloseComponent(aci); +} +#endif + WINE_DEFAULT_DEBUG_CHANNEL(wave); WINE_DECLARE_DEBUG_CHANNEL(midi); @@ -68,8 +92,8 @@ extern OSStatus CoreAudio_wiAudioUnitIOProc(void *inRefCon, int AudioUnit_CreateDefaultAudioUnit(void *wwo, AudioUnit *au) { OSStatus err; - Component comp; - ComponentDescription desc; + AudioComponent comp; + AudioComponentDescription desc; AURenderCallbackStruct callbackStruct; TRACE("\n"); @@ -80,11 +104,11 @@ int AudioUnit_CreateDefaultAudioUnit(void *wwo, AudioUnit *au) desc.componentFlags = 0; desc.componentFlagsMask = 0; - comp = FindNextComponent(NULL, &desc); + comp = AudioComponentFindNext(NULL, &desc); if (comp == NULL) return 0; - err = OpenAComponent(comp, au); + err = AudioComponentInstanceNew(comp, au); if (err != noErr || *au == NULL) return 0; @@ -102,7 +126,7 @@ int AudioUnit_CreateDefaultAudioUnit(void *wwo, AudioUnit *au) int AudioUnit_CloseAudioUnit(AudioUnit au) { - OSStatus err = CloseComponent(au); + OSStatus err = AudioComponentInstanceDispose(au); return (err == noErr); } @@ -198,8 +222,8 @@ int AudioUnit_CreateInputUnit(void* wwi, AudioUnit* out_au, UInt32* outFrameCount) { OSStatus err = noErr; - ComponentDescription description; - Component component; + AudioComponentDescription description; + AudioComponent component; AudioUnit au; UInt32 param; AURenderCallbackStruct callback; @@ -220,17 +244,17 @@ int AudioUnit_CreateInputUnit(void* wwi, AudioUnit* out_au, description.componentFlags = 0; description.componentFlagsMask = 0; - component = FindNextComponent(NULL, &description); + component = AudioComponentFindNext(NULL, &description); if (!component) { - ERR("FindNextComponent(kAudioUnitSubType_HALOutput) failed\n"); + ERR("AudioComponentFindNext(kAudioUnitSubType_HALOutput) failed\n"); return 0; } - err = OpenAComponent(component, &au); + err = AudioComponentInstanceNew(component, &au); if (err != noErr || au == NULL) { - ERR("OpenAComponent failed: %08lx\n", err); + ERR("AudioComponentInstanceNew failed: %08lx\n", err); return 0; } @@ -343,7 +367,7 @@ int AudioUnit_CreateInputUnit(void* wwi, AudioUnit* out_au, error: if (au) - CloseComponent(au); + AudioComponentInstanceDispose(au); return 0; } @@ -353,7 +377,7 @@ error: int SynthUnit_CreateDefaultSynthUnit(AUGraph *graph, AudioUnit *synth) { OSStatus err; - ComponentDescription desc; + AudioComponentDescription desc; AUNode synthNode; AUNode outNode; diff --git a/include/config.h.in b/include/config.h.in index dab00b2..5cae81b 100644 --- a/include/config.h.in +++ b/include/config.h.in @@ -40,6 +40,9 @@ /* Define to 1 if you have the <AudioToolbox/AudioConverter.h> header file. */ #undef HAVE_AUDIOTOOLBOX_AUDIOCONVERTER_H +/* Define to 1 if you have the <AudioUnit/AudioComponent.h> header file. */ +#undef HAVE_AUDIOUNIT_AUDIOCOMPONENT_H + /* Define to 1 if you have the <AudioUnit/AudioUnit.h> header file. */ #undef HAVE_AUDIOUNIT_AUDIOUNIT_H
1
0
0
0
Eric Pouech : kernel32: Use binary search for key lookup in terminfo generated data.
by Alexandre Julliard
31 Jan '11
31 Jan '11
Module: wine Branch: master Commit: 1f0e9499e51a8dfc4df9cc82211cd828a6286170 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=1f0e9499e51a8dfc4df9cc822…
Author: Eric Pouech <eric.pouech(a)orange.fr> Date: Sat Jan 29 20:02:36 2011 +0100 kernel32: Use binary search for key lookup in terminfo generated data. --- dlls/kernel32/term.c | 57 ++++++++++++++++++++++++++++++++++--------------- 1 files changed, 39 insertions(+), 18 deletions(-) diff --git a/dlls/kernel32/term.c b/dlls/kernel32/term.c index 7f78fa3..df0719a 100644 --- a/dlls/kernel32/term.c +++ b/dlls/kernel32/term.c @@ -336,6 +336,13 @@ static struct dbkey_pair* TERM_dbkey; static unsigned TERM_dbkey_size; static unsigned TERM_dbkey_index; +static int TERM_dbkey_cmp(const void* p1, const void* p2) +{ + const struct dbkey_pair* kp1 = p1; + const struct dbkey_pair* kp2 = p2; + return strcmp(kp1->string, kp2->string); +} + static BOOL TERM_AddKeyDescr(const char* string, struct dbkey_descr* descr) { if (!string || string == (const char*)-1) return TRUE; @@ -363,7 +370,7 @@ static BOOL TERM_AddKeyDescr(const char* string, struct dbkey_descr* descr) static BOOL TERM_BuildKeyDB(void) { - unsigned i, len; + unsigned i, j, len; struct dbkey_descr descr; char tmp[64]; @@ -388,6 +395,17 @@ static BOOL TERM_BuildKeyDB(void) #undef X } } + for (i = 0; i < TERM_dbkey_index; i++) + { + for (j = 0; j < TERM_dbkey_index; j++) + { + if (i != j && + TERM_dbkey[i].string_len >= TERM_dbkey[j].string_len && + !memcmp(TERM_dbkey[i].string, TERM_dbkey[j].string, TERM_dbkey[j].string_len)) + FIXME("substring %d/%s %d/%s\n", i, TERM_dbkey[i].string, j, TERM_dbkey[j].string); + } + } + qsort(TERM_dbkey, TERM_dbkey_index, sizeof(TERM_dbkey[0]), TERM_dbkey_cmp); return TRUE; } @@ -419,27 +437,30 @@ BOOL TERM_Exit(void) /* -1 not found, 0 cannot decide, > 0 found */ int TERM_FillInputRecord(const char* in, size_t len, INPUT_RECORD* ir) { - unsigned i; - struct dbkey_descr* found = NULL; + int low = 0, high = TERM_dbkey_index - 1, mid, res; + struct dbkey_descr* found; - for (i = 0; i < TERM_dbkey_index; i++) + while (low <= high) { - if (!memcmp(TERM_dbkey[i].string, in, len)) + mid = low + (high - low) / 2; + res = memcmp(in, TERM_dbkey[mid].string, len); + if (!res) { - if (len < TERM_dbkey[i].string_len) return 0; - if (found) return 0; - found = &TERM_dbkey[i].descr; + if (len < TERM_dbkey[mid].string_len) return 0; + found = &TERM_dbkey[mid].descr; + switch (found->kind) + { + case dbk_simple: + return TERM_FillSimpleChar(found->p1, ir); + case dbk_complex: + init_complex_char(&ir[0], 1, found->p1, found->p2, ENHANCED_KEY | found->p3); + init_complex_char(&ir[1], 0, found->p1, found->p2, ENHANCED_KEY | found->p3); + return 2; + } + return -1; } - } - if (!found) return -1; - switch (found->kind) - { - case dbk_simple: - return TERM_FillSimpleChar(found->p1, ir); - case dbk_complex: - init_complex_char(&ir[0], 1, found->p1, found->p2, ENHANCED_KEY | found->p3); - init_complex_char(&ir[1], 0, found->p1, found->p2, ENHANCED_KEY | found->p3); - return 2; + else if (res < 0) high = mid - 1; + else low = mid + 1; } return -1; }
1
0
0
0
Eric Pouech : kernel32: Added shift & ctrl modifiers for function keys.
by Alexandre Julliard
31 Jan '11
31 Jan '11
Module: wine Branch: master Commit: 6d75a47b6de3758ac1a2abd30491eaba6c72dbc1 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=6d75a47b6de3758ac1a2abd30…
Author: Eric Pouech <eric.pouech(a)orange.fr> Date: Sat Jan 29 20:02:30 2011 +0100 kernel32: Added shift & ctrl modifiers for function keys. --- dlls/kernel32/term.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 52 insertions(+), 0 deletions(-) diff --git a/dlls/kernel32/term.c b/dlls/kernel32/term.c index c0aacd9..7f78fa3 100644 --- a/dlls/kernel32/term.c +++ b/dlls/kernel32/term.c @@ -247,6 +247,58 @@ static struct dbkey_init TERM_dbkey_init[] = { {"kf10", NULL, {dbk_complex, 0x44, 0x79, 0}}, {"kf11", NULL, {dbk_complex, 0xd9, 0x7a, 0}}, {"kf12", NULL, {dbk_complex, 0xda, 0x7b, 0}}, + {"kf13", NULL, {dbk_complex, 0x3b, 0x70, SHIFT_PRESSED}}, + {"kf14", NULL, {dbk_complex, 0x3c, 0x71, SHIFT_PRESSED}}, + {"kf15", NULL, {dbk_complex, 0x3d, 0x72, SHIFT_PRESSED}}, + {"kf16", NULL, {dbk_complex, 0x3e, 0x73, SHIFT_PRESSED}}, + {"kf17", NULL, {dbk_complex, 0x3f, 0x74, SHIFT_PRESSED}}, + {"kf18", NULL, {dbk_complex, 0x40, 0x75, SHIFT_PRESSED}}, + {"kf19", NULL, {dbk_complex, 0x41, 0x76, SHIFT_PRESSED}}, + {"kf20", NULL, {dbk_complex, 0x42, 0x77, SHIFT_PRESSED}}, + {"kf21", NULL, {dbk_complex, 0x43, 0x78, SHIFT_PRESSED}}, + {"kf22", NULL, {dbk_complex, 0x44, 0x79, SHIFT_PRESSED}}, + {"kf23", NULL, {dbk_complex, 0xd9, 0x7a, SHIFT_PRESSED}}, + {"kf24", NULL, {dbk_complex, 0xda, 0x7b, SHIFT_PRESSED}}, + {"kf25", NULL, {dbk_complex, 0x3b, 0x70, LEFT_CTRL_PRESSED}}, + {"kf26", NULL, {dbk_complex, 0x3c, 0x71, LEFT_CTRL_PRESSED}}, + {"kf27", NULL, {dbk_complex, 0x3d, 0x72, LEFT_CTRL_PRESSED}}, + {"kf28", NULL, {dbk_complex, 0x3e, 0x73, LEFT_CTRL_PRESSED}}, + {"kf29", NULL, {dbk_complex, 0x3f, 0x74, LEFT_CTRL_PRESSED}}, + {"kf30", NULL, {dbk_complex, 0x40, 0x75, LEFT_CTRL_PRESSED}}, + {"kf31", NULL, {dbk_complex, 0x41, 0x76, LEFT_CTRL_PRESSED}}, + {"kf32", NULL, {dbk_complex, 0x42, 0x77, LEFT_CTRL_PRESSED}}, + {"kf33", NULL, {dbk_complex, 0x43, 0x78, LEFT_CTRL_PRESSED}}, + {"kf34", NULL, {dbk_complex, 0x44, 0x79, LEFT_CTRL_PRESSED}}, + {"kf35", NULL, {dbk_complex, 0xd9, 0x7a, LEFT_CTRL_PRESSED}}, + {"kf36", NULL, {dbk_complex, 0xda, 0x7b, LEFT_CTRL_PRESSED}}, + {"kf37", NULL, {dbk_complex, 0x3b, 0x70, LEFT_CTRL_PRESSED|SHIFT_PRESSED}}, + {"kf38", NULL, {dbk_complex, 0x3c, 0x71, LEFT_CTRL_PRESSED|SHIFT_PRESSED}}, + {"kf39", NULL, {dbk_complex, 0x3d, 0x72, LEFT_CTRL_PRESSED|SHIFT_PRESSED}}, + {"kf40", NULL, {dbk_complex, 0x3e, 0x73, LEFT_CTRL_PRESSED|SHIFT_PRESSED}}, + {"kf41", NULL, {dbk_complex, 0x3f, 0x74, LEFT_CTRL_PRESSED|SHIFT_PRESSED}}, + {"kf42", NULL, {dbk_complex, 0x40, 0x75, LEFT_CTRL_PRESSED|SHIFT_PRESSED}}, + {"kf43", NULL, {dbk_complex, 0x41, 0x76, LEFT_CTRL_PRESSED|SHIFT_PRESSED}}, + {"kf44", NULL, {dbk_complex, 0x42, 0x77, LEFT_CTRL_PRESSED|SHIFT_PRESSED}}, + {"kf45", NULL, {dbk_complex, 0x43, 0x78, LEFT_CTRL_PRESSED|SHIFT_PRESSED}}, + {"kf46", NULL, {dbk_complex, 0x44, 0x79, LEFT_CTRL_PRESSED|SHIFT_PRESSED}}, + {"kf47", NULL, {dbk_complex, 0xd9, 0x7a, LEFT_CTRL_PRESSED|SHIFT_PRESSED}}, + {"kf48", NULL, {dbk_complex, 0xda, 0x7b, LEFT_CTRL_PRESSED|SHIFT_PRESSED}}, + {"kf49", NULL, {dbk_complex, 0x3b, 0x70, LEFT_ALT_PRESSED}}, + {"kf50", NULL, {dbk_complex, 0x3c, 0x71, LEFT_ALT_PRESSED}}, + {"kf51", NULL, {dbk_complex, 0x3d, 0x72, LEFT_ALT_PRESSED}}, + {"kf52", NULL, {dbk_complex, 0x3e, 0x73, LEFT_ALT_PRESSED}}, + {"kf53", NULL, {dbk_complex, 0x3f, 0x74, LEFT_ALT_PRESSED}}, + {"kf54", NULL, {dbk_complex, 0x40, 0x75, LEFT_ALT_PRESSED}}, + {"kf55", NULL, {dbk_complex, 0x41, 0x76, LEFT_ALT_PRESSED}}, + {"kf56", NULL, {dbk_complex, 0x42, 0x77, LEFT_ALT_PRESSED}}, + {"kf57", NULL, {dbk_complex, 0x43, 0x78, LEFT_ALT_PRESSED}}, + {"kf58", NULL, {dbk_complex, 0x44, 0x79, LEFT_ALT_PRESSED}}, + {"kf59", NULL, {dbk_complex, 0xd9, 0x7a, LEFT_ALT_PRESSED}}, + {"kf60", NULL, {dbk_complex, 0xda, 0x7b, LEFT_ALT_PRESSED}}, + {"kf61", NULL, {dbk_complex, 0x3b, 0x70, LEFT_ALT_PRESSED|SHIFT_PRESSED}}, + {"kf62", NULL, {dbk_complex, 0x3c, 0x71, LEFT_ALT_PRESSED|SHIFT_PRESSED}}, + {"kf63", NULL, {dbk_complex, 0x3d, 0x72, LEFT_ALT_PRESSED|SHIFT_PRESSED}}, + {"kdch1", "kDC", {dbk_complex, 0x53, 0x2e, 0}}, {"kich1", "kIC", {dbk_complex, 0x52, 0x2d, 0}}, {"knp", "kNXT", {dbk_complex, 0x51, 0x22, 0}},
1
0
0
0
← Newer
1
2
3
4
5
6
...
88
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
Results per page:
10
25
50
100
200