layouts.c
- From: "linux user" <sudebian gmail com>
- To: gtk-list gnome org
- Subject: layouts.c
- Date: Wed, 28 Nov 2007 18:57:42 +0100
#include <stdio.h>
#include <stdlib.h>
#include <gtk/gtk.h>
/*
* I suspect that the problem involved in this program could be solved using
* Xlib and/or Gdk libraries.
*
* But... I can't identify the functions as well: (I only find tutorials for
* creating new layouts, assigning new values on keys,...)
*
* Please, help me in any way. Thanks a lot!.
*/
GtkWidget *pLayout;
GtkWidget *pVariant;
void change_keyboard ()
{
/*
* Routine for applying the keyboard layout.
*
* Just the same as $ setxkbmap -layout xx -variant xxxx
* in Bash Console.
*
*/
}
void search_variants ()
{
/*
* Once Layout selected,
*
* (1) search the *available* variants (if so...)
*
* (2) elaborate the pVariant ComboBox List (append text...).
*
*/
gtk_combo_box_append_text (GTK_COMBO_BOX(pVariant), "Layout Variant");
}
void search_layouts()
{
/*
* Having the same keyboard characteristics as defined in
/etc/X11/xorg.conf, mainly:
*
* Section "Input Device"
* ....
* Option "XkbRules" "xorg"
* Option "XkbModel" "pc105"
* EndSection
*
* Getting a list of keyboard layouts as:
*
* Andorra
* Afghanistan
* Arabic
* Albania
* Armenia
* Azerbaijan
* Belarus
* ....
*
* For that, must I process /usr/share/X11/xkb/rules/xorg.lst directly or coud
* I use a more suitable function ? (Also for correspondences between
developped
* and abreviated forms -like Andorra and ad, Afghanistan and af,...).
*
* After all, finally, elaborate the pLayout ComboBox List (append text...).
*
*/
gtk_combo_box_append_text (GTK_COMBO_BOX(pLayout), "Keyboard Layout");
}
int main (int argc, char **argv)
{
GtkWidget *pWindow;
GtkWidget *pHBox;
GtkWidget *pApply;
gtk_init (&argc, &argv);
pWindow = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_container_set_border_width (GTK_CONTAINER (pWindow), 5);
g_signal_connect (G_OBJECT(pWindow),"delete-event",
G_CALLBACK(gtk_main_quit),0);
pHBox = gtk_hbox_new (FALSE, 10);
pLayout = gtk_combo_box_new_text ();
search_layouts();
gtk_combo_box_set_active (GTK_COMBO_BOX(pLayout), 0);
g_signal_connect (G_OBJECT(pLayout), "changed",
G_CALLBACK(search_variants), 0);
pVariant = gtk_combo_box_new_text ();
search_variants();
gtk_combo_box_set_active (GTK_COMBO_BOX(pVariant), 0);
pApply = gtk_button_new_with_label ("< Apply >");
g_signal_connect (G_OBJECT(pApply), "clicked",
G_CALLBACK(change_keyboard), 0);
gtk_box_pack_start (GTK_BOX (pHBox), pLayout, TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (pHBox), pVariant, TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (pHBox), pApply, TRUE, TRUE, 0);
gtk_container_add (GTK_CONTAINER(pWindow), pHBox);
gtk_widget_show_all(pWindow);
gtk_main();
return 0;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]