Hi,

Testing Ctrl+C/V/A works for me in Bdsh :/

At
https://github.com/HelenOS/helenos/blob/master/uspace/lib/gui/terminal.c#L424
I test for (event->ev.key.mods & KM_CTRL) != 0.
Then I and it with event->ev.key.key == KC_D and if that evaluates to true,
insert the EOF.

But now that I know about Bdsh using those events too, I checked one level
outside and matched the LCTRL mod (I thought that
since KC_D is a printable character, LCTRL + D would get inside that if
statement) and got LCTRL + D working.

Thanks a bunch :)

​dzejrou

On 18 December 2017 at 15:55, Jiri Svoboda <[email protected]> wrote:

> Hi Dzejrou,
>
> I added a piece of debugging code into term_read() to dump the keyboard
> events it reads to a file and got mods = 0x84 when I pressed Left Ctrl+key.
> So looks like it works for me.
>
> Do Ctrl+key combinations work for you in Bdsh? E.g. Ctrl+C, Ctrl+V to copy
> and paste. If so, you should be getting Ctrl in term_read() as it takes the
> events from the same queue as term_get_event() from where it goes to Bdsh.
>
> If Ctrl works for you in Bdsh, it could be a problem with the code you are
> using to check for Ctrl modifier. Can you show us / paste it here?
>
> Best regards,
> Jiri
>
> ---------- Původní e-mail ----------
> Od: Jaroslav Jindrák <[email protected]>
> Komu: HelenOS development mailing list <[email protected]>
> Datum: 18. 12. 2017 13:43:50
> Předmět: [HelenOS-devel] Held CTRL modifier not applied in terminal.c
>
> Hi,
>
> this question is mainly aimed at Jiri Svoboda as he is the author of most
> of the keyboard
> input code in HelenOS, but if anybody has any pointers for me, I'd
> appreciate your input.
>
> While working on the C++ io system, I was testing this code:
>
> std::string str{};
> while (std::cin >> str)
>     std::cout << str << std::endl;
>
> This is a common way to implement a cat-like behavior as the while loop
> runs until
> (in most cases) std::cin encounters EOF. However, the current HelenOS does
> not provide
> me with a way to send EOF to the standard input and so this program would
> loop endlessly.
>
> Because of this, I tried to make CTRL+D to send EOF to the standard input
> by modifying
> the term_read function in uspace/lib/gui/terminal.c . The problem is, both
> the LCTRL and RCTRL
> (and LALT/RALT for that matter) do not make their way to this function
> (while others like
> LSHIFT/RSHIFT or NUM_LOCK do). After checking the code of both the termnal
> and the
> HID server (which does actually set the CTRL flag) I cannot see where the
> CTRL flag could be
> cleared. Got any ideas (even general ideas for where I should look)?
>
> The part of actually inserting EOF on a key combination is easy (currently
> have it mapped
> to LSHIFT + NUM1 for testing), it's just the dissappearance of CTRL that
> confuses me :)
>
> ​dzejrou
> _______________________________________________
> HelenOS-devel mailing list
> [email protected]
> http://lists.modry.cz/listinfo/helenos-devel
>
>
> _______________________________________________
> HelenOS-devel mailing list
> [email protected]
> http://lists.modry.cz/listinfo/helenos-devel
>
>
_______________________________________________
HelenOS-devel mailing list
[email protected]
http://lists.modry.cz/listinfo/helenos-devel

Reply via email to