Re: [gtkmm] Key press events not captured for some keys
- From: Bevis Peters <bevis anvil com>
- To: Ramachandra Putti <ramachandrap dpsl net>
- Cc: gtkmm-list gnome org, Manjit D <manjitd enigma gnome org>
- Subject: Re: [gtkmm] Key press events not captured for some keys
- Date: Thu, 29 Jan 2004 09:46:50 +0000
I've come across this bug.
I got round it by using the release event, but I'll try that
connect_notify() and see what happens.
bevis
I am using "on_key_press(GdkEvent *key)" method to get the values of key
pressed, what i found was that for keys like "Enter", "Space Bar" and
all
arrow keys, no event key_press is generated.
I wrote on_key_release_event(GdkEvent *key), the same keys "Enter",
"Space bar" and all arrow keys. It generates the release event only.
i.e. no key
press event is generated, but the release event is fired.
I also noticed that for system reserved keys in KDE, like ALT-F1 for
Run command, CTRL-f2 is for desktop 2, when I pressed these keys, the
system executes them for its use before I can capture it.
So my query is,
1. What is the code for capturing key press events ?
2. How to catch the system reserved keys before their execution by the
system ?
Below is Code snippet for you to try out what I have stated above,
Any help would be great appreciated,
Regards,
Ramachandra
#include <stdio.h>
#include <gdkmm/gc.h>
#include <gdk/gdkkeysyms.h>
#include <gtkmm/window.h>
#include <gtkmm/main.h>
class CWindow: public Gtk::Window
{
public:
CWindow();
~CWindow();
bool on_window1_key_press_event(GdkEventKey *Key);
bool on_window1_key_release_event(GdkEventKey *Key);
};
CWindow::CWindow(): Gtk::Window(Gtk::WINDOW_TOPLEVEL)
{
Gtk::Window *window1 = this;
window1->set_title("window1");
window1->set_modal(false);
window1->set_position(Gtk::WIN_POS_NONE);
window1->show();
window1->signal_key_press_event().connect(SigC::slot(*this,&CWindow::on_window1_key_press_event));
window1->signal_key_release_event().connect(SigC::slot(*this,&CWindow::on_window1_key_release_event));
}
CWindow::~CWindow()
{
}
bool CWindow::on_window1_key_press_event(GdkEventKey *Key)
{
printf("\n Key Presssed is %s\n",gdk_keyval_name(Key->keyval));
return true;
}
bool CWindow::on_window1_key_release_event(GdkEventKey *Key)
{
printf("\n Key Released is %s \n",gdk_keyval_name(Key->keyval));
return true;
}
int main(int argc, char **argv)
{
Gtk::Main m(argc, argv);
CWindow *ptrWindow = new class CWindow();
m.run(*ptrWindow);
delete ptrWindow;
ptrWindow = 0;
return 0;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]