diff --git a/mingw-w64-ncurses/003-win_driver-backspace-fix.patch b/mingw-w64-ncurses/003-win_driver-backspace-fix.patch new file mode 100644 index 0000000000000..57a74ac0d4def --- /dev/null +++ b/mingw-w64-ncurses/003-win_driver-backspace-fix.patch @@ -0,0 +1,36 @@ +diff -ru ncurses-6.4-20230211/ncurses/win32con/win_driver.c ncurses-6.4-20230211-fixed/ncurses/win32con/win_driver.c +--- ncurses-6.4-20230211/ncurses/win32con/win_driver.c 2023-02-12 03:31:33 +0000 ++++ ncurses-6.4-20230211-fixed/ncurses/win32con/win_driver.c 2023-06-10 23:24:54 +0000 +@@ -94,7 +94,8 @@ + GenMap(VK_RIGHT, KEY_RIGHT), + GenMap(VK_DOWN, KEY_DOWN), + GenMap(VK_DELETE, KEY_DC), +- GenMap(VK_INSERT, KEY_IC) ++ GenMap(VK_INSERT, KEY_IC), ++ GenMap(VK_BACK, KEY_BACKSPACE) + }; + static const LONG ansi_keys[] = + { +@@ -1570,7 +1571,12 @@ + char ch = inp_rec.Event.KeyEvent.uChar.AsciiChar; + + if (inp_rec.Event.KeyEvent.bKeyDown) { +- if (0 == ch) { ++ /* ++ * Windows console reports VK_BACK together with an ASCII ++ * character 0x7F (DEL), we we have to prefer VK in this case ++ * in order to report a correct event to an app. ++ */ ++ if (0 == ch || vk == VK_BACK) { + int nKey = MapKey(vk); + if (nKey < 0) { + CONSUME(); +@@ -2135,7 +2141,7 @@ + vk = (WORD) (vk + 12); + } + } +- if (*buf == 0) { ++ if (*buf == 0 || vk == VK_BACK) { + int key = MapKey(vk); + if (key < 0) + continue; diff --git a/mingw-w64-ncurses/PKGBUILD b/mingw-w64-ncurses/PKGBUILD index e344296e52d4d..e8b409f5b472f 100644 --- a/mingw-w64-ncurses/PKGBUILD +++ b/mingw-w64-ncurses/PKGBUILD @@ -6,7 +6,7 @@ pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" _base_ver=6.4 _date_rev=20230211 pkgver=${_base_ver}.${_date_rev} -pkgrel=1 +pkgrel=2 pkgdesc="System V Release 4.0 curses emulation library (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') @@ -18,11 +18,13 @@ options=('staticlibs' 'strip') # https://ftp.gnu.org/pub/gnu/ncurses/ncurses-${pkgver}.tar.gz{,.sig} source=("https://invisible-mirror.net/archives/ncurses/current/${_realname}-${_base_ver}-${_date_rev}.tgz"{,.asc} 002-ncurses-config-win-paths.patch + 003-win_driver-backspace-fix.patch ncurses-6.3-cflags-private.patch ncurses-6.3-pkgconfig.patch) sha256sums=('657d41b7340c5ac5362ae84ba1ece70c385250dc16a467d6ec748bc1b372e280' 'SKIP' '5367d8f49aff92884b9daa014502df13e1812f1b7ee1b3a3cb18139f10039408' + '5bcec9396ae6a9ea9e62eed23f5e95a3911b250ca2e0f1277187e4270d2ec90e' '3107029dfb807e338d34641d78329cd6725c58e6b873352621f4b9611a8380bf' 'b8544a607dfbeffaba2b087f03b57ed1fa81286afca25df65f61b04b5f3b3738') validpgpkeys=('19882D92DDA4C400C22C0D56CC2AF4472167BE03') # "Thomas E. Dickey (self-signed w/o SHA1) " @@ -30,6 +32,7 @@ validpgpkeys=('19882D92DDA4C400C22C0D56CC2AF4472167BE03') # "Thomas E. Dickey ( prepare() { cd ${_realname}-${_base_ver}-${_date_rev} patch -p1 -i ${srcdir}/002-ncurses-config-win-paths.patch + patch -p1 -i ${srcdir}/003-win_driver-backspace-fix.patch # do not leak build-time LDFLAGS into the pkgconfig files: # https://bugs.archlinux.org/task/68523