Mercurial > mxe-octave
annotate src/readline-2-event-hook.patch @ 6551:6090fc4102bb release
maint: Merge default to release.
author | Markus Mützel <markus.muetzel@gmx.de> |
---|---|
date | Wed, 30 Nov 2022 18:23:50 +0100 |
parents | 54f336bbb833 |
children | a6f1111a9f1d |
rev | line source |
---|---|
6545
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
1 diff -urN readline-8.2/input.c.orig readline-8.2/input.c |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
2 --- readline-8.2/input.c.orig 2022-04-08 21:43:24.000000000 +0200 |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
3 +++ readline-8.2/input.c 2022-11-22 16:54:55.099070500 +0100 |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
4 @@ -176,6 +176,12 @@ |
5031
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
5 static unsigned char ibuffer[512]; |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
6 static int ibuffer_len = sizeof (ibuffer) - 1; |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
7 |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
8 +#if defined (__MINGW32__) |
6545
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
9 +#include <windows.h> |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
10 +static int _win32_getch (int *const is_char); |
5031
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
11 +static int _win32_kbhit (void); |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
12 +#endif |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
13 + |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
14 #define any_typein (push_index != pop_index) |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
15 |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
16 int |
6545
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
17 @@ -306,7 +311,7 @@ |
5031
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
18 #if defined (__MINGW32__) |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
19 /* Use getch/_kbhit to check for available console input, in the same way |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
20 that we read it normally. */ |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
21 - chars_avail = isatty (tty) ? _kbhit () : 0; |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
22 + chars_avail = isatty (tty) ? _win32_kbhit () : 0; |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
23 result = 0; |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
24 #endif |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
25 |
6545
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
26 @@ -404,7 +409,7 @@ |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
27 |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
28 #if defined (__MINGW32__) |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
29 if (isatty (tty)) |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
30 - return (_kbhit ()); |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
31 + return (_win32_kbhit ()); |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
32 #endif |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
33 |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
34 return 0; |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
35 @@ -799,6 +804,139 @@ |
5031
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
36 return (c); |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
37 } |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
38 |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
39 +#if defined (__MINGW32__) |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
40 +#define _WIN32_READ_NOCHAR (-2) |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
41 +static char _win32_buf[16] = {'0'}; |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
42 +static int _win32_bufidx = 0; |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
43 + |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
44 +static int |
6545
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
45 +_win32_getch_internal (int block, int *const is_char) |
5031
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
46 +{ |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
47 + INPUT_RECORD rec; |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
48 + DWORD evRead, waitResult; |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
49 + HANDLE hInput = (HANDLE) _get_osfhandle (fileno (rl_instream)); |
6545
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
50 + *is_char = 1; |
5031
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
51 + |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
52 + if (_win32_bufidx > 0) |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
53 + return _win32_buf[--_win32_bufidx]; |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
54 + |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
55 + hInput = (HANDLE) _get_osfhandle (fileno (rl_instream)); |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
56 + |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
57 + do |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
58 + { |
6545
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
59 + *is_char = 0; |
5031
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
60 + if (! block) |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
61 + { |
6545
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
62 + if (WaitForSingleObject (hInput, _keyboard_input_timeout/1000) != WAIT_OBJECT_0) |
5031
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
63 + return _WIN32_READ_NOCHAR; |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
64 + } |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
65 + |
6545
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
66 + if (!ReadConsoleInputW (hInput, &rec, 1, &evRead) || evRead != 1) |
5031
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
67 + return EOF; |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
68 + |
6545
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
69 + *is_char = 1; |
5031
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
70 + switch (rec.EventType) |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
71 + { |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
72 + case KEY_EVENT: |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
73 + if ((rec.Event.KeyEvent.bKeyDown && |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
74 + (rec.Event.KeyEvent.wVirtualKeyCode < VK_SHIFT || |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
75 + rec.Event.KeyEvent.wVirtualKeyCode > VK_MENU)) || |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
76 + (!rec.Event.KeyEvent.bKeyDown && |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
77 + rec.Event.KeyEvent.wVirtualKeyCode == VK_MENU && |
6545
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
78 + rec.Event.KeyEvent.uChar.UnicodeChar)) |
5031
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
79 + { |
6545
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
80 + if (rec.Event.KeyEvent.uChar.UnicodeChar) |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
81 + return (int) rec.Event.KeyEvent.uChar.UnicodeChar; |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
82 + |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
83 + *is_char = 0; |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
84 + switch (rec.Event.KeyEvent.wVirtualKeyCode) |
5031
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
85 + { |
6545
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
86 + case VK_UP: |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
87 + _win32_buf[_win32_bufidx++] = 'A'; |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
88 + return 0340; |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
89 + case VK_DOWN: |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
90 + _win32_buf[_win32_bufidx++] = 'B'; |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
91 + return 0340; |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
92 + case VK_RIGHT: |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
93 + _win32_buf[_win32_bufidx++] = 'C'; |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
94 + return 0340; |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
95 + case VK_LEFT: |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
96 + _win32_buf[_win32_bufidx++] = 'D'; |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
97 + return 0340; |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
98 + case VK_HOME: |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
99 + _win32_buf[_win32_bufidx++] = 'H'; |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
100 + return 0340; |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
101 + case VK_END: |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
102 + _win32_buf[_win32_bufidx++] = 'F'; |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
103 + return 0340; |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
104 + case VK_DELETE: |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
105 + _win32_buf[_win32_bufidx++] = 8; |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
106 + _win32_buf[_win32_bufidx++] = 'C'; |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
107 + return 0340; |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
108 + default: |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
109 + break; |
5031
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
110 + } |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
111 + } |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
112 + break; |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
113 + |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
114 + case WINDOW_BUFFER_SIZE_EVENT: |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
115 + rl_resize_terminal (); |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
116 + break; |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
117 + |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
118 + default: |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
119 + break; |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
120 + } |
6545
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
121 + } |
5031
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
122 + while (1); |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
123 +} |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
124 + |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
125 +static int |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
126 +_win32_kbhit (void) |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
127 +{ |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
128 + int result; |
6545
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
129 + int is_char; |
5031
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
130 + |
6545
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
131 + result = _win32_getch_internal (0, &is_char); |
5031
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
132 + if (result == _WIN32_READ_NOCHAR |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
133 + || result == EOF) |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
134 + return 0; |
6545
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
135 + |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
136 + if (is_char) |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
137 + { |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
138 + char charbuf[5] = {0}; |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
139 + wchar_t unicode[2] = {result, 0}; |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
140 + int utf16_code_units = 1; |
6546
54f336bbb833
readline: Improve check for UTF-16 surrogates (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
6545
diff
changeset
|
141 + if ((unicode[0] & 0xF800) == 0xD800) /* outside BMP */ |
6545
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
142 + { |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
143 + unicode[1] = _win32_getch_internal (0, &is_char); |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
144 + utf16_code_units++; |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
145 + } |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
146 + /* convert to UTF-8 byte sequence */ |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
147 + int len = WideCharToMultiByte (CP_UTF8, 0, |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
148 + (wchar_t *) &unicode, utf16_code_units, |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
149 + charbuf, 5, NULL, NULL); |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
150 + for (int i=0; i<len; i++) |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
151 + { |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
152 + _win32_buf[_win32_bufidx++] = (unsigned char) charbuf[len-i-1]; |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
153 + } |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
154 + } |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
155 + else |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
156 + { |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
157 + /* buffer is read from back to front */ |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
158 + _win32_buf[_win32_bufidx++] = 0x5b; /* "[" */ |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
159 + _win32_buf[_win32_bufidx++] = 0x1b; /* ESC */ |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
160 + } |
5031
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
161 + |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
162 + return _win32_bufidx; |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
163 +} |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
164 + |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
165 +static int |
6545
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
166 +_win32_getch (int *const is_char) |
5031
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
167 +{ |
6545
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
168 + return _win32_getch_internal (1, is_char); |
5031
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
169 +} |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
170 +#endif |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
171 + |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
172 int |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
173 rl_getc (FILE *stream) |
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
174 { |
6545
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
175 @@ -818,8 +937,11 @@ |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
176 /* We know at this point that _rl_caught_signal == 0 */ |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
177 |
5031
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
178 #if defined (__MINGW32__) |
6545
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
179 - if (isatty (fd) |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
180 - return (_getch ()); /* "There is no error return." */ |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
181 + if (isatty (fd)) |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
182 + { |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
183 + int is_char; |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
184 + return (_win32_getch (&is_char)); |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
185 + } |
5031
5049ab5e66f6
Re-add readline patches to work with readline 8 (Bug #55957)
John Donoghue
parents:
diff
changeset
|
186 #endif |
6545
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
187 result = 0; |
a76f513700df
readline: Fix issue with arrow keys in Octave CLI (bug #63400).
Markus Mützel <markus.muetzel@gmx.de>
parents:
5607
diff
changeset
|
188 #if defined (HAVE_PSELECT) || defined (HAVE_SELECT) |