Lines Matching refs:kbd

58 #include <dev/kbd/kbdreg.h>
66 #include <dev/kbd/kbdtables.h>
139 keyboard_t *kbd; /* keyboard */
224 keyboard_t *kbd = (keyboard_t *) xkbd;
225 kbdmux_state_t *state = (kbdmux_state_t *) kbd->kb_data;
227 kbdd_intr(kbd, NULL);
268 kbdmux_kbd_event(keyboard_t *kbd, int event, void *arg)
288 while (kbdd_check_char(kbd)) {
289 c = kbdd_read_char(kbd, 0);
294 if (!KBD_IS_BUSY(kbd))
314 if (k->kbd == kbd)
318 kbd_release(k->kbd, &k->kbd);
321 k->kbd = NULL;
416 keyboard_t *kbd = NULL;
428 *kbdp = kbd = malloc(sizeof(*kbd), M_KBDMUX, M_NOWAIT | M_ZERO);
436 if ((kbd == NULL) || (state == NULL) || (keymap == NULL) ||
443 TASK_INIT(&state->ks_task, 0, kbdmux_kbd_intr, (void *) kbd);
449 kbd = *kbdp;
450 state = (kbdmux_state_t *) kbd->kb_data;
451 keymap = kbd->kb_keymap;
452 accmap = kbd->kb_accentmap;
453 fkeymap = kbd->kb_fkeytab;
454 fkeymap_size = kbd->kb_fkeytab_size;
458 if (!KBD_IS_PROBED(kbd)) {
460 kbd_init_struct(kbd, KEYBOARD_NAME, KB_101, unit, flags, 0, 0);
465 kbd_set_maps(kbd, keymap, accmap, fkeymap, fkeymap_size);
466 kbd->kb_data = (void *)state;
468 KBD_FOUND_DEVICE(kbd);
469 KBD_PROBE_DONE(kbd);
477 if (!KBD_IS_INITIALIZED(kbd) && !(flags & KB_CONF_PROBE_ONLY)) {
478 kbd->kb_config = flags & ~KB_CONF_PROBE_ONLY;
480 kbdmux_ioctl(kbd, KDSETLED, (caddr_t)&state->ks_state);
482 delay[0] = kbd->kb_delay1;
483 delay[1] = kbd->kb_delay2;
484 kbdmux_ioctl(kbd, KDSETREPEAT, (caddr_t)delay);
493 evdev_set_methods(evdev, kbd, &kbdmux_evdev_methods);
510 KBD_INIT_DONE(kbd);
513 if (!KBD_IS_CONFIGURED(kbd)) {
514 if (kbd_register(kbd) < 0) {
519 KBD_CONFIG_DONE(kbd);
537 if (kbd != NULL) {
538 free(kbd, M_KBDMUX);
550 kbdmux_term(keyboard_t *kbd)
552 kbdmux_state_t *state = (kbdmux_state_t *) kbd->kb_data;
566 kbd_release(k->kbd, &k->kbd);
569 k->kbd = NULL;
576 kbd_unregister(kbd);
586 free(kbd->kb_keymap, M_KBDMUX);
587 free(kbd->kb_accentmap, M_KBDMUX);
588 free(kbd->kb_fkeytab, M_KBDMUX);
589 free(kbd, M_KBDMUX);
598 kbdmux_intr(keyboard_t *kbd, void *arg)
602 if (KBD_IS_ACTIVE(kbd) && KBD_IS_BUSY(kbd)) {
604 (*kbd->kb_callback.kc_func)(kbd, KBDIO_KEYINPUT,
605 kbd->kb_callback.kc_arg);
609 c = kbdmux_read_char(kbd, FALSE);
620 kbdmux_test_if(keyboard_t *kbd)
630 kbdmux_enable(keyboard_t *kbd)
632 KBD_ACTIVATE(kbd);
640 kbdmux_disable(keyboard_t *kbd)
642 KBD_DEACTIVATE(kbd);
650 kbdmux_read(keyboard_t *kbd, int wait)
652 kbdmux_state_t *state = (kbdmux_state_t *) kbd->kb_data;
660 kbd->kb_count ++;
662 return (KBD_IS_ACTIVE(kbd)? c : -1);
669 kbdmux_check(keyboard_t *kbd)
671 kbdmux_state_t *state = (kbdmux_state_t *) kbd->kb_data;
674 if (!KBD_IS_ACTIVE(kbd))
688 kbdmux_read_char(keyboard_t *kbd, int wait)
690 kbdmux_state_t *state = (kbdmux_state_t *) kbd->kb_data;
720 while (kbdd_check_char(k->kbd)) {
721 scancode = kbdd_read_char(k->kbd, 0);
726 if (!KBD_IS_BUSY(k->kbd))
742 kbd->kb_count ++;
961 action = genkbd_keyaction(kbd, keycode, scancode & 0x80,
975 kbdmux_check_char(keyboard_t *kbd)
977 kbdmux_state_t *state = (kbdmux_state_t *) kbd->kb_data;
980 if (!KBD_IS_ACTIVE(kbd))
999 kbdmux_ioctl(keyboard_t *kbd, u_long cmd, caddr_t arg)
1012 kbdmux_state_t *state = (kbdmux_state_t *) kbd->kb_data;
1034 if (k->kbd->kb_unit == ki->kb_unit &&
1035 strcmp(k->kbd->kb_name, ki->kb_name) == 0)
1051 k->kbd = kbd_get_keyboard(
1055 (void *) &k->kbd,
1057 if (k->kbd == NULL) {
1064 kbdd_enable(k->kbd);
1065 kbdd_clear_state(k->kbd);
1069 error = kbdd_ioctl(k->kbd, KDSKBMODE, (caddr_t)&mode);
1073 error = kbdd_ioctl(k->kbd, KDSKBSTATE, (caddr_t)&mode);
1079 kbd_release(k->kbd, &k->kbd);
1080 k->kbd = NULL;
1102 if (k->kbd->kb_unit == ki->kb_unit &&
1103 strcmp(k->kbd->kb_name, ki->kb_name) == 0)
1107 error = kbd_release(k->kbd, &k->kbd);
1111 k->kbd = NULL;
1141 state->ks_state |= KBD_LED_VAL(kbd);
1163 *(int *)arg = KBD_LED_VAL(kbd);
1183 KBD_LED_VAL(kbd) = *(int *)arg;
1191 (void)kbdd_ioctl(k->kbd, KDSETLED, arg);
1222 (void)kbdd_ioctl(k->kbd, KDSKBSTATE, arg);
1226 return (kbdmux_ioctl(kbd, KDSETLED, arg));
1263 kbd->kb_delay1 = delays[(mode >> 5) & 3];
1264 kbd->kb_delay2 = rates[mode & 0x1f];
1268 evdev_push_repeats(state->ks_evdev, kbd);
1272 (void)kbdd_ioctl(k->kbd, cmd, arg);
1286 (void)kbdd_ioctl(k->kbd, cmd, arg);
1292 error = genkbd_commonioctl(kbd, cmd, arg);
1303 kbdmux_lock(keyboard_t *kbd, int lock)
1326 kbdmux_clear_state(keyboard_t *kbd)
1328 kbdmux_state_t *state = (kbdmux_state_t *) kbd->kb_data;
1339 kbdmux_get_state(keyboard_t *kbd, void *buf, size_t len)
1346 bcopy(kbd->kb_data, buf, sizeof(kbdmux_state_t)); /* XXX locking? */
1355 kbdmux_set_state(keyboard_t *kbd, void *buf, size_t len)
1360 bcopy(buf, kbd->kb_data, sizeof(kbdmux_state_t)); /* XXX locking? */
1369 kbdmux_poll(keyboard_t *kbd, int on)
1371 kbdmux_state_t *state = (kbdmux_state_t *) kbd->kb_data;
1383 kbdd_poll(k->kbd, on);
1402 keyboard_t *kbd;
1416 kbd = NULL;
1419 (error = (*sw->init)(0, &kbd, NULL, 0)) != 0) {
1425 if ((error = kbd_attach(kbd)) != 0) {
1426 (*sw->term)(kbd);
1432 if ((error = (*sw->enable)(kbd)) != 0) {
1433 (*sw->disable)(kbd);
1435 kbd_detach(kbd);
1437 (*sw->term)(kbd);
1447 kbd = kbd_get_keyboard(kbd_find_keyboard(KEYBOARD_NAME, 0));
1448 if (kbd != NULL) {
1449 (*sw->disable)(kbd);
1451 kbd_detach(kbd);
1453 (*sw->term)(kbd);