• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/sys/dev/kbdmux/

Lines Matching refs:kbd

59 #include <dev/kbd/kbdreg.h>
67 #include <dev/kbd/kbdtables.h>
140 keyboard_t *kbd; /* keyboard */
225 keyboard_t *kbd = (keyboard_t *) xkbd;
226 kbdmux_state_t *state = (kbdmux_state_t *) kbd->kb_data;
228 kbdd_intr(kbd, NULL);
269 kbdmux_kbd_event(keyboard_t *kbd, int event, void *arg)
289 while (kbdd_check_char(kbd)) {
290 c = kbdd_read_char(kbd, 0);
295 if (!KBD_IS_BUSY(kbd))
315 if (k->kbd == kbd)
319 kbd_release(k->kbd, &k->kbd);
322 k->kbd = NULL;
419 keyboard_t *kbd = NULL;
431 *kbdp = kbd = malloc(sizeof(*kbd), M_KBDMUX, M_NOWAIT | M_ZERO);
439 if ((kbd == NULL) || (state == NULL) || (keymap == NULL) ||
446 TASK_INIT(&state->ks_task, 0, kbdmux_kbd_intr, (void *) kbd);
452 kbd = *kbdp;
453 state = (kbdmux_state_t *) kbd->kb_data;
454 keymap = kbd->kb_keymap;
455 accmap = kbd->kb_accentmap;
456 fkeymap = kbd->kb_fkeytab;
457 fkeymap_size = kbd->kb_fkeytab_size;
461 if (!KBD_IS_PROBED(kbd)) {
463 kbd_init_struct(kbd, KEYBOARD_NAME, KB_101, unit, flags, 0, 0);
468 kbd_set_maps(kbd, keymap, accmap, fkeymap, fkeymap_size);
469 kbd->kb_data = (void *)state;
471 KBD_FOUND_DEVICE(kbd);
472 KBD_PROBE_DONE(kbd);
480 if (!KBD_IS_INITIALIZED(kbd) && !(flags & KB_CONF_PROBE_ONLY)) {
481 kbd->kb_config = flags & ~KB_CONF_PROBE_ONLY;
483 kbdmux_ioctl(kbd, KDSETLED, (caddr_t)&state->ks_state);
485 delay[0] = kbd->kb_delay1;
486 delay[1] = kbd->kb_delay2;
487 kbdmux_ioctl(kbd, KDSETREPEAT, (caddr_t)delay);
496 evdev_set_methods(evdev, kbd, &kbdmux_evdev_methods);
513 KBD_INIT_DONE(kbd);
516 if (!KBD_IS_CONFIGURED(kbd)) {
517 if (kbd_register(kbd) < 0) {
522 KBD_CONFIG_DONE(kbd);
540 if (kbd != NULL) {
541 free(kbd, M_KBDMUX);
553 kbdmux_term(keyboard_t *kbd)
555 kbdmux_state_t *state = (kbdmux_state_t *) kbd->kb_data;
569 kbd_release(k->kbd, &k->kbd);
572 k->kbd = NULL;
579 kbd_unregister(kbd);
589 free(kbd->kb_keymap, M_KBDMUX);
590 free(kbd->kb_accentmap, M_KBDMUX);
591 free(kbd->kb_fkeytab, M_KBDMUX);
592 free(kbd, M_KBDMUX);
601 kbdmux_intr(keyboard_t *kbd, void *arg)
605 if (KBD_IS_ACTIVE(kbd) && KBD_IS_BUSY(kbd)) {
607 (*kbd->kb_callback.kc_func)(kbd, KBDIO_KEYINPUT,
608 kbd->kb_callback.kc_arg);
612 c = kbdmux_read_char(kbd, FALSE);
623 kbdmux_test_if(keyboard_t *kbd)
633 kbdmux_enable(keyboard_t *kbd)
635 KBD_ACTIVATE(kbd);
643 kbdmux_disable(keyboard_t *kbd)
645 KBD_DEACTIVATE(kbd);
653 kbdmux_read(keyboard_t *kbd, int wait)
655 kbdmux_state_t *state = (kbdmux_state_t *) kbd->kb_data;
663 kbd->kb_count ++;
665 return (KBD_IS_ACTIVE(kbd)? c : -1);
672 kbdmux_check(keyboard_t *kbd)
674 kbdmux_state_t *state = (kbdmux_state_t *) kbd->kb_data;
677 if (!KBD_IS_ACTIVE(kbd))
691 kbdmux_read_char(keyboard_t *kbd, int wait)
693 kbdmux_state_t *state = (kbdmux_state_t *) kbd->kb_data;
723 while (kbdd_check_char(k->kbd)) {
724 scancode = kbdd_read_char(k->kbd, 0);
729 if (!KBD_IS_BUSY(k->kbd))
745 kbd->kb_count ++;
964 action = genkbd_keyaction(kbd, keycode, scancode & 0x80,
978 kbdmux_check_char(keyboard_t *kbd)
980 kbdmux_state_t *state = (kbdmux_state_t *) kbd->kb_data;
983 if (!KBD_IS_ACTIVE(kbd))
1002 kbdmux_ioctl(keyboard_t *kbd, u_long cmd, caddr_t arg)
1015 kbdmux_state_t *state = (kbdmux_state_t *) kbd->kb_data;
1037 if (k->kbd->kb_unit == ki->kb_unit &&
1038 strcmp(k->kbd->kb_name, ki->kb_name) == 0)
1054 k->kbd = kbd_get_keyboard(
1058 (void *) &k->kbd,
1060 if (k->kbd == NULL) {
1067 kbdd_enable(k->kbd);
1068 kbdd_clear_state(k->kbd);
1072 error = kbdd_ioctl(k->kbd, KDSKBMODE, (caddr_t)&mode);
1076 error = kbdd_ioctl(k->kbd, KDSKBSTATE, (caddr_t)&mode);
1082 kbd_release(k->kbd, &k->kbd);
1083 k->kbd = NULL;
1105 if (k->kbd->kb_unit == ki->kb_unit &&
1106 strcmp(k->kbd->kb_name, ki->kb_name) == 0)
1110 error = kbd_release(k->kbd, &k->kbd);
1114 k->kbd = NULL;
1144 state->ks_state |= KBD_LED_VAL(kbd);
1166 *(int *)arg = KBD_LED_VAL(kbd);
1186 KBD_LED_VAL(kbd) = *(int *)arg;
1194 (void)kbdd_ioctl(k->kbd, KDSETLED, arg);
1225 (void)kbdd_ioctl(k->kbd, KDSKBSTATE, arg);
1229 return (kbdmux_ioctl(kbd, KDSETLED, arg));
1266 kbd->kb_delay1 = delays[(mode >> 5) & 3];
1267 kbd->kb_delay2 = rates[mode & 0x1f];
1271 evdev_push_repeats(state->ks_evdev, kbd);
1275 (void)kbdd_ioctl(k->kbd, cmd, arg);
1289 (void)kbdd_ioctl(k->kbd, cmd, arg);
1295 error = genkbd_commonioctl(kbd, cmd, arg);
1306 kbdmux_lock(keyboard_t *kbd, int lock)
1329 kbdmux_clear_state(keyboard_t *kbd)
1331 kbdmux_state_t *state = (kbdmux_state_t *) kbd->kb_data;
1342 kbdmux_get_state(keyboard_t *kbd, void *buf, size_t len)
1349 bcopy(kbd->kb_data, buf, sizeof(kbdmux_state_t)); /* XXX locking? */
1358 kbdmux_set_state(keyboard_t *kbd, void *buf, size_t len)
1363 bcopy(buf, kbd->kb_data, sizeof(kbdmux_state_t)); /* XXX locking? */
1372 kbdmux_poll(keyboard_t *kbd, int on)
1374 kbdmux_state_t *state = (kbdmux_state_t *) kbd->kb_data;
1386 kbdd_poll(k->kbd, on);
1398 keyboard_t *kbd = evdev_get_softc(evdev);
1403 kbd_ev_event(kbd, type, code, value);
1421 keyboard_t *kbd;
1434 kbd = NULL;
1437 (error = (*sw->init)(0, &kbd, NULL, 0)) != 0)
1441 if ((error = kbd_attach(kbd)) != 0) {
1442 (*sw->term)(kbd);
1447 if ((error = (*sw->enable)(kbd)) != 0)
1457 kbd = kbd_get_keyboard(kbd_find_keyboard(KEYBOARD_NAME, 0));
1458 if (kbd != NULL) {
1459 (*sw->disable)(kbd);
1461 kbd_detach(kbd);
1463 (*sw->term)(kbd);