Lines Matching refs:kbdd

286 	register struct	kbddata *kbdd;  in kbdopen()  local
322 kbdd = kmem_zalloc(sizeof (struct kbddata), KM_SLEEP); in kbdopen()
329 q->q_ptr = kbdd; in kbdopen()
330 WR(q)->q_ptr = kbdd; in kbdopen()
342 kmem_free(kbdd, sizeof (struct kbddata)); in kbdopen()
355 kmem_free(kbdd, sizeof (struct kbddata)); in kbdopen()
373 kbdd->kbdd_flags |= KBD_IOCWAIT; /* indicate that we're */ in kbdopen()
374 kbdd->kbdd_iocid = iocb->ioc_id; /* waiting for this response */ in kbdopen()
381 while (kbdd->kbdd_flags & KBD_IOCWAIT) { in kbdopen()
387 if ((error = kbdd->kbdd_iocerror) != 0) in kbdopen()
393 kbdd->kbdd_readq = q; in kbdopen()
394 kbdd->kbdd_writeq = WR(q); in kbdopen()
395 kbdd->kbdd_iocpending = NULL; in kbdopen()
396 kbdd->kbdd_translatable = TR_CAN; in kbdopen()
397 kbdd->kbdd_translate = TR_ASCII; in kbdopen()
398 kbdd->kbdd_compat = 1; in kbdopen()
399 kbdd->kbdd_ascii_addr = ASCII_FIRST; in kbdopen()
400 kbdd->kbdd_top_addr = TOP_FIRST; in kbdopen()
401 kbdd->kbdd_vkey_addr = VKEY_FIRST; in kbdopen()
403 kbdd->kbdd_downs_entries = kbd_downs_size; in kbdopen()
404 kbdd->kbdd_downs_bytes = kbd_downs_size * sizeof (Key_event); in kbdopen()
405 kbdd->kbdd_downs = kmem_alloc(kbdd->kbdd_downs_bytes, KM_SLEEP); in kbdopen()
406 kbdd->kbdd_flags = KBD_OPEN; in kbdopen()
407 kbdd->led_state = 0; in kbdopen()
412 kbdreset(kbdd, HARD_RESET); in kbdopen()
420 kmem_free(kbdd, sizeof (struct kbddata)); in kbdopen()
431 register struct kbddata *kbdd = (struct kbddata *)q->q_ptr; in kbdclose() local
441 kbdd->kbdd_flags = 0; in kbdclose()
443 if ((mp = kbdd->kbdd_replypending) != NULL) { in kbdclose()
448 kbdd->kbdd_replypending = NULL; in kbdclose()
453 if (kbdd->kbdd_bufcallid) in kbdclose()
454 qunbufcall(q, kbdd->kbdd_bufcallid); in kbdclose()
455 if (kbdd->kbdd_rptid) in kbdclose()
456 (void) quntimeout(q, kbdd->kbdd_rptid); in kbdclose()
457 if (kbdd->kbdd_layoutid) in kbdclose()
458 (void) quntimeout(q, kbdd->kbdd_layoutid); in kbdclose()
459 kmem_free(kbdd->kbdd_downs, kbdd->kbdd_downs_bytes); in kbdclose()
460 kmem_free(kbdd, sizeof (struct kbddata)); in kbdclose()
497 struct kbddata *kbdd = kbdd_addr; in kbdreioctl() local
501 kbdd->kbdd_bufcallid = 0; in kbdreioctl()
502 q = kbdd->kbdd_writeq; in kbdreioctl()
503 if ((mp = kbdd->kbdd_iocpending) != NULL) { in kbdreioctl()
504 kbdd->kbdd_iocpending = NULL; /* not pending any more */ in kbdreioctl()
512 register struct kbddata *kbdd = (struct kbddata *)q->q_ptr; in kbdioctl() local
536 if (new_translate == kbdd->kbdd_translate) in kbdioctl()
538 kbdd->kbdd_translate = new_translate; in kbdioctl()
547 if (new_translate == kbdd->kbdd_translate) in kbdioctl()
549 kbdd->kbdd_translate = new_translate; in kbdioctl()
597 kbdd->led_state = *(uchar_t *)mp->b_cont->b_rptr; in kbdioctl()
598 kbdsetled(kbdd); in kbdioctl()
606 *(uchar_t *)datap->b_wptr = kbdd->led_state; in kbdioctl()
620 (kbdd->kbdd_translate == TR_EVENT || in kbdioctl()
621 kbdd->kbdd_translate == TR_UNTRANS_EVENT) ? in kbdioctl()
635 *(int *)datap->b_wptr = kbdd->kbdd_translate; in kbdioctl()
652 addr_ptr = &kbdd->kbdd_ascii_addr; in kbdioctl()
656 addr_ptr = &kbdd->kbdd_top_addr; in kbdioctl()
660 addr_ptr = &kbdd->kbdd_vkey_addr; in kbdioctl()
681 addr_probe->data.current = kbdd->kbdd_ascii_addr; in kbdioctl()
685 addr_probe->data.current = kbdd->kbdd_top_addr; in kbdioctl()
689 addr_probe->data.current = kbdd->kbdd_vkey_addr; in kbdioctl()
702 if (kbdd->kbdd_translatable != *(int *)mp->b_cont->b_rptr) { in kbdioctl()
703 kbdd->kbdd_translatable = *(int *)mp->b_cont->b_rptr; in kbdioctl()
704 kbdreset(kbdd, HARD_RESET); in kbdioctl()
714 *(int *)datap->b_wptr = kbdd->kbdd_translatable; in kbdioctl()
727 kbdd->kbdd_compat = *(int *)mp->b_cont->b_rptr; in kbdioctl()
735 *(int *)datap->b_wptr = kbdd->kbdd_compat; in kbdioctl()
748 err = kbdsetkey(kbdd, (struct kiockey *)mp->b_cont->b_rptr, in kbdioctl()
762 err = kbdgetkey(kbdd, (struct kiockey *)mp->b_cont->b_rptr); in kbdioctl()
770 err = kbdskey(kbdd, (struct kiockeymap *)mp->b_cont->b_rptr, in kbdioctl()
784 err = kbdgkey(kbdd, (struct kiockeymap *)mp->b_cont->b_rptr); in kbdioctl()
808 *(int *)datap->b_wptr = kbdd->kbdd_state.k_id; in kbdioctl()
817 if ((datap = kbdd->kbdd_replypending) != NULL) { in kbdioctl()
822 kbdd->kbdd_replypending = NULL; in kbdioctl()
826 if (kbdd->kbdd_state.k_id == KB_SUN4 || in kbdioctl()
827 kbdd->kbdd_state.k_id == KB_PC) { in kbdioctl()
839 kbdd->kbdd_replypending = mp; in kbdioctl()
841 if (kbdd->kbdd_layoutid) in kbdioctl()
842 (void) quntimeout(q, kbdd->kbdd_layoutid); in kbdioctl()
843 kbdd->kbdd_layoutid = qtimeout(q, kbdlayouttimeout, in kbdioctl()
844 kbdd, hz / 5); in kbdioctl()
935 kbdflush(kbdd); in kbdioctl()
958 if (kbdd->kbdd_iocpending != NULL) in kbdioctl()
959 freemsg(kbdd->kbdd_iocpending); in kbdioctl()
960 kbdd->kbdd_iocpending = mp; in kbdioctl()
961 if (kbdd->kbdd_bufcallid) in kbdioctl()
962 qunbufcall(q, kbdd->kbdd_bufcallid); in kbdioctl()
963 kbdd->kbdd_bufcallid = qbufcall(q, ioctlrespsize, BPRI_HI, in kbdioctl()
964 kbdreioctl, kbdd); in kbdioctl()
968 kbdflush(register struct kbddata *kbdd) in kbdflush() argument
973 if ((q = kbdd->kbdd_readq) != NULL && q->q_next != NULL) in kbdflush()
976 bzero(kbdd->kbdd_downs, kbdd->kbdd_downs_bytes); in kbdflush()
977 kbdcancelrpt(kbdd); in kbdflush()
984 kbduse(register struct kbddata *kbdd, unsigned keycode) in kbduse() argument
992 if ((readq = kbdd->kbdd_readq) == NULL) in kbduse()
994 if (!kbdd->kbdd_translatable || in kbduse()
995 kbdd->kbdd_translate == TR_NONE) in kbduse()
998 kbdtranslate(kbdd, keycode, readq); in kbduse()
1058 kbdsetled(register struct kbddata *kbdd) in kbdsetled() argument
1060 if (kbdd->kbdd_state.k_id == KB_SUN4 || in kbdsetled()
1061 kbdd->kbdd_state.k_id == KB_PC) { in kbdsetled()
1062 kbdcmd(kbdd->kbdd_writeq, KBD_CMD_SETLED); in kbdsetled()
1063 kbdcmd(kbdd->kbdd_writeq, kbdd->led_state); in kbdsetled()
1071 kbdreset(register struct kbddata *kbdd, uint_t hard_reset) in kbdreset() argument
1075 k = &kbdd->kbdd_state; in kbdreset()
1076 if (kbdd->kbdd_translatable) { in kbdreset()
1081 kbdcmd(kbdd->kbdd_writeq, KBD_CMD_RESET); in kbdreset()
1128 kbdsetkey(register struct kbddata *kbdd, struct kiockey *key, cred_t *cr) in kbdsetkey() argument
1137 if (kbdd->kbdd_state.k_curkeyboard == NULL) in kbdsetkey()
1143 kbdd->kbdd_state.k_curkeyboard->k_abort1 = key->kio_station; in kbdsetkey()
1149 kbdd->kbdd_state.k_curkeyboard->k_abort2 = key->kio_station; in kbdsetkey()
1153 (km = settable(kbdd, (uint_t)tablemask)) == NULL) in kbdsetkey()
1198 kbdgetkey(register struct kbddata *kbdd, struct kiockey *key) in kbdgetkey() argument
1206 if (kbdd->kbdd_state.k_curkeyboard == NULL) in kbdgetkey()
1209 key->kio_station = kbdd->kbdd_state.k_curkeyboard->k_abort1; in kbdgetkey()
1213 key->kio_station = kbdd->kbdd_state.k_curkeyboard->k_abort2; in kbdgetkey()
1216 if ((km = settable(kbdd, (uint_t)key->kio_tablemask)) == NULL) in kbdgetkey()
1242 kbdskey(register struct kbddata *kbdd, struct kiockeymap *key, cred_t *cr) in kbdskey() argument
1249 if (kbdd->kbdd_state.k_curkeyboard == NULL) in kbdskey()
1254 kbdd->kbdd_state.k_curkeyboard->k_abort1 = key->kio_station; in kbdskey()
1260 kbdd->kbdd_state.k_curkeyboard->k_abort2 = key->kio_station; in kbdskey()
1263 if ((km = settable(kbdd, (uint_t)key->kio_tablemask)) == NULL) in kbdskey()
1280 kbdgkey(register struct kbddata *kbdd, struct kiockeymap *key) in kbdgkey() argument
1287 if (kbdd->kbdd_state.k_curkeyboard == NULL) in kbdgkey()
1290 key->kio_station = kbdd->kbdd_state.k_curkeyboard->k_abort1; in kbdgkey()
1294 key->kio_station = kbdd->kbdd_state.k_curkeyboard->k_abort2; in kbdgkey()
1297 if ((km = settable(kbdd, (uint_t)key->kio_tablemask)) == NULL) in kbdgkey()
1312 struct kbddata *kbdd = arg; in kbdlayouttimeout() local
1315 kbdd->kbdd_layoutid = 0; in kbdlayouttimeout()
1321 if ((mp = kbdd->kbdd_replypending) != NULL) { in kbdlayouttimeout()
1322 kbdd->kbdd_replypending = NULL; in kbdlayouttimeout()
1325 putnext(kbdd->kbdd_readq, mp); in kbdlayouttimeout()
1335 struct kbddata *kbdd = (struct kbddata *)q->q_ptr; in kbdrput() local
1340 if (kbdd == 0) { in kbdrput()
1375 if (!(kbdd->kbdd_flags & KBD_IOCWAIT) || in kbdrput()
1376 iocp->ioc_id != kbdd->kbdd_iocid) { in kbdrput()
1380 if (kbdd->kbdd_flags & KBD_OPEN) in kbdrput()
1385 kbdd->kbdd_flags &= ~KBD_IOCWAIT; in kbdrput()
1386 kbdd->kbdd_iocerror = iocp->ioc_error; in kbdrput()
1392 if (!(kbdd->kbdd_flags & KBD_OPEN)) { in kbdrput()
1408 kbdinput(kbdd, *readp++); in kbdrput()
1420 kbdinput(register struct kbddata *kbdd, register unsigned key) in kbdinput() argument
1425 k = &kbdd->kbdd_state; in kbdinput()
1437 kbdreset(kbdd, HARD_RESET); in kbdinput()
1443 kbdid(kbdd, (int)key); in kbdinput()
1455 kbdcmd(kbdd->kbdd_writeq, KBD_CMD_NOCLICK); in kbdinput()
1458 kbdcmd(kbdd->kbdd_writeq, KBD_CMD_CLICK); in kbdinput()
1466 kbdcmd(kbdd->kbdd_writeq, KBD_CMD_NOCLICK); in kbdinput()
1476 kbdcmd(kbdd->kbdd_writeq, in kbdinput()
1488 kbdsetled(kbdd); in kbdinput()
1507 kbdreset(kbdd, HARD_RESET); in kbdinput()
1515 kbdreset(kbdd, NO_HARD_RESET); in kbdinput()
1541 if (kbdd->kbdd_layoutid) in kbdinput()
1542 (void) quntimeout(kbdd->kbdd_readq, in kbdinput()
1543 kbdd->kbdd_layoutid); in kbdinput()
1544 if ((mp = kbdd->kbdd_replypending) != NULL) { in kbdinput()
1545 kbdd->kbdd_replypending = NULL; in kbdinput()
1548 putnext(kbdd->kbdd_readq, mp); in kbdinput()
1571 kbdd->shiftkey = key; in kbdinput()
1575 kbduse(kbdd, key); in kbdinput()
1590 kbduse(kbdd, IDLEKEY); /* fake */ in kbdinput()
1593 kbduse(kbdd, k->k_curkeyboard->k_abort1); in kbdinput()
1609 kbdd->shiftkey |= RELEASED; in kbdinput()
1610 kbduse(kbdd, kbdd->shiftkey); in kbdinput()
1611 kbduse(kbdd, IDLEKEY); /* fake */ in kbdinput()
1624 kbduse(kbdd, key); in kbdinput()
1630 kbdid(register struct kbddata *kbdd, int id) in kbdid() argument
1635 k = &kbdd->kbdd_state; in kbdid()
1646 if (kbdd->kbdd_rptid) in kbdid()
1647 (void) quntimeout(kbdd->kbdd_readq, kbdd->kbdd_rptid); in kbdid()
1648 kbdd->kbdd_rptid = 0; in kbdid()
1673 settable(register struct kbddata *kbdd, register uint_t mask) in settable() argument
1677 kp = kbdd->kbdd_state.k_curkeyboard; in settable()
1698 struct kbddata *kbdd = arg; in kbdrpt() local
1701 k = &kbdd->kbdd_state; in kbdrpt()
1706 kbdd->kbdd_rptid = 0; in kbdrpt()
1708 kbdkeyreleased(kbdd, KEYOF(k->k_rptkey)); in kbdrpt()
1709 kbduse(kbdd, k->k_rptkey); in kbdrpt()
1711 kbdd->kbdd_rptid = qtimeout(kbdd->kbdd_readq, kbdrpt, in kbdrpt()
1712 kbdd, kbd_repeatrate); in kbdrpt()
1717 kbdcancelrpt(register struct kbddata *kbdd) in kbdcancelrpt() argument
1721 k = &kbdd->kbdd_state; in kbdcancelrpt()
1723 if (kbdd->kbdd_rptid) in kbdcancelrpt()
1724 (void) quntimeout(kbdd->kbdd_readq, kbdd->kbdd_rptid); in kbdcancelrpt()
1725 kbdd->kbdd_rptid = 0; in kbdcancelrpt()
1728 ASSERT(kbdd->kbdd_rptid == 0); in kbdcancelrpt()
1732 kbdtranslate(struct kbddata *kbdd, unsigned keycode, queue_t *q) in kbdtranslate() argument
1746 k = &kbdd->kbdd_state; in kbdtranslate()
1757 if (kbdd->kbdd_translate == TR_UNTRANS_EVENT) { in kbdtranslate()
1762 kbdqueuepress(kbdd, key, &fe); in kbdtranslate()
1764 kbdkeyreleased(kbdd, key); in kbdtranslate()
1773 km = settable(kbdd, shiftmask); in kbdtranslate()
1775 kbdcancelrpt(kbdd); in kbdtranslate()
1790 km = settable(kbdd, shiftmask & ~NUMLOCKMASK); in kbdtranslate()
1792 kbdcancelrpt(kbdd); in kbdtranslate()
1821 kbdd->compose_key = entry; in kbdtranslate()
1827 kbdd->led_state &= ~LED_COMPOSE; in kbdtranslate()
1828 kbdsetled(kbdd); in kbdtranslate()
1834 kbdd->led_state &= ~LED_COMPOSE; in kbdtranslate()
1835 kbdsetled(kbdd); in kbdtranslate()
1838 if (kbdd->compose_key <= entry) { in kbdtranslate()
1840 kbdd->compose_key, in kbdtranslate()
1846 kbdd->compose_key, in kbdtranslate()
1850 if (kbdd->kbdd_translate == in kbdtranslate()
1853 (kbdd->kbdd_compat ? in kbdtranslate()
1859 kbdd, in kbdtranslate()
1862 kbdd->kbdd_translate == in kbdtranslate()
1877 != kbdd->fltaccent_entry) || in kbdtranslate()
1884 if (kbdd->kbdd_translate == TR_EVENT) { in kbdtranslate()
1885 fe.id = (kbdd->kbdd_compat ? in kbdtranslate()
1889 kbdqueueevent(kbdd, &fe); in kbdtranslate()
1890 } else if (kbdd->kbdd_translate == TR_ASCII) in kbdtranslate()
1908 kbdd->kbdd_translate == TR_EVENT)) { in kbdtranslate()
1910 kbdcancelrpt(kbdd); in kbdtranslate()
1911 kbdd->kbdd_rptid = qtimeout(q, kbdrpt, kbdd, in kbdtranslate()
1916 kbdcancelrpt(kbdd); in kbdtranslate()
1917 if ((newstate == RELEASED) && (kbdd->kbdd_translate == TR_EVENT)) in kbdtranslate()
1918 kbdkeyreleased(kbdd, key); in kbdtranslate()
1928 switch (kbdd->kbdd_translate) { in kbdtranslate()
1933 kbdkeypressed(kbdd, key, &fe, entry); in kbdtranslate()
1949 kbdd->led_state &= ~LED_CAPS_LOCK; in kbdtranslate()
1950 kbdsetled(kbdd); in kbdtranslate()
1952 kbdd->led_state &= ~LED_NUM_LOCK; in kbdtranslate()
1953 kbdsetled(kbdd); in kbdtranslate()
1958 kbdd->led_state |= LED_CAPS_LOCK; in kbdtranslate()
1959 kbdsetled(kbdd); in kbdtranslate()
1961 kbdd->led_state |= LED_NUM_LOCK; in kbdtranslate()
1962 kbdsetled(kbdd); in kbdtranslate()
1973 if (kbdd->kbdd_translate == TR_EVENT && newstate == PRESSED) { in kbdtranslate()
1982 kbdkeypressed(kbdd, key, &fe, fe.id); in kbdtranslate()
1989 if (kbdd->kbdd_translate == TR_EVENT && newstate == PRESSED) { in kbdtranslate()
1998 kbdkeypressed(kbdd, key, &fe, fe.id); in kbdtranslate()
2015 kbdcancelrpt(kbdd); in kbdtranslate()
2016 kbdreleaseall(kbdd); in kbdtranslate()
2025 kbdd->led_state |= LED_COMPOSE; in kbdtranslate()
2026 kbdsetled(kbdd); in kbdtranslate()
2041 kbdd->fltaccent_entry = entry; in kbdtranslate()
2049 switch (kbdd->kbdd_translate) { in kbdtranslate()
2052 kbd_send_esc_event(*cp, kbdd); in kbdtranslate()
2064 switch (kbdd->kbdd_translate) { in kbdtranslate()
2095 kbdkeypressed(kbdd, key, &fe, fe.id); in kbdtranslate()
2116 switch (kbdd->kbdd_translate) { in kbdtranslate()
2137 kbdkeypressed(kbdd, key, &fe, fe.id); in kbdtranslate()
2173 kbd_send_esc_event(char c, register struct kbddata *kbdd) in kbd_send_esc_event() argument
2186 kbdqueueevent(kbdd, &fe); in kbd_send_esc_event()
2188 kbdqueueevent(kbdd, &fe); in kbd_send_esc_event()
2211 kbdkeypressed(struct kbddata *kbdd, uchar_t key_station, Firm_event *fe, in kbdkeypressed() argument
2223 k = &kbdd->kbdd_state; in kbdkeypressed()
2227 km = settable(kbdd, in kbdkeypressed()
2245 id_addr = kbdd->kbdd_ascii_addr; in kbdkeypressed()
2248 id_addr = kbdd->kbdd_top_addr; in kbdkeypressed()
2251 id_addr = kbdd->kbdd_vkey_addr; in kbdkeypressed()
2257 kbdqueuepress(kbdd, key_station, fe); in kbdkeypressed()
2261 kbdqueuepress(struct kbddata *kbdd, uchar_t key_station, Firm_event *fe) in kbdqueuepress() argument
2273 if (kbdd->kbdd_translate == TR_EVENT || in kbdqueuepress()
2274 kbdd->kbdd_translate == TR_UNTRANS_EVENT) { in kbdqueuepress()
2275 for (i = 0, ke = kbdd->kbdd_downs; in kbdqueuepress()
2276 i < kbdd->kbdd_downs_entries; in kbdqueuepress()
2293 ke = kbdd->kbdd_downs; in kbdqueuepress()
2298 kbdqueueevent(kbdd, fe); in kbdqueuepress()
2302 kbdkeyreleased(register struct kbddata *kbdd, uchar_t key_station) in kbdkeyreleased() argument
2313 if (kbdd->kbdd_translate != TR_EVENT && in kbdkeyreleased()
2314 kbdd->kbdd_translate != TR_UNTRANS_EVENT) in kbdkeyreleased()
2317 for (i = 0, ke = kbdd->kbdd_downs; in kbdkeyreleased()
2318 i < kbdd->kbdd_downs_entries; in kbdkeyreleased()
2324 kbdqueueevent(kbdd, &ke->event); in kbdkeyreleased()
2336 kbdreleaseall(struct kbddata *kbdd) in kbdreleaseall() argument
2345 for (i = 0, ke = kbdd->kbdd_downs; in kbdreleaseall()
2346 i < kbdd->kbdd_downs_entries; i++, ke++) { in kbdreleaseall()
2349 kbdkeyreleased(kbdd, ke->key_station); in kbdreleaseall()
2403 kbdqueueevent(struct kbddata *kbdd, Firm_event *fe) in kbdqueueevent() argument
2408 if ((q = kbdd->kbdd_readq) == NULL) in kbdqueueevent()
2414 kbdflush(kbdd); in kbdqueueevent()