Name : Code::Blocks
Version : 20.03-r11983
SDK Version : 2.0.0
Scintilla Version: 3.7.5
Author : The Code::Blocks Team
E-mail : info@codeblocks.org
Website : http://www.codeblocks.org
wxWidgets Library (wxGTK port)
Version 3.0.4 (Unicode: wchar_t, debug level: 1),
Runtime version of toolkit used is 2.24.
Compile-time GTK+ version is 2.24.32.
Yes, keybinder plugin wasn't even installed when i discovered this problem.
I selected some text but CTRL-U, and CTRL-SHIFT-U doesn't do anything.
I even dont know what are tease for, also couldn't find them in keybind config.
locale -a:
C
C.UTF-8
en_AG
en_AG.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IL
en_IL.utf8
en_IN
en_IN.utf8
en_NG
en_NG.utf8
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US.utf8
en_ZA.utf8
en_ZM
en_ZM.utf8
en_ZW.utf8
POSIX
sr_ME
sr_ME.utf8
sr_RS
sr_RS@latin
sr_RS.utf8
sr_RS.utf8@latin
setxkbmap -query:
rules: evdev
model: pc105
layout: rs,us,rs
variant: ,,latin
options: grp:shift_caps_toggle,grp:alt_shift_toggle
Hey thanks again for quick reply,
Yes in settings textboxes everything works properly, only in editor does not.
Also are you able to build the software manually.
I'm not sure what you mean, you want me to try to build CB from source on my machine or?
locale:
LANG=sr_RS
LANGUAGE=sr_RS
LC_CTYPE="sr_RS"
LC_NUMERIC=sr_RS
LC_TIME=sr_RS
LC_COLLATE="sr_RS"
LC_MONETARY=sr_RS
LC_MESSAGES="sr_RS"
LC_PAPER=sr_RS
LC_NAME=sr_RS
LC_ADDRESS=sr_RS
LC_TELEPHONE=sr_RS
LC_MEASUREMENT=sr_RS
LC_IDENTIFICATION=sr_RS
LC_ALL=
Ok, thanks, i changed the locale to UTF8, thankfully i didn't use non ANCII chars in beetween.
Anyway I compiled wxWidgets from git, and stc sample works correctly, i can copy paste etc. there.
After that i built CB from SVN and i still have the problem, but another thing is i ran CB from terminal and it keep printing this message:
The Parser is still parsing files. > Reasons:
- still need to mark files as local
I get the same message on an overlay in editor while i type, dont know if its related.
Ok, i recomplited it with 4 printfs, it looks to me like the function registers keystrokes corrently, but still nothing happens on screen.
For example this is what i get with CTRL-A:
1. KEY: 308 CTRL: 1
2. KEY: 308 CTRL: 1
4. KEY: 0 CTRL: 1 RV: 0
1. KEY: 1729 CTRL: 1
2. KEY: 1729 CTRL: 1
4. KEY: 1729 CTRL: 1 RV: 0
I used ENG keyboard.
I use mostly pure C and ASM, I'm not very good with Cpp so I don't fully understand what happens in int rv = KeyDownWithModifiers,
but to me it looks like when I press just CTRL i get 308, and A seems to be 1729,
I thought these are keycodes so they don't have to match actual ASCII char values, no?
And in that case shouldn't 65 / 'A' be CTRL-SHIFT-A ?
I used SVN instead of git because I had the files already, hope that's ok.
Index: ScintillaWX.cpp
===================================================================
--- ScintillaWX.cpp (revision 12064)
+++ ScintillaWX.cpp (working copy)
@@ -1162,8 +1162,12 @@
const int WXK_NONE = 0;
#endif // wxCHECK_VERSION
/* C::B end */
+
+ printf("1. KEY: %d CTRL: %d \n",key,ctrl);
if (ctrl && key >= 1 && key <= 26 && key != WXK_BACK)
key += 'A' - 1;
+
+ printf("2. KEY: %d CTRL: %d \n",key,ctrl);
switch (key) {
case WXK_DOWN: key = SCK_DOWN; break;
@@ -1202,6 +1206,8 @@
case WXK_SHIFT: key = 0; break;
case WXK_MENU: key = SCK_MENU; break;
case WXK_NONE:
+
+ printf("3. KEY: %d CTRL: %d \n",key,ctrl);
#ifdef __WXGTK20__
if (ctrl)
{
@@ -1268,7 +1274,7 @@
),
consumed
);
-
+ printf("4. KEY: %d CTRL: %d RV: %d \n",key,ctrl,rv);
if (key)
return rv;
else
This is the log from pressing ctrl-shift-a on my machine.
1. KEY: 308 CTRL: 1
2. KEY: 308 CTRL: 1
4. KEY: 0 CTRL: 1 RV: 0
1. KEY: 306 CTRL: 1
2. KEY: 306 CTRL: 1
4. KEY: 0 CTRL: 1 RV: 0
1. KEY: 65 CTRL: 1
2. KEY: 65 CTRL: 1
4. KEY: 65 CTRL: 1 RV: 0
And this is ctrl-a
1. KEY: 308 CTRL: 1
2. KEY: 308 CTRL: 1
4. KEY: 0 CTRL: 1 RV: 0
1. KEY: 65 CTRL: 1
2. KEY: 65 CTRL: 1
4. KEY: 65 CTRL: 1 RV: 0
This is the output of ctrl-a when I switch to bulgarian layout:
1. KEY: 308 CTRL: 1
2. KEY: 308 CTRL: 1
4. KEY: 0 CTRL: 1 RV: 0
1. KEY: 0 CTRL: 1
2. KEY: 0 CTRL: 1
3. KEY: 0 CTRL: 1
4. KEY: 65 CTRL: 1 RV: 0
Can you apply the same patch to wx's stc and print the output?
Haha, ok i found out where the problem is. I have 3 keyboard layouts ENG, SER latin and SER cyrilic.
Now I was sure i tested all 3, but now when i tried again with the cyrilic layout it works !
This is the output.
1. KEY: 308 CTRL: 1
2. KEY: 308 CTRL: 1
4. KEY: 0 CTRL: 1 RV: 0
1. KEY: 0 CTRL: 1
2. KEY: 0 CTRL: 1
3. KEY: 0 CTRL: 1
4. KEY: 65 CTRL: 1 RV: 0
The problem is i use mostly ENG keyboard layout especially in CB. From what i see the code to convert the keycode to ASCII only runs in case WXK_NONE: (when the key is 0).
So on my machine it never enters that part of the code, beacuse i get 1729 for A on ENG layout.
I'll try to reset keyboard layout settings to see if that will fix the problem
Ok, i compiled wxWidgets again, its code is a little different it doesn't have ctrl variable,
i added the same prinfts except ctrl var, and i got the same numbers,
A is 1792 on ENG layout when Serbian is on top of it in the settings, but everything works unlike in CB.
1. KEY: 308
2. KEY: 308
4. KEY: 0 RV: 0
1. KEY: 1729
2. KEY: 1729
4. KEY: 1729 RV: 0
It doesn't make sense why would position in the layout list change anything other but the actual position?
So I think this is mostly bug in the OS, but because CB handles ctrl differently it shows up only in there.
p.s i just saw that we are actually neighbors, haha