From f6b62d8fe77a474935ef3dee6bb20ca3cc4da602 Mon Sep 17 00:00:00 2001 From: aycabta Date: Tue, 28 May 2019 04:39:29 +0900 Subject: [PATCH] Use Shift+Enter as Meta+Enter on Windows --- lib/reline/windows.rb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/reline/windows.rb b/lib/reline/windows.rb index da4f744b18..36bd8dcc45 100644 --- a/lib/reline/windows.rb +++ b/lib/reline/windows.rb @@ -40,6 +40,7 @@ class Reline::Windows end VK_MENU = 0x12 + VK_SHIFT = 0x10 STD_OUTPUT_HANDLE = -11 @@getwch = Win32API.new('msvcrt', '_getwch', [], 'I') @@kbhit = Win32API.new('msvcrt', '_kbhit', [], 'I') @@ -75,7 +76,12 @@ class Reline::Windows end input = getwch alt = (@@GetKeyState.call(VK_MENU) & 0x80) != 0 - if input.size > 1 + shift_enter = (@@GetKeyState.call(VK_SHIFT) & 0x80) != 0 and input.first == 0x0D + if shift_enter + # It's treated as Meta+Enter on Windows + @@buf.concat(["\e".ord]) + @@buf.concat(input) + elsif input.size > 1 @@buf.concat(input) else # single byte case input[0]