Changes in / [73f56e4:bb2dbf8] in mainline
- Files:
-
- 2 added
- 17 deleted
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
boot/arch/amd64/Makefile.inc
r73f56e4 rbb2dbf8 31 31 RD_SRVS += \ 32 32 $(USPACEDIR)/srv/pci/pci \ 33 $(USPACEDIR)/srv/bd/ata_bd/ata_bd \ 34 $(USPACEDIR)/srv/char/i8042/i8042 \ 35 $(USPACEDIR)/srv/mouse/c_mouse/c_mouse 33 $(USPACEDIR)/srv/bd/ata_bd/ata_bd 36 34 37 35 MODULES := $(notdir $(COMPONENTS)) -
uspace/Makefile
r73f56e4 rbb2dbf8 41 41 srv/fb \ 42 42 srv/kbd \ 43 srv/char/i8042 \44 43 srv/console \ 45 44 srv/fs/fat \ 46 45 srv/fs/tmpfs \ 47 46 srv/fs/devfs \ 48 srv/mouse/c_mouse \49 47 srv/vfs \ 50 48 srv/devmap \ -
uspace/app/init/init.c
r73f56e4 rbb2dbf8 265 265 spawn("/srv/fhc"); 266 266 spawn("/srv/obio"); 267 srv_start("/srv/i8042");268 srv_start("/srv/c_mouse");269 267 270 268 spawn("/srv/fb"); -
uspace/srv/console/console.c
r73f56e4 rbb2dbf8 37 37 #include <ipc/kbd.h> 38 38 #include <io/keycode.h> 39 #include <ipc/mouse.h>40 39 #include <ipc/fb.h> 41 40 #include <ipc/services.h> … … 65 64 /** Phone to the keyboard driver. */ 66 65 static int kbd_phone; 67 68 /** Phone to the mouse driver. */69 static int mouse_phone;70 66 71 67 /** Information about framebuffer */ … … 430 426 } 431 427 432 /** Handler for mouse events */433 static void mouse_events(ipc_callid_t iid, ipc_call_t *icall)434 {435 int button, press;436 int dx, dy;437 int newcon;438 439 /* Ignore parameters, the connection is already opened */440 while (true) {441 442 ipc_call_t call;443 ipc_callid_t callid = async_get_call(&call);444 445 int retval;446 447 switch (IPC_GET_METHOD(call)) {448 case IPC_M_PHONE_HUNGUP:449 /* TODO: Handle hangup */450 return;451 case MEVENT_BUTTON:452 button = IPC_GET_ARG1(call);453 press = IPC_GET_ARG2(call);454 if (button == 1) {455 newcon = gcons_mouse_btn(press);456 if (newcon != -1)457 change_console(&consoles[newcon]);458 }459 retval = 0;460 break;461 case MEVENT_MOVE:462 dx = IPC_GET_ARG1(call);463 dy = IPC_GET_ARG2(call);464 gcons_mouse_move(dx, dy);465 retval = 0;466 break;467 default:468 retval = ENOENT;469 }470 471 ipc_answer_0(callid, retval);472 }473 }474 475 428 static void cons_write(console_t *cons, ipc_callid_t rid, ipc_call_t *request) 476 429 { … … 722 675 return false; 723 676 } 724 677 725 678 kbd_phone = fd_phone(input_fd); 726 679 if (kbd_phone < 0) { … … 728 681 return false; 729 682 } 730 683 731 684 /* NB: The callback connection is slotted for removal */ 732 685 ipcarg_t phonehash; … … 735 688 return false; 736 689 } 737 690 738 691 async_new_connection(phonehash, 0, NULL, keyboard_events); 739 740 /* Connect to mouse device */741 mouse_phone = -1;742 int mouse_fd = open("/dev/hid_in/mouse", O_RDONLY);743 744 if (mouse_fd < 0) {745 printf(NAME ": Notice - failed opening %s\n", "/dev/hid_in/mouse");746 goto skip_mouse;747 }748 749 mouse_phone = fd_phone(mouse_fd);750 if (mouse_phone < 0) {751 printf(NAME ": Failed to connect to mouse device\n");752 goto skip_mouse;753 }754 755 if (ipc_connect_to_me(mouse_phone, SERVICE_CONSOLE, 0, 0, &phonehash) != 0) {756 printf(NAME ": Failed to create callback from mouse device\n");757 mouse_phone = -1;758 goto skip_mouse;759 }760 761 async_new_connection(phonehash, 0, NULL, mouse_events);762 skip_mouse:763 692 764 693 /* Connect to framebuffer driver */ … … 768 697 return -1; 769 698 } 770 699 771 700 /* Register driver */ 772 701 int rc = devmap_driver_register(NAME, client_connection); -
uspace/srv/kbd/Makefile.build
r73f56e4 rbb2dbf8 75 75 ifeq ($(UARCH),ia32) 76 76 SOURCES += \ 77 port/ chardev.c \77 port/i8042.c \ 78 78 ctl/pc.c 79 79 endif -
uspace/srv/kbd/generic/kbd.c
r73f56e4 rbb2dbf8 60 60 #define NAMESPACE "hid_in" 61 61 62 int client_phone= -1;62 int phone2cons = -1; 63 63 64 64 /** Currently active modifiers. */ … … 164 164 ev.c = layout[active_layout]->parse_ev(&ev); 165 165 166 async_msg_4( client_phone, KBD_EVENT, ev.type, ev.key, ev.mods, ev.c);167 } 168 169 static void c lient_connection(ipc_callid_t iid, ipc_call_t *icall)166 async_msg_4(phone2cons, KBD_EVENT, ev.type, ev.key, ev.mods, ev.c); 167 } 168 169 static void console_connection(ipc_callid_t iid, ipc_call_t *icall) 170 170 { 171 171 ipc_callid_t callid; … … 179 179 switch (IPC_GET_METHOD(call)) { 180 180 case IPC_M_PHONE_HUNGUP: 181 if ( client_phone!= -1) {182 ipc_hangup( client_phone);183 client_phone= -1;181 if (phone2cons != -1) { 182 ipc_hangup(phone2cons); 183 phone2cons = -1; 184 184 } 185 185 … … 187 187 return; 188 188 case IPC_M_CONNECT_TO_ME: 189 if ( client_phone!= -1) {189 if (phone2cons != -1) { 190 190 retval = ELIMIT; 191 191 break; 192 192 } 193 client_phone= IPC_GET_ARG5(call);193 phone2cons = IPC_GET_ARG5(call); 194 194 retval = 0; 195 195 break; … … 238 238 239 239 /* Register driver */ 240 int rc = devmap_driver_register(NAME, c lient_connection);240 int rc = devmap_driver_register(NAME, console_connection); 241 241 if (rc < 0) { 242 242 printf(NAME ": Unable to register driver (%d)\n", rc);
Note:
See TracChangeset
for help on using the changeset viewer.