क्या कोई नीचे दिए गए छोटे नमूना कोड को संकलित और निष्पादित कर सकता है? यदि शिफ्ट कुंजी संशोधक आपके लिए ठीक से काम करता है तो कृपया मुझे बताएं। यह उदाहरण gtk में कुंजी प्रेस कार्यक्षमता का प्रदर्शन करने के लिए लगता है। यह सरल कुंजी प्रेस के लिए ठीक काम करता है और यहां तक कि नियंत्रण कुंजी संशोधक के साथ भी काम करता है, लेकिन यह शिफ्ट कुंजी संशोधक के साथ काम नहीं करता है।सरल gtk कुंजी प्रेस इवेंट उदाहरण में, GDK_SHIFT_MASK को अनदेखा किया जाता है
/*
*
* compile command:
*
* gcc keypress3.c -o keypress3 `pkg-config --libs --cflags gtk+-2.0`
*
*/
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
gboolean
on_key_press (GtkWidget *widget, GdkEventKey *event, gpointer user_data);
int main (int argc, char *argv[])
{
GtkWidget *window;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (gtk_main_quit), NULL);
g_signal_connect (G_OBJECT (window), "key_press_event", G_CALLBACK (on_key_press), NULL);
gtk_widget_show_all (window);
gtk_main();
return 0;
}
gboolean
on_key_press (GtkWidget *widget, GdkEventKey *event, gpointer user_data)
{
switch (event->keyval)
{
case GDK_p:
printf("key pressed: %s\n", "p");
break;
case GDK_s:
if (event->state & GDK_SHIFT_MASK)
{
printf("key pressed: %s\n", "shift + s");
}
else if (event->state & GDK_CONTROL_MASK)
{
printf("key pressed: %s\n", "ctrl + s");
}
else
{
printf("key pressed: %s\n", "s");
}
break;
case GDK_m:
if (event->state & GDK_SHIFT_MASK)
{
printf("key pressed: %s\n", "shift + m");
}
else if (event->state & GDK_CONTROL_MASK)
{
printf("key pressed: %s\n", "ctrl + m");
}
else
{
printf("key pressed: %s\n", "m");
}
break;
default:
return FALSE;
}
return FALSE;
}
उत्पादन मैं हो रही है:
key pressed: m
key pressed: ctrl + m
key pressed: p
key pressed: ctrl + s
key pressed: s
जब मैं Shift + या + m शिफ्ट मैं कुछ भी नहीं मिलता है, तो ऐसा लगता है कि मैं काफी हो रही है नहीं कर रहा हूँ कैसे GDK_SHIFT_MASK भी इस्तेमाल किया जाना चाहिए हालांकि मैंने प्रलेखन पढ़ा है और मैंने कई अन्य उदाहरण देखे हैं जहां यह बिल्कुल उसी तरह उपयोग किया जाता है।
आपको उस इनपुट के लिए आउटपुट मिल रहा है, बिल्कुल? – ptomato
@ptomato आउटपुट इनपुट का बिल्कुल वर्णन करता है। – nomadicME