== JinLiveCD/FBUI == * lilo ³ª grub ¿¡ vga=791 µîÀÇ ¿É¼ÇÀ» ÁÖ¾î vesafb »ç¿ë * Ä¿³Î¿¡ graphic ºÎºÐÀ» ³Ö¾úÀ½. * 2.6.9 ¿ëÀ» 2.6.12 ·Î ¼öÁ¤ * drivers/video/Kconfig diff {{{ 41,78d40 < config FB_UI < bool "Framebuffer UI: in-kernel graphical user interface" < depends on FB < default y < help < FBUI is a small (25kB) GUI. < It was placed in the kernel in order to prevent that < it will ever become bloated, as X and other GUIs have. < < FBUI currently allows each process to have one window, and < windows may not overlap. Each virtual console may have windows. < One process per VC may request to be a window manager. < < Graphics functions include < draw point, read point, draw line, draw rectangle, < fill rectangle, clear window, clear area, draw inverted line, < put pixels, put RGB pixels, copy area, get event, draw string.< < Fonts supported are monochrome PCF format and they reside in userspace. < < Both keyboard and mouse input are supported, but you must < compile in the event interface (/dev/input/event*) and < the fbui_input module. < < Current sample programs include: < load monitor, jpeg viewer, analog clock, two window managers, < screen dump, and terminal. < < config FB_UI_WINDOWSPERVC < int "Maximum windows per virtual console" < depends on FB_UI < default "24" < < config FB_UI_EVENTQUEUELEN < int "Per-process event queue length" < depends on FB_UI < default "16" }}} * drivers/video/Makefile diff {{{ 16,17d15 < obj-$(CONFIG_FB_UI) += fbui.o < }}} * drivers/video/fbmem.c diff {{{ 8,9d7 < * 2004 - Updated for fbui < * - Zack T Smith 966,1014d963 < < #ifdef CONFIG_FB_UI < case FBIO_UI_OPEN: { < if (access_ok (VERIFY_READ, (char*) arg, sizeof(struct fbui_openparams))) < return fbui_open (info, (struct fbui_openparams*) arg); < else < return -EFAULT; < } < < case FBIO_UI_CLOSE: < return fbui_close (info, arg); < < case FBIO_UI_EXEC: { < short win_id=-1; < short nwords=0; < short *ptr=(short*) arg; < if (access_ok (VERIFY_READ, (char*) arg, 4)) { < if (get_user (win_id, ptr)) < return -EFAULT; < if (win_id < 0 || win_id >= FBUI_MAXWINDOWSPERVC*FBUI_MAXCONSOLES) < return FBUI_ERR_BADWIN; < ptr++; < if (get_user (nwords, ptr)) < return -EFAULT; < arg += 4; < if (access_ok (VERIFY_READ, (char*) (arg), 2*nwords)) < return fbui_exec (info, win_id, nwords, < (unsigned char*) (arg)); < else < return -EFAULT; < } < else < return -EFAULT; < } < < case FBIO_UI_CONTROL: < if (access_ok (VERIFY_READ, (char*) arg, sizeof(struct fbui_ctrlparams))) < { < struct fbui_ctrlparams ctl; < if (!copy_from_user (&ctl, (void*)arg, sizeof(struct fbui_ctrlparams))){ < return fbui_control (info, &ctl); < } else { < return -EFAULT; < } < } else { < return -EFAULT; < } < #endif < }}} * drivers/video/vesafb.c diff {{{ 184,198d183 < < #ifdef CONFIG_FB_UI < /* Assign routines from fbui.c */ < .fb_release = fbui_release, < .fb_point = fb_point, < .fb_hline = fb_hline, < .fb_vline = fb_vline, < .fb_clear = fb_clear, < .fb_read_point = fb_read_point, < .fb_putpixels_native = fb_putpixels_native, < .fb_putpixels_rgb = fb_putpixels_rgb, < .fb_putpixels_rgb3 = fb_putpixels_rgb3, < .fb_getpixels_rgb = fb_getpixels_rgb, < .fb_copyarea2 = fb_copyarea, < #endif 408,412d392 < < #ifdef CONFIG_FB_UI < fbui_init (info); < #endif < }}} * drivers/video/vga16fb.c diff {{{ 1313,1347d1312 < #ifdef CONFIG_FB_UI < static void vga16fb_point (struct fb_info *info, short x, short y, u32 rgb) < { < } < static void vga16fb_hline (struct fb_info *info, short x0, short x1, short y, u32 rgb) < { < } < static void vga16fb_vline (struct fb_info *info, short x, short y0, short y1, u32 rgb) < { < } < static u32 vga16fb_read_point (struct fb_info *info, short x, short y) < { < } < static u32 vga16fb_putpixels_native (struct fb_info *info, short x, short y, < short n, unsigned char *src, char in_kernel) < { < } < static u32 vga16fb_getpixels_rgb (struct fb_info *info, short x, short y, < short n, unsigned char *src, char in_kernel) < { < } < static u32 vga16fb_putpixels_rgb (struct fb_info *info, short x, short y, < short n, unsigned char *src, char in_kernel) < { < } < static u32 vga16fb_putpixels_rgb3 (struct fb_info *info, short x, short y, < short n, unsigned char *src, char in_kernel) < { < } < static u32 vga16fb_copyarea2 (struct fb_info *info, short xsrc, short ysrc, < short w, short h, short xdest, short ydest) < { < } < #endif < 1361,1374d1325 < < #ifdef CONFIG_FB_UI < .fb_point = vga16fb_point, < .fb_hline = vga16fb_hline, < .fb_vline = vga16fb_vline, < .fb_clear = vga16fb_clear, < .fb_hline = vga16fb_hline, < .fb_read_point = vga16fb_read_point, < .fb_putpixels_native = vga16fb_putpixels_native, < .fb_putpixels_rgb = vga16fb_putpixels_rgb, < .fb_getpixels_rgb = vga16fb_getpixels_rgb, < .fb_putpixels_rgb3 = vga16fb_putpixels_rgb3, < .fb_copyarea2 = vga16fb_copyarea2, < #endif 1377d1327 }}} * drivers/video/console/fbcon.c diff {{{ 2042,2045d2041 < #ifdef CONFIG_FB_UI < fbui_switch (info, vc->vc_num); < #endif < }}} * drivers/input/Kconfig diff {{{ 137,145d136 < config INPUT_FBUI < tristate "FBUI input handling" < default y < depends on INPUT < ---help--- < Say Y here if you will also enable FBUI, which is the < in-kernel framebuffer-based graphical user interface. < }}} * drivers/input/Makefile diff {{{ 15,16d14 < obj-$(CONFIG_INPUT_FBUI) += fbui-input.o < }}} * drivers/char/n_tty.c diff {{{ 31,32d30 < * < * 2004/09/20 Z Smith (fbui@comcast.net): erase-after-read of read_buf 469d466 < tty->read_buf[head] = 0; /* ZS */ 510d506 < tty->read_buf[tail] = 0; /* ZS */ 1355d1350 < tty->read_buf[tty->read_tail] = 0; /* ZS */ }}} * drivers/char/vt_ioctl.c diff {{{ 1215d1214 < #ifndef CONFIG_FB_UI 1218d1216 < #endif }}} * include/linux/fb.h diff {{{ ¾çÀÌ ¸¹À½ }}} * include/linux/input.h diff {{{ 989,997d988 < #ifdef CONFIG_INPUT_FBUI < /* FBUI additions by Zachary T Smith, fbui@comcast.net */ < extern void fbui_input_enable(void); < extern void fbui_input_disable(void); < typedef void FBUIInputEventHandler (u32 , struct input_event *); < extern void fbui_input_register_handler (FBUIInputEventHandler*, u32 param); < #endif < }}} === ³»°¡ ¼öÁ¤ÇÑ ºÎºÐ === * drivers/input/fbui-input.c {{{ > void fbui_input_unregister_handler () > { > handler = NULL; > } > }}} * drivers/video/fbui.c {{{ 142a143,144 > #include "console/fbcon.h" /* find_pid */ > 328a331,332 > return value & 0xffffff; > /* 347a352 > */ 351a357,358 > return value & 0xffffff; > /* 369a377 > */ 394a403 > do_invert=1; 692a702,703 > struct fbcon_ops *ops = info->fbcon_par; > struct vc_data *vc; 701a713,716 > if (cons > 5) { > fbui_input_unregister_handler(); > fbui_handler_regd = 0; > } 715c730 < win = info->pointer_window [info->currcon]; --- > win = info->pointer_window [ops->currcon]; 723c738 < info->pointer_window [info->currcon] = NULL; --- > info->pointer_window [ops->currcon] = NULL; 729c744 < info->currcon = cons; --- > ops->currcon = cons; 734c749,750 < if (vt_cons[cons]->vc_mode != KD_GRAPHICS) --- > vc = vc_cons[ops->currcon].d; > if (vc->vc_mode != KD_GRAPHICS) 803a820 > struct fbcon_ops *ops = info->fbcon_par; 810c827 < if (win->console != info->currcon) --- > if (win->console != ops->currcon) 982a1000 > struct fbcon_ops *ops = info->fbcon_par; 990c1008 < cons = info->currcon; --- > cons = ops->currcon; 1041a1060,1061 > struct fbcon_ops *ops; > struct vc_data *vc; 1050a1071 > ops = info->fbcon_par; 1054c1075 < cons = info->currcon; --- > cons = ops->currcon; 1057c1078,1079 < if (vt_cons[cons]->vc_mode != KD_GRAPHICS) --- > vc = vc_cons[ops->currcon].d; > if (vc->vc_mode != KD_GRAPHICS) 1129c1151 < match = accelerator_test (info, info->currcon, ia); --- > match = accelerator_test (info, ops->currcon, ia); 1241c1263 < int cons = info->currcon; --- > int cons = ops->currcon; 1411d1432 < /* 1415d1435 < */ 1490a1511,1512 > struct fbcon_ops *ops = info->fbcon_par; > struct vc_data *vc; 1495c1517,1518 < if (cons != info->currcon) { --- > vc = vc_cons[ops->currcon].d; > if (cons != ops->currcon) { 1497c1520 < vt_cons[cons]->vc_mode = KD_TEXT; --- > vc->vc_mode = KD_TEXT; 1501c1524,1525 < vt_cons[cons]->vc_mode = KD_TEXT; --- > vc->vc_mode = KD_TEXT; > fbui_hide_pointer (info); 1503c1527,1528 < redraw_screen (cons,0); --- > // redraw_screen (cons,0); > redraw_screen (vc,0); 1767a1793,1794 > struct fbcon_ops *ops = info->fbcon_par; > struct vc_data *vc; 1772a1800 > vc = vc_cons[ops->currcon].d; 1774c1802 < vt_cons[cons]->vc_mode = KD_GRAPHICS; --- > vc->vc_mode = KD_GRAPHICS; 1778c1806 < info->cursor.enable = 0; --- > ops->cursor_state.enable = 0; 1782c1810 < if (cons == info->currcon) { --- > if (cons == ops->currcon) { 1796a1825,1826 > struct fbcon_ops *ops = info->fbcon_par; > struct vc_data *vc; 1797a1828 > short org_cons; 1860a1892,1893 > org_cons=ops->currcon; > printk(KERN_INFO "fbui_open: org_cons= %d cons=%d\n", org_cons, cons); 1862a1896,1897 > if (cons < 0) > cons = ops->currcon; 1864c1899,1900 < if (!vc_allocate (cons)) --- > if (!vc_allocate (cons)){ > printk(KERN_INFO "vc_allocate return 0\n"); 1865a1902 > } 1867,1868d1903 < if (cons < 0) < cons = info->currcon; 1926,1928c1961,1963 < < if (vt_cons[cons]->vc_mode != KD_GRAPHICS) { < backup_vc (info, cons); --- > vc = vc_cons[ops->currcon].d; > if (vc->vc_mode != KD_GRAPHICS) { > backup_vc (info, org_cons); 2272a2308 > struct fbcon_ops *ops = info->fbcon_par; 2312c2348 < win2 = info->pointer_window [info->currcon]; --- > win2 = info->pointer_window [ops->currcon]; 3091a3128 > struct fbcon_ops *ops = info->fbcon_par; 3097c3134 < if (win->console != info->currcon) --- > if (win->console != ops->currcon) 3128a3166 > struct fbcon_ops *ops = info->fbcon_par; 3137c3175 < if (win->console != info->currcon) --- > if (win->console != ops->currcon) 3311a3350 > struct fbcon_ops *ops = info->fbcon_par; 3320c3359 < if (win->console != info->currcon) --- > if (win->console != ops->currcon) 3363a3403 > struct fbcon_ops *ops = info->fbcon_par; 3372c3412 < if (win->console != info->currcon) --- > if (win->console != ops->currcon) 3415a3456 > struct fbcon_ops *ops = info->fbcon_par; 3422c3463 < if (win->console != info->currcon) --- > if (win->console != ops->currcon) 3454a3496 > struct fbcon_ops *ops = info->fbcon_par; 3461c3503 < if (win->console != info->currcon) --- > if (win->console != ops->currcon) 3482a3525 > struct fbcon_ops *ops = info->fbcon_par; 3487c3530 < if (win->console != info->currcon) --- > if (win->console != ops->currcon) 3519a3563 > struct fbcon_ops *ops = info->fbcon_par; 3526c3570 < if (win->console != info->currcon) --- > if (win->console != ops->currcon) 3909a3954 > struct fbcon_ops *ops = info->fbcon_par; 3919c3964 < if (win->console != info->currcon) --- > if (win->console != ops->currcon) 3977a4023 > struct fbcon_ops *ops = info->fbcon_par; 3987c4033 < if (win->console != info->currcon) --- > if (win->console != ops->currcon) 4040a4087 > struct fbcon_ops *ops = info->fbcon_par; 4048c4095 < if (win->console != info->currcon) --- > if (win->console != ops->currcon) 4280a4328 > struct fbcon_ops *ops = info->fbcon_par; 4287c4335 < if (win->console != info->currcon) --- > if (win->console != ops->currcon) }}} {{{ diff -r FBUI/libfbui/MultiTest/main.c FBUI2.6.12/libfbui/MultiTest/main.c 65c65 < if (!pcf_read (pcf, "timR12.pcf")) { --- > if (!pcf_read (pcf, "/usr/src/linux/libfbui/timR12.pcf")) { diff -r FBUI/libfbui/Test/main.c FBUI2.6.12/libfbui/Test/main.c 83c83 < if (!pcf_read (pcf, "timR12.pcf")) { --- > if (!pcf_read (pcf, "/usr/src/linux/libfbui/timR12.pcf")) { 162c162 < -100,y, TESTSTR, rand() & 0xffffff); --- > 0,y, TESTSTR, rand() & 0xffffff); 168a169 > printf ("before font_free\n"); 169a171 > printf ("after fbui_draw_string\n"); diff -r FBUI/libfbui/WindowManager/main.c FBUI2.6.12/libfbui/WindowManager/main.c 98c98 < if (!pcf_read (pcf, "timR12.pcf")) { --- > if (!pcf_read (pcf, "/usr/src/linux/libfbui/timR12.pcf")) { diff -r FBUI/libfbui/libfbui.c FBUI2.6.12/libfbui/libfbui.c 1677,1678c1677,1678 < if (font->widths) < free ((void*) font->widths); --- > if (font->bitwidths) > free ((void*) font->bitwidths); 1682a1683,1684 > if (font->bitmap_buffer) > free ((void*) font->bitmap_buffer); diff -r FBUI/libfbui/start-fbwm.sh FBUI2.6.12/libfbui/start-fbwm.sh 4c4 < export A=4 --- > export A=1 8a9 > chvt $((A+1)) 13c14 < Term/fbterm -c$A & --- > # Term/fbterm -c$A & }}} * 2.6.12 ¿Í 2.6.12 fbui {{{ diff -r FBUI2.6.12/drivers/char/n_tty.c SQFS2.6.12/drivers/char/n_tty.c 457,459d456 < #ifdef CONFIG_FB_UI < tty->read_buf[head] = 0; /* ZS */ < #endif 500,502d496 < #ifdef CONFIG_FB_UI < tty->read_buf[tail] = 0; /* ZS */ < #endif 1349,1351d1342 < #ifdef CONFIG_FB_UI < tty->read_buf[tty->read_tail] = 0; /* ZS */ < #endif diff -r FBUI2.6.12/drivers/char/vt_ioctl.c SQFS2.6.12/drivers/char/vt_ioctl.c 1198d1197 < #ifndef CONFIG_FB_UI 1201d1199 < #endif diff -r FBUI2.6.12/drivers/video/console/fbcon.c SQFS2.6.12/drivers/video/console/fbcon.c 1939,1941d1938 < #ifdef CONFIG_FB_UI < fbui_switch (info, vc->vc_num); < #endif diff -r FBUI2.6.12/drivers/video/fbmem.c SQFS2.6.12/drivers/video/fbmem.c 860,907d859 < #ifdef CONFIG_FB_UI < case FBIO_UI_OPEN: { < if (access_ok (VERIFY_READ, (char*) arg, sizeof(struct fbui_openparams))) < return fbui_open (info, (struct fbui_openparams*) arg); < else < return -EFAULT; < } < < case FBIO_UI_CLOSE: < return fbui_close (info, arg); < < case FBIO_UI_EXEC: { < short win_id=-1; < short nwords=0; < short *ptr=(short*) arg; < if (access_ok (VERIFY_READ, (char*) arg, 4)) { < if (get_user (win_id, ptr)) < return -EFAULT; < if (win_id < 0 || win_id >= FBUI_MAXWINDOWSPERVC*FBUI_MAXCONSOLES) < return FBUI_ERR_BADWIN; < ptr++; < if (get_user (nwords, ptr)) < return -EFAULT; < arg += 4; < if (access_ok (VERIFY_READ, (char*) (arg), 2*nwords)) < return fbui_exec (info, win_id, nwords, < (unsigned char*) (arg)); < else < return -EFAULT; < } < else < return -EFAULT; < } < < case FBIO_UI_CONTROL: < if (access_ok (VERIFY_READ, (char*) arg, sizeof(struct fbui_ctrlparams))) < { < struct fbui_ctrlparams ctl; < if (!copy_from_user (&ctl, (void*)arg, sizeof(struct fbui_ctrlparams))){ < return fbui_control (info, &ctl); < } else { < return -EFAULT; < } < } else { < return -EFAULT; < } < #endif < diff -r FBUI2.6.12/drivers/video/vesafb.c SQFS2.6.12/drivers/video/vesafb.c 183,196d182 < #ifdef CONFIG_FB_UI < /* Assign routines from fbui.c */ < .fb_release = fbui_release, < .fb_point = fb_point, < .fb_hline = fb_hline, < .fb_vline = fb_vline, < .fb_clear = fb_clear, < .fb_read_point = fb_read_point, < .fb_putpixels_native = fb_putpixels_native, < .fb_putpixels_rgb = fb_putpixels_rgb, < .fb_putpixels_rgb3 = fb_putpixels_rgb3, < .fb_getpixels_rgb = fb_getpixels_rgb, < .fb_copyarea2 = fb_copyarea, < #endif 431,435d416 < < #ifdef CONFIG_FB_UI < fbui_init (info); < #endif < diff -r FBUI2.6.12/drivers/video/vga16fb.c SQFS2.6.12/drivers/video/vga16fb.c 1317,1354d1316 < #ifdef CONFIG_FB_UI < static void vga16fb_point (struct fb_info *info, short x, short y, u32 rgb) < { < } < static void vga16fb_hline (struct fb_info *info, short x0, short x1, short y, u32 rgb) < { < } < static void vga16fb_vline (struct fb_info *info, short x, short y0, short y1, u32 rgb) < { < } < static void vga16fb_clear (struct fb_info *info, u32 rgb) < { < } < static u32 vga16fb_read_point (struct fb_info *info, short x, short y) < { < } < static u32 vga16fb_putpixels_native (struct fb_info *info, short x, short y, < short n, unsigned char *src, char in_kernel) < { < } < static u32 vga16fb_getpixels_rgb (struct fb_info *info, short x, short y, < short n, unsigned char *src, char in_kernel) < { < } < static u32 vga16fb_putpixels_rgb (struct fb_info *info, short x, short y, < short n, unsigned char *src, char in_kernel) < { < } < static u32 vga16fb_putpixels_rgb3 (struct fb_info *info, short x, short y, < short n, unsigned char *src, char in_kernel) < { < } < static u32 vga16fb_copyarea2 (struct fb_info *info, short xsrc, short ysrc, < short w, short h, short xdest, short ydest) < { < } < #endif < 1368,1380d1329 < #ifdef CONFIG_FB_UI < .fb_point = vga16fb_point, < .fb_hline = vga16fb_hline, < .fb_vline = vga16fb_vline, < .fb_clear = vga16fb_clear, < .fb_hline = vga16fb_hline, < .fb_read_point = vga16fb_read_point, < .fb_putpixels_native = vga16fb_putpixels_native, < .fb_putpixels_rgb = vga16fb_putpixels_rgb, < .fb_getpixels_rgb = vga16fb_getpixels_rgb, < .fb_putpixels_rgb3 = vga16fb_putpixels_rgb3, < .fb_copyarea2 = vga16fb_copyarea2, < #endif diff -r FBUI2.6.12/include/linux/fb.h SQFS2.6.12/include/linux/fb.h 39,288d38 < /* ==========================================================================*/ < /* FBUI ioctls */ < /* FBUI additions by Zachary T Smith, fbui@comcast.net */ < < #define FBIO_UI_OPEN 0x4619 /* arg = ptr to fb_ui_open */ < #define FBIO_UI_CLOSE 0x461a /* no arg */ < /* Exec commands are queued and are not executed if window < * is not visible. */ < #define FBIO_UI_EXEC 0x461b /* arg = ptr to array of shorts (1st=count) */ < /* Control commands are _not_ queued and are always executed*/ < #define FBIO_UI_CONTROL 0x461c /* arg = ptr to fbui_ctrlparams struct */ < #define FBUI_NAMELEN 32 < typedef unsigned long RGB; < < /* FBUI program type hints for fbui_openparams */ < #define FBUI_PROGTYPE_NONE 0 < #define FBUI_PROGTYPE_APP 1 /* e.g. takes main area */ < #define FBUI_PROGTYPE_LAUNCHER 2 /* e.g. takes bottom row area */ < #define FBUI_PROGTYPE_TOOL 3 /* e.g. fbclock: takes right area permanently */ < #define FBUI_PROGTYPE_EPHEMERAL 4 /* e.g. calculator */ < #define FBUI_PROGTYPE_WM 5 /* window mgr, panel mgr */ < #define FBUI_PROGTYPE_LAST 6 /* not for use */ < < /* A few accelerator keys encoded into 0..31 */ < #define FBUI_ACCEL_PRTSC 1 < #define FBUI_ACCEL_HOME 2 < #define FBUI_ACCEL_END 3 < #define FBUI_ACCEL_PGUP 4 < #define FBUI_ACCEL_PGDN 5 < < #define FBUI_BUTTON_LEFT 2 < #define FBUI_BUTTON_RIGHT 4 < #define FBUI_BUTTON_MIDDLE 8 < < < /* Passed _in_ to FBIO_UI_OPEN ioctl */ < struct fbui_openparams { < char desired_vc; /* -1 = current */ < char req_control; /* maximum one window manager per vc */ < char doing_autoposition; /* used to differentiate btw fbwm & fbpm */ < char program_type; /* if !0, window is hidden upon creation, wm informed */ < char need_keys; /* key focus */ < char need_motion; /* pointer focus */ < char receive_all_motion; /* supported for window manager only */ < char initially_hidden; < short x0; < short y0; < short x1; < short y1; < short max_width; < short max_height; < __u32 bgcolor; < char name [FBUI_NAMELEN]; < char subtitle [FBUI_NAMELEN]; < }; < < /* Data passed _out_ kernel via FBUI_WININFO command */ < struct fbui_wininfo { < short id; < int pid; < char program_type; < char hidden; < char need_placement; < char need_keys; < char need_motion; < short x, y; < short width, height; < short max_width; < short max_height; < char name [FBUI_NAMELEN]; < char subtitle [FBUI_NAMELEN]; < }; < < /* Data passed _out_ kernel via FBUI_POLLEVENT & FBUI_WAITEVENT commands */ < struct fbui_event { < char type; < short id; < int pid; < short x, y; < short width, height; < short key; < }; < < /* Passed _in_ to FBIO_UI_CONTROL < */ < struct fbui_ctrlparams { < char op; < short id; < short id2; /* used by wm */ < short x,y; < short width,height; < struct fbui_wininfo *info; /* passed _out_ */ < int ninfo; < unsigned char *pointer; < unsigned long cutpaste_length; < struct fbui_event *event; /* passed _out_ */ < char string [FBUI_NAMELEN]; < }; < < #define FBUI_EVENTMASK_KEY 1 < #define FBUI_EVENTMASK_EXPOSE 2 < #define FBUI_EVENTMASK_HIDE 4 < #define FBUI_EVENTMASK_UNHIDE 8 < #define FBUI_EVENTMASK_ENTER 16 < #define FBUI_EVENTMASK_LEAVE 32 < #define FBUI_EVENTMASK_MR 64 < #define FBUI_EVENTMASK_ACCEL 128 < #define FBUI_EVENTMASK_WC 256 < #define FBUI_EVENTMASK_MOTION 512 < #define FBUI_EVENTMASK_BUTTON 1024 < #define FBUI_EVENTMASK_ALL 0x7fff < < /* Commands for FBIO_UI_CONTROL ioctl */ < #define FBUI_GETDIMS 0 < #define FBUI_POLLEVENT 1 < #define FBUI_READMOUSE 2 < #define FBUI_READPOINT 3 /* wm only */ < #define FBUI_ACCEL 4 < #define FBUI_WININFO 5 /* wm only */ < #define FBUI_SUSPEND 6 /* wm only */ < #define FBUI_RESUME 7 < #define FBUI_GETPOSN 8 < #define FBUI_WAITEVENT 9 < #define FBUI_PLACEMENT 10 /* wm only */ < #define FBUI_CUT 11 < #define FBUI_PASTE 12 < #define FBUI_CUTLENGTH 13 < #define FBUI_SUBTITLE 14 < #define FBUI_SETFONT 15 < < #define FBUI_CTL_TAKESWIN 32 < /* Numbers >= FBUI_CTL_TAKESWIN take a window argument */ < #define FBUI_REDRAW (FBUI_CTL_TAKESWIN+1) /* wm only */ < #define FBUI_DELETE (FBUI_CTL_TAKESWIN+2) /* wm only */ < #define FBUI_HIDE (FBUI_CTL_TAKESWIN+3) /* wm only */ < #define FBUI_UNHIDE (FBUI_CTL_TAKESWIN+4) /* wm only */ < #define FBUI_ASSIGN_KEYFOCUS (FBUI_CTL_TAKESWIN+5) /* wm only */ < #define FBUI_ASSIGN_PTRFOCUS (FBUI_CTL_TAKESWIN+7) /* wm only */ < #define FBUI_MOVE_RESIZE (FBUI_CTL_TAKESWIN+6) /* wm only */ < < /* FBUI font weight */ < #define FB_FONTWEIGHT_LIGHT (0) < #define FB_FONTWEIGHT_MEDIUM (1) < #define FB_FONTWEIGHT_BOLD (2) < #define FB_FONTWEIGHT_BLACK (3) < < /* FBUI font */ < struct fbui_font { < unsigned char ascent; < unsigned char descent; < unsigned char first_char; < unsigned char last_char; < unsigned char nchars; < unsigned char *lefts; < unsigned char *heights; < unsigned char *widths; /* # of bits used for pixels */ < unsigned char *bitwidths; /* # bits actually used.. e.g. 32 */ < unsigned char *descents; < unsigned char *bitmap_buffer; < unsigned char **bitmaps; < }; < #define FBUI_FONTSIZE sizeof(struct fbui_font) < < /* Some useful colors */ < #define RGB_NOCOLOR 0xff000000 < #define RGB_TRANSP 0xff000000 < #define RGB_BLACK 0 < #define RGB_GRAY 0xa0a0a0 < #define RGB_WHITE 0xffffff < #define RGB_RED 0xff0000 < #define RGB_GREEN 0xff00 < #define RGB_BLUE 0xff < #define RGB_CYAN 0xffff < #define RGB_YELLOW 0xffff00 < #define RGB_MAGENTA 0xff00ff < #define RGB_ORANGE 0xffa000 < #define RGB_PURPLE 0xa030ff < #define RGB_LTBROWN 0xb54c4c < #define RGB_BROWN 0xa52c2c < #define RGB_STEELBLUE 0x4682B4 < #define RGB_SIENNA 0x605230 < < /* FBUI event types. Events are 31-bit values; type is lower 4 bits */ < #define FBUI_EVENT_NONE 0 < #define FBUI_EVENT_EXPOSE 1 < #define FBUI_EVENT_HIDE 2 < #define FBUI_EVENT_UNHIDE 3 < #define FBUI_EVENT_ENTER 4 /* future... mouse pointer enter */ < #define FBUI_EVENT_LEAVE 5 /* future... mouse pointer leave */ < #define FBUI_EVENT_KEY 6 < #define FBUI_EVENT_MOVE_RESIZE 7 /* window was moved by wm */ < #define FBUI_EVENT_ACCEL 8 /* keyboard accelerator (Alt-) key */ < #define FBUI_EVENT_WINCHANGE 9 /* recv'd only by window manager */ < #define FBUI_EVENT_MOTION 10 /* mouse pointer moved */ < #define FBUI_EVENT_BUTTON 11 /* mouse button activity */ < < /* FBUI queued commands: for use with FBIO_UI_EXEC ioctl */ < #define FBUI_NONE 0 < #define FBUI_COPYAREA 1 < #define FBUI_POINT 2 < #define FBUI_LINE 3 < #define FBUI_HLINE 4 < #define FBUI_VLINE 5 < #define FBUI_RECT 6 < #define FBUI_FILLAREA 7 < #define FBUI_CLEAR 8 < #define FBUI_INVERTLINE 9 < #define FBUI_STRING 10 < #define FBUI_PUT 11 < #define FBUI_PUTRGB 12 < #define FBUI_PUTRGB3 13 < #define FBUI_CLEARAREA 14 < #define FBUI_TINYBLIT 15 < < /* FBUI ioctl return values */ < #define FBUI_SUCCESS 0 < #define FBUI_ERR_BADADDR -254 < #define FBUI_ERR_NULLPTR -253 < #define FBUI_ERR_OFFSCREEN -252 < #define FBUI_ERR_NOTRUNNING -251 < #define FBUI_ERR_WRONGVISUAL -250 < #define FBUI_ERR_NOTPLACED -249 < #define FBUI_ERR_BIGENDIAN -248 < #define FBUI_ERR_INVALIDCMD -247 < #define FBUI_ERR_BADPID -246 < #define FBUI_ERR_ACCELBUSY -245 < #define FBUI_ERR_NOFONT -244 < #define FBUI_ERR_NOMEM -243 < #define FBUI_ERR_NOTOPEN -242 < #define FBUI_ERR_OVERLAP -241 < #define FBUI_ERR_ALREADYOPEN -240 < #define FBUI_ERR_MISSINGWIN -239 < #define FBUI_ERR_NOTWM -238 < #define FBUI_ERR_WRONGWM -237 < #define FBUI_ERR_HAVEWM -236 < #define FBUI_ERR_KEYFOCUSDENIED -235 < #define FBUI_ERR_KEYFOCUSERR -234 < #define FBUI_ERR_BADPARAM -233 < #define FBUI_ERR_NOMOUSE -232 < #define FBUI_ERR_MOUSEREAD -231 < #define FBUI_ERR_OVERLARGECUT -230 < #define FBUI_ERR_BADWIN -229 < #define FBUI_ERR_PASTEFAIL -228 < #define FBUI_ERR_CUTFAIL -227 < #define FBUI_ERR_NOEVENT -226 < #define FBUI_ERR_DRAWING -225 < #define FBUI_ERR_MISSINGPROCENT -224 < #define FBUI_ERR_BADVC -223 < < /* ==========================================================================*/ 784,879d533 < /*=====================================================*/ < struct fbui_window { < short id; /* window id */ < int pid; /* process id */ < int console; /* virtual console in which window appears */ < u32 bgcolor; /* background */ < short x0, y0, x1, y1; /* absolute coordinates */ < short width, height; < short max_width; < short max_height; < < short mouse_x, mouse_y; < < char program_type; < unsigned int need_placement : 1; < unsigned int drawing : 1; /* 1 => don't allow input_handler to draw ptr */ < unsigned int pointer_inside : 1; < unsigned int is_wm : 1; < unsigned int doing_autopos : 1; /* used by wm only; {0:fbwm, 1:fbpm} */ < unsigned int is_hidden: 1; < unsigned int do_invert : 1; < unsigned int need_keys : 1; < unsigned int need_motion : 1; < unsigned int receive_all_motion : 1; < unsigned int font_valid : 1; < < struct fbui_font font; /* default font, used if font ptr NULL */ < < struct fbui_processentry *processentry; < < char name[FBUI_NAMELEN]; < char subtitle[FBUI_NAMELEN]; < < u32 accelerators[8]; /* supporting only 8-bit chars now */ < short pending_accel; < < struct fbui_window *next; < }; < < extern int fbui_init (struct fb_info *info); < extern int fbui_switch (struct fb_info *info, int con); < extern int fbui_release (struct fb_info *info, int user); < extern int fbui_exec (struct fb_info *info, short win_id, short n, unsigned char *arg); < extern int fbui_control (struct fb_info *info, struct fbui_ctrlparams*); < extern int fbui_open (struct fb_info *info, struct fbui_openparams*); < extern int fbui_close (struct fb_info *info, short); < < extern void fb_clear (struct fb_info *, u32); < extern void fb_point (struct fb_info *, short,short, u32, char); < extern u32 fb_read_point (struct fb_info *, short,short); < extern void fb_hline (struct fb_info *,short,short,short,u32); < extern void fb_vline (struct fb_info *,short,short,short,u32); < extern void fb_putpixels_native (struct fb_info *, short,short,short,unsigned char*,char); < extern void fb_putpixels_rgb (struct fb_info *, short,short,short,unsigned long*,char); < extern void fb_putpixels_rgb3 (struct fb_info *, short,short,short,unsigned char*,char); < extern short fb_getpixels_rgb (struct fb_info *, short x,short y,short n,unsigned long*,char); < extern void fb_copyarea (struct fb_info *, short,short,short,short,short,short); < < < /* Per-process event queue data < */ < struct fbui_processentry { < unsigned int in_use : 1; < unsigned int waiting : 1; < char console; < char nwindows; < char window_num; /* which window to check next for event */ < short index; < int pid; < wait_queue_head_t waitqueue; < unsigned short wait_event_mask; < < #define FBUI_MAXEVENTSPERPROCESS (CONFIG_FB_UI_EVENTQUEUELEN) < struct fbui_event events [FBUI_MAXEVENTSPERPROCESS]; < short events_head; < short events_tail; < short events_pending; < spinlock_t queuelock; < struct semaphore queuesem; < }; < < #define FBUI_MAXCONSOLES 12 < #define FBUI_TOTALACCELS 128 < #define FBUI_MAXINCOMINGKEYS 32 < #define FBUI_CUTPASTE_LIMIT 0x10000 < #define FBUI_MAXWINDOWSPERVC (CONFIG_FB_UI_WINDOWSPERVC) < < < struct fbui_focus_stack { < struct rw_semaphore sem; < short top; < short ids [FBUI_MAXWINDOWSPERVC]; /* window ids */ < }; < < < /*=====================================================*/ 947,959d600 < < #ifdef CONFIG_FB_UI < void (*fb_clear) (struct fb_info *info, u32); < u32 (*fb_read_point) (struct fb_info *info, short x, short y); < void (*fb_point) (struct fb_info *info, short,short,u32,char); < void (*fb_hline) (struct fb_info *info, short,short,short,u32); < void (*fb_vline) (struct fb_info *info, short,short,short,u32); < void (*fb_putpixels_native) (struct fb_info *, short,short,short,unsigned char*,char); < short (*fb_getpixels_rgb) (struct fb_info *, short x,short y,short n,unsigned long*,char); < void (*fb_putpixels_rgb) (struct fb_info *, short,short,short,unsigned long*,char); < void (*fb_putpixels_rgb3) (struct fb_info *, short,short,short,unsigned char*,char); < void (*fb_copyarea2) (struct fb_info *, short,short,short,short,short,short); < #endif 1094,1132d734 < < /*------------FBUI data in fb_info--------------*/ < #ifdef CONFIG_FB_UI < < struct fbui_window *keyfocus_window [FBUI_MAXCONSOLES]; < struct fbui_window *pointerfocus_window [FBUI_MAXCONSOLES]; < < char total_wins [FBUI_MAXCONSOLES]; < < unsigned char redsize, greensize, bluesize; < unsigned char redshift, greenshift, blueshift; < < struct fbui_window *window_managers [FBUI_MAXCONSOLES]; < struct fbui_window *windows [FBUI_MAXCONSOLES * FBUI_MAXWINDOWSPERVC]; < struct rw_semaphore winptrSem; < < /* protection for each fbui_window struct */ < struct semaphore windowSems [FBUI_MAXCONSOLES * FBUI_MAXWINDOWSPERVC]; < < struct semaphore preSem; < struct fbui_processentry processentries [FBUI_MAXCONSOLES * FBUI_MAXWINDOWSPERVC]; < < u32 bgcolor[FBUI_MAXCONSOLES]; /* from window manager */ < void *accelerators [FBUI_TOTALACCELS * FBUI_MAXCONSOLES]; < unsigned char force_placement [FBUI_MAXCONSOLES]; < struct tty_struct *ttysave [FBUI_MAXCONSOLES]; < struct fbui_window *pointer_window [FBUI_MAXCONSOLES]; < unsigned int pointer_active : 1; < unsigned int pointer_hidden : 1; < unsigned int have_hardware_pointer: 1; < unsigned int mode24 : 1; < short curr_mouse_x, curr_mouse_y; /* <--primary */ < short mouse_x0, mouse_y0, mouse_x1, mouse_y1; < < struct rw_semaphore cutpaste_sem; < unsigned char *cutpaste_buffer; < u32 cutpaste_length; < #endif < diff -r FBUI2.6.12/include/linux/input.h SQFS2.6.12/include/linux/input.h 1020,1027d1019 < #ifdef CONFIG_INPUT_FBUI < /* FBUI additions by Zachary T Smith, fbui@comcast.net */ < extern void fbui_input_enable(void); < extern void fbui_input_disable(void); < typedef void FBUIInputEventHandler (u32 , struct input_event *); < extern void fbui_input_register_handler (FBUIInputEventHandler*, u32 param); < #endif < }}} * vga=792 ¿¡¼­¸¸ ÇöÀç Àç´ë·Î µ¿ÀÛ * vga=791 À϶§µµ µÇµµ·Ï ÇÒ °Í * redshift µîÀÌ match µÇ´ÂÁö Á¡°ËÇØ¾ß ÇÔ. * Ʋ¸° °ÍÀÌ Çϳª ÀÖÀ½. * fbui/drivers/video/fbui.c