Patch 8.2.5159

9 views
Skip to first unread message

Bram Moolenaar

unread,
Jun 25, 2022, 8:48:59 AM6/25/22
to vim...@googlegroups.com

Patch 8.2.5159 (after 8.2.5157)
Problem: Fix for CTRL-key combinations causes more problems than it solves.
Solution: Roll back the change.
Files: src/gui_w32.c


*** ../vim-8.2.5158/src/gui_w32.c 2022-06-24 20:18:05.902326400 +0100
--- src/gui_w32.c 2022-06-25 13:46:11.655526039 +0100
***************
*** 2055,2075 ****
int i;
UINT scan_code;

! // Construct the keyboard state table, the modifiers can and will
! // affect the character translation performed by ToUnicode.
! // Eg. With a Russian keyboard layout pressing 'n' produces 'т' but
! // Ctrl+p produces 'p', this is essential for the keybindings to
! // work.
memset(keyboard_state, 0, 256);
- if (GetKeyState(VK_CONTROL) & 0x8000)
- keyboard_state[VK_CONTROL] = 0x80;
if (GetKeyState(VK_SHIFT) & 0x8000)
keyboard_state[VK_SHIFT] = 0x80;
if (GetKeyState(VK_CAPITAL) & 0x0001)
keyboard_state[VK_CAPITAL] = 0x01;
! // Alt-Gr is synthesized as (Right)Alt + Ctrl.
! if ((GetKeyState(VK_RMENU) & 0x8000) && keyboard_state[VK_CONTROL])
keyboard_state[VK_MENU] = 0x80;

// Translate the virtual key according to the current keyboard
// layout.
--- 2055,2075 ----
int i;
UINT scan_code;

! // Construct the state table with only a few modifiers, we don't
! // really care about the presence of Ctrl/Alt as those modifiers are
! // handled by Vim separately.
memset(keyboard_state, 0, 256);
if (GetKeyState(VK_SHIFT) & 0x8000)
keyboard_state[VK_SHIFT] = 0x80;
if (GetKeyState(VK_CAPITAL) & 0x0001)
keyboard_state[VK_CAPITAL] = 0x01;
! // Alt-Gr is synthesized as Alt + Ctrl.
! if ((GetKeyState(VK_RMENU) & 0x8000)
! && (GetKeyState(VK_CONTROL) & 0x8000))
! {
keyboard_state[VK_MENU] = 0x80;
+ keyboard_state[VK_CONTROL] = 0x80;
+ }

// Translate the virtual key according to the current keyboard
// layout.
***************
*** 2079,2094 ****
// If this is a dead key ToUnicode returns a negative value.
len = ToUnicode(vk, scan_code, keyboard_state, ch, ARRAY_LENGTH(ch),
0);
- if (len == 0 && keyboard_state[VK_CONTROL])
- {
- // Handle one more special case: pressing Ctrl+key may
- // generate an unprintable ASCII character, try again without
- // the modifier to get the pressed key value.
- keyboard_state[VK_CONTROL] = 0;
- len = ToUnicode(vk, scan_code, keyboard_state, ch,
- ARRAY_LENGTH(ch), 0);
- keyboard_state[VK_CONTROL] = 0x80;
- }
dead_key = len < 0;

if (len <= 0)
--- 2079,2084 ----
*** ../vim-8.2.5158/src/version.c 2022-06-25 12:13:24.141938947 +0100
--- src/version.c 2022-06-25 13:47:28.043018171 +0100
***************
*** 737,738 ****
--- 737,740 ----
{ /* Add new patch number below this line */
+ /**/
+ 5159,
/**/

--
The average life of an organization chart is six months. You can safely
ignore any order from your boss that would take six months to complete.
(Scott Adams - The Dilbert principle)

/// Bram Moolenaar -- Br...@Moolenaar.net -- http://www.Moolenaar.net \\\
/// \\\
\\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
Reply all
Reply to author
Forward
0 new messages