diff options
Diffstat (limited to 'xorg-server/config/wscons.c')
-rw-r--r-- | xorg-server/config/wscons.c | 334 |
1 files changed, 163 insertions, 171 deletions
diff --git a/xorg-server/config/wscons.c b/xorg-server/config/wscons.c index 27c1f6348..7a5e8cc10 100644 --- a/xorg-server/config/wscons.c +++ b/xorg-server/config/wscons.c @@ -50,219 +50,211 @@ { KB_CF, "ca" } struct nameint { - int val; - char *name; -} kbdenc[] = { KB_OVRENC, KB_ENCTAB, { 0 } }; + int val; + char *name; +} kbdenc[] = { + KB_OVRENC, KB_ENCTAB, { +0}}; struct nameint kbdvar[] = { - { KB_NODEAD | KB_SG, "de_nodeadkeys" }, - { KB_NODEAD | KB_SF, "fr_nodeadkeys" }, - { KB_SF, "fr" }, - { KB_DVORAK | KB_CF, "fr-dvorak" }, - { KB_DVORAK | KB_FR, "bepo" }, - { KB_DVORAK, "dvorak" }, - { KB_CF, "fr-legacy" }, - { KB_NODEAD, "nodeadkeys" }, - { 0 } + {KB_NODEAD | KB_SG, "de_nodeadkeys"}, + {KB_NODEAD | KB_SF, "fr_nodeadkeys"}, + {KB_SF, "fr"}, + {KB_DVORAK | KB_CF, "fr-dvorak"}, + {KB_DVORAK | KB_FR, "bepo"}, + {KB_DVORAK, "dvorak"}, + {KB_CF, "fr-legacy"}, + {KB_NODEAD, "nodeadkeys"}, + {0} }; struct nameint kbdopt[] = { - { KB_SWAPCTRLCAPS, "ctrl:swapcaps" }, - { 0 } + {KB_SWAPCTRLCAPS, "ctrl:swapcaps"}, + {0} }; struct nameint kbdmodel[] = { - { WSKBD_TYPE_ZAURUS, "zaurus" }, - { 0 } + {WSKBD_TYPE_ZAURUS, "zaurus"}, + {0} }; static void wscons_add_keyboard(void) { - InputAttributes attrs = {}; - DeviceIntPtr dev = NULL; - InputOption *input_options = NULL; - char *config_info = NULL; - int fd, i, rc; - unsigned int type; - kbd_t wsenc = 0; + InputAttributes attrs = { }; + DeviceIntPtr dev = NULL; + InputOption *input_options = NULL; + char *config_info = NULL; + int fd, i, rc; + unsigned int type; + kbd_t wsenc = 0; - /* Find keyboard configuration */ - fd = open(WSCONS_KBD_DEVICE, O_RDWR | O_NONBLOCK | O_EXCL); - if (fd == -1) { - LogMessage(X_ERROR, "wskbd: open %s: %s\n", - WSCONS_KBD_DEVICE, strerror(errno)); - return; - } - if (ioctl(fd, WSKBDIO_GETENCODING, &wsenc) == -1) { - LogMessage(X_WARNING, "wskbd: ioctl(WSKBDIO_GETENCODING) " - "failed: %s\n", strerror(errno)); - close(fd); - return; - } - if (ioctl(fd, WSKBDIO_GTYPE, &type) == -1) { - LogMessage(X_WARNING, "wskbd: ioctl(WSKBDIO_GTYPE) " - "failed: %s\n", strerror(errno)); - close(fd); - return; - } - close (fd); + /* Find keyboard configuration */ + fd = open(WSCONS_KBD_DEVICE, O_RDWR | O_NONBLOCK | O_EXCL); + if (fd == -1) { + LogMessage(X_ERROR, "wskbd: open %s: %s\n", + WSCONS_KBD_DEVICE, strerror(errno)); + return; + } + if (ioctl(fd, WSKBDIO_GETENCODING, &wsenc) == -1) { + LogMessage(X_WARNING, "wskbd: ioctl(WSKBDIO_GETENCODING) " + "failed: %s\n", strerror(errno)); + close(fd); + return; + } + if (ioctl(fd, WSKBDIO_GTYPE, &type) == -1) { + LogMessage(X_WARNING, "wskbd: ioctl(WSKBDIO_GTYPE) " + "failed: %s\n", strerror(errno)); + close(fd); + return; + } + close(fd); - input_options = input_option_new(input_options, "_source", - "server/wscons"); - if (input_options == NULL) - return; + input_options = input_option_new(input_options, "_source", "server/wscons"); + if (input_options == NULL) + return; - LogMessage(X_INFO, "config/wscons: checking input device %s\n", - WSCONS_KBD_DEVICE); - input_options = input_option_new(input_options, "name", - WSCONS_KBD_DEVICE); - input_options = input_option_new(input_options, "driver", "kbd"); + LogMessage(X_INFO, "config/wscons: checking input device %s\n", + WSCONS_KBD_DEVICE); + input_options = input_option_new(input_options, "name", WSCONS_KBD_DEVICE); + input_options = input_option_new(input_options, "driver", "kbd"); - config_info = Xprintf("wscons:%s", WSCONS_KBD_DEVICE); - if (!config_info) - goto unwind; - if (KB_ENCODING(wsenc) == KB_USER) { - /* Ignore wscons "user" layout */ - LogMessageVerb(X_INFO, 3, "wskbd: ignoring \"user\" layout\n"); - goto kbd_config_done; - } - for (i = 0; kbdenc[i].val; i++) - if(KB_ENCODING(wsenc) == kbdenc[i].val) { - LogMessageVerb(X_INFO, 3, "wskbd: using layout %s\n", - kbdenc[i].name); - input_options = input_option_new(input_options, - "xkb_layout", kbdenc[i].name); - break; - } - for (i = 0; kbdvar[i].val; i++) - if (wsenc == kbdvar[i].val || - KB_VARIANT(wsenc) == kbdvar[i].val) { - LogMessageVerb(X_INFO, 3, "wskbd: using variant %s\n", - kbdvar[i].name); - input_options = input_option_new(input_options, - "xkb_variant", kbdvar[i].name); - break; - } - for (i = 0; kbdopt[i].val; i++) - if (KB_VARIANT(wsenc) == kbdopt[i].val) { - LogMessageVerb(X_INFO, 3, "wskbd: using option %s\n", - kbdopt[i].name); - input_options = input_option_new(input_options, - "xkb_options", kbdopt[i].name); - break; - } - for (i = 0; kbdmodel[i].val; i++) - if (type == kbdmodel[i].val) { - LogMessageVerb(X_INFO, 3, "wskbd: using model %s\n", - kbdmodel[i].name); - input_options = input_option_new(input_options, - "xkb_model", kbdmodel[i].name); - break; - } + config_info = Xprintf("wscons:%s", WSCONS_KBD_DEVICE); + if (!config_info) + goto unwind; + if (KB_ENCODING(wsenc) == KB_USER) { + /* Ignore wscons "user" layout */ + LogMessageVerb(X_INFO, 3, "wskbd: ignoring \"user\" layout\n"); + goto kbd_config_done; + } + for (i = 0; kbdenc[i].val; i++) + if (KB_ENCODING(wsenc) == kbdenc[i].val) { + LogMessageVerb(X_INFO, 3, "wskbd: using layout %s\n", + kbdenc[i].name); + input_options = input_option_new(input_options, + "xkb_layout", kbdenc[i].name); + break; + } + for (i = 0; kbdvar[i].val; i++) + if (wsenc == kbdvar[i].val || KB_VARIANT(wsenc) == kbdvar[i].val) { + LogMessageVerb(X_INFO, 3, "wskbd: using variant %s\n", + kbdvar[i].name); + input_options = input_option_new(input_options, + "xkb_variant", kbdvar[i].name); + break; + } + for (i = 0; kbdopt[i].val; i++) + if (KB_VARIANT(wsenc) == kbdopt[i].val) { + LogMessageVerb(X_INFO, 3, "wskbd: using option %s\n", + kbdopt[i].name); + input_options = input_option_new(input_options, + "xkb_options", kbdopt[i].name); + break; + } + for (i = 0; kbdmodel[i].val; i++) + if (type == kbdmodel[i].val) { + LogMessageVerb(X_INFO, 3, "wskbd: using model %s\n", + kbdmodel[i].name); + input_options = input_option_new(input_options, + "xkb_model", kbdmodel[i].name); + break; + } -kbd_config_done: - attrs.flags |= ATTR_KEYBOARD; - rc = NewInputDeviceRequest(input_options, &attrs, &dev); - if (rc != Success) - goto unwind; + kbd_config_done: + attrs.flags |= ATTR_KEYBOARD; + rc = NewInputDeviceRequest(input_options, &attrs, &dev); + if (rc != Success) + goto unwind; - for (; dev; dev = dev->next) { - free(dev->config_info); - dev->config_info = strdup(config_info); - } -unwind: - input_option_free_list(&input_options); + for (; dev; dev = dev->next) { + free(dev->config_info); + dev->config_info = strdup(config_info); + } + unwind: + input_option_free_list(&input_options); } static void wscons_add_pointer(const char *path, const char *driver, int flags) { - InputAttributes attrs = {}; - DeviceIntPtr dev = NULL; - InputOption *input_options = NULL; - char *config_info = NULL; - int rc; + InputAttributes attrs = { }; + DeviceIntPtr dev = NULL; + InputOption *input_options = NULL; + char *config_info = NULL; + int rc; - config_info = Xprintf("wscons:%s", path); - if (!config_info) - return; + config_info = Xprintf("wscons:%s", path); + if (!config_info) + return; - input_options = input_option_new(input_options, "_source", - "server/wscons"); - if (input_options == NULL) - return; + input_options = input_option_new(input_options, "_source", "server/wscons"); + if (input_options == NULL) + return; - input_options = input_option_new(input_options, "name", - strdup(path)); - input_options = input_option_new(input_options, "driver", - strdup(driver)); - input_options = input_option_new(input_options, "device", - strdup(path)); - LogMessage(X_INFO, "config/wscons: checking input device %s\n", path); - attrs.flags |= flags; - rc = NewInputDeviceRequest(input_options, &attrs, &dev); - if (rc != Success) - goto unwind; + input_options = input_option_new(input_options, "name", strdup(path)); + input_options = input_option_new(input_options, "driver", strdup(driver)); + input_options = input_option_new(input_options, "device", strdup(path)); + LogMessage(X_INFO, "config/wscons: checking input device %s\n", path); + attrs.flags |= flags; + rc = NewInputDeviceRequest(input_options, &attrs, &dev); + if (rc != Success) + goto unwind; - for (; dev; dev = dev->next) { - free(dev->config_info); - dev->config_info = strdup(config_info); - } -unwind: - input_option_free_list(&input_options); + for (; dev; dev = dev->next) { + free(dev->config_info); + dev->config_info = strdup(config_info); + } + unwind: + input_option_free_list(&input_options); } static void wscons_add_pointers(void) { - char devname[256]; - int fd, i, wsmouse_type; + char devname[256]; + int fd, i, wsmouse_type; - /* Check pointing devices */ - for (i = 0; i < 4; i++) { - snprintf(devname, sizeof(devname), "%s%d", - WSCONS_MOUSE_PREFIX, i); - LogMessageVerb(X_INFO, 10, "wsmouse: checking %s\n", devname); - fd = open_device(devnamem O_RDWR | O_NONBLOCK | O_EXCL); - if (fd == -1) { - LogMessageVerb(X_WARNING, 10, "%s: %s\n", devname, - strerror(errno)); - continue; - } - if (ioctl(fd, WSMOUSEIO_GTYPE, &wsmouse_type) != 0) { - LogMessageVerb(X_WARNING, 10, - "%s: WSMOUSEIO_GTYPE failed\n", devname); - close(fd); - continue; - } - close(fd); - switch (wsmouse_type) { - case WSMOUSE_TYPE_SYNAPTICS: - wscons_add_pointer(devname, "synaptics", - ATTR_TOUCHPAD); - break; - case WSMOUSE_TYPE_TPANEL: - wscons_add_pointer(devname, "ws", ATTR_TOUCHSCREEN); - break; - default: - break; - } - } - /* Add a default entry catching all other mux elements as "mouse" */ - wscons_add_pointer(WSCONS_MOUSE_PREFIX, "mouse", ATTR_POINTER); + /* Check pointing devices */ + for (i = 0; i < 4; i++) { + snprintf(devname, sizeof(devname), "%s%d", WSCONS_MOUSE_PREFIX, i); + LogMessageVerb(X_INFO, 10, "wsmouse: checking %s\n", devname); + fd = open_device(devnamem O_RDWR | O_NONBLOCK | O_EXCL); + if (fd == -1) { + LogMessageVerb(X_WARNING, 10, "%s: %s\n", devname, strerror(errno)); + continue; + } + if (ioctl(fd, WSMOUSEIO_GTYPE, &wsmouse_type) != 0) { + LogMessageVerb(X_WARNING, 10, + "%s: WSMOUSEIO_GTYPE failed\n", devname); + close(fd); + continue; + } + close(fd); + switch (wsmouse_type) { + case WSMOUSE_TYPE_SYNAPTICS: + wscons_add_pointer(devname, "synaptics", ATTR_TOUCHPAD); + break; + case WSMOUSE_TYPE_TPANEL: + wscons_add_pointer(devname, "ws", ATTR_TOUCHSCREEN); + break; + default: + break; + } + } + /* Add a default entry catching all other mux elements as "mouse" */ + wscons_add_pointer(WSCONS_MOUSE_PREFIX, "mouse", ATTR_POINTER); } int config_wscons_init(void) { - wscons_add_keyboard(); - wscons_add_pointers(); - return 1; + wscons_add_keyboard(); + wscons_add_pointers(); + return 1; } void config_wscons_fini(void) { - /* Not much to do ? */ + /* Not much to do ? */ } |