ismail-yilmaz / upp-components

A collection of packages for U++ framework.
Other
35 stars 2 forks source link

CTRL+P ~ CTRL+Z were filtered ? #6

Closed chivstyle closed 3 years ago

chivstyle commented 3 years ago
chiv@chiv-vpc:~$ uname -a
Linux chiv-vpc 5.4.0-53-generic #59-Ubuntu SMP Wed Oct 21 09:38:44 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
chiv@chiv-vpc:~$ uname aaaaaaa

CTRL+U will clear the command, but Terminal does not response this hot key, so dose CTRL+P, ....

ismail-yilmaz commented 3 years ago

chiv@chiv-vpc:~$ uname -a
Linux chiv-vpc 5.4.0-53-generic #59-Ubuntu SMP Wed Oct 21 09:38:44 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
chiv@chiv-vpc:~$ uname aaaaaaa
@chivstyle 

Hello, and thank you for the report.



CTRL+U will clear the command, but `Terminal` does not response this hot key, so dose CTRL+P, ....

Unfortunately I cannot reproduce the problem here. (The CTRL+U and CTRL+P works fine on my machines)

I'd be grateful if you could provide some more information on your desktop setup, such as the desktop user interface, U++ build, the value of TERM variable, etc.

chivstyle commented 3 years ago

Hi. My testing machine

OS: Windows 10 64bit
Toolchain: MSVS19x64
U++: upp-win-15400

I tested the example SshTerminalExample. CTRL+A, CTRL+B, ... CTRL+O worked, but CTRL+P ~ CTRL+Z didn't work. I connected to a Ubuntu 20.04 64bit machine.

ismail-yilmaz commented 3 years ago

Hi. My testing machine

OS: Windows 10 64bit
Toolchain: MSVS19x64
U++: upp-win-15400

I tested the example SshTerminalExample. CTRL+A, CTRL+B, ... CTRL+O worked, but CTRL+P ~ CTRL+Z didn't work. I connected to a Ubuntu 20.04 64bit machine.

Ah, on Windows. OK, then. Thank you very much. I will investigate the issue and see what's going on.
By the way, are you by any chance on a laptop or notebook? Because the control key handling had some problems on some notebooks, such as Dell XPS and Inspiron machines.

chivstyle commented 3 years ago

Thanks for reply. I tested on my desktop PC, my keyboard is cherry MX BOARD 1.0. By the way, I tested the SshTerminalExample with software keyboard, and got the same result. I read the code, and found

if((key & K_ALT_KEY) == K_ALT_KEY
    || (key & K_CTRL_KEY) == K_CTRL_KEY
    || (key & K_SHIFT_KEY) == K_SHIFT_KEY)
        return false;

To be honest, I do not understand that, it rejects the keys with CTRL/ALT/SHIFT ?

ismail-yilmaz commented 3 years ago

To be honest, I do not understand that, it rejects the keys with CTRL/ALT/SHIFT ?

No, that simply rejects ctrl/shift/alt keys as keys and not as modifiers. Combinations are represented with K_ALT/K_SHIFT/K_CTRL enumerators. ) That is not the problem, that's for sure.

However, I'll look into the issue tonight (as I don't have access to my win7 and win 10 machines right now.) I'll hopefully fix that issue within a couple of days. Sorry for the inconvenience.

chivstyle commented 3 years ago

That's great!

ismail-yilmaz commented 3 years ago

@chivstyle

I stand corrected. And I learned another lesson to be not sure about anything. Well, I can reproduce the problem, now that's for sure. :) While my statement is partly right the actual implementation wasn't. I should have been more careful.

Can you just replace the block:

if((key & K_ALT_KEY) == K_ALT_KEY || (key & K_CTRL_KEY) == K_CTRL_KEY || (key & K_SHIFT_KEY) == K_SHIFT_KEY) return false;

with:

if(findarg(key, K_CTRL_KEY, K_ALT_KEY, K_SHIFT_KEY) >= 0) return false;

and confirm the result?

This should hopefully fix it.

chivstyle commented 3 years ago

👍 ,it worked. The U++'s abstraction of keyboard event seems to be a little complicated.

Thanks very much.

ismail-yilmaz commented 3 years ago

Thank you for reporting the issue. Fix applied: fd9bbfd69432b0faeb643dd05c1c182286487e2f