tkeyboard.c - plan9port - [fork] Plan 9 from user space
git clone git://src.adamsgaard.dk/plan9port
Log
Files
Refs
README
LICENSE
---
tkeyboard.c (735B)
---
     1 #include 
     2 #include 
     3 #include 
     4 #include 
     5 #include 
     6 
     7 void
     8 closekeyboard(Keyboardctl *kc)
     9 {
    10         Rune r;
    11 
    12         if(kc == nil)
    13                 return;
    14 
    15 /*        postnote(PNPROC, kc->pid, "kill"); */
    16 
    17         do; while(nbrecv(kc->c, &r) > 0);
    18         chanfree(kc->c);
    19         free(kc);
    20 }
    21 
    22 static
    23 void
    24 _ioproc(void *arg)
    25 {
    26         Rune r;
    27         Keyboardctl *kc;
    28 
    29         kc = arg;
    30         threadsetname("kbdproc");
    31         for(;;){
    32                 if(_displayrdkbd(display, &r) < 0)
    33                         threadexits("read error");
    34                 send(kc->c, &r);
    35         }
    36 }
    37 
    38 Keyboardctl*
    39 initkeyboard(char *file)
    40 {
    41         Keyboardctl *kc;
    42 
    43         kc = mallocz(sizeof(Keyboardctl), 1);
    44         if(kc == nil)
    45                 return nil;
    46         USED(file);
    47         kc->c = chancreate(sizeof(Rune), 20);
    48         chansetname(kc->c, "kbdc");
    49         proccreate(_ioproc, kc, 32*1024);
    50         return kc;
    51 }