1 /* Haiku window system support. Hey Emacs, this is -*- C++ -*- 2 Copyright (C) 2021 Free Software Foundation, Inc. 3 4 This file is part of GNU Emacs. 5 6 GNU Emacs is free software: you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation, either version 3 of the License, or (at 9 your option) any later version. 10 11 GNU Emacs is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */ 18 19 #ifndef _HAIKU_SUPPORT_H 20 #define _HAIKU_SUPPORT_H 21 22 #include <stdint.h> 23 24 #ifdef HAVE_FREETYPE 25 #include <ft2build.h> 26 #include <fontconfig/fontconfig.h> 27 #include FT_FREETYPE_H 28 #include FT_SIZES_H 29 #endif 30 31 #ifdef USE_BE_CAIRO 32 #include <cairo.h> 33 #endif 34 35 enum haiku_cursor 36 { 37 CURSOR_ID_NO_CURSOR = 12, 38 CURSOR_ID_RESIZE_NORTH = 15, 39 CURSOR_ID_RESIZE_EAST = 16, 40 CURSOR_ID_RESIZE_SOUTH = 17, 41 CURSOR_ID_RESIZE_WEST = 18, 42 CURSOR_ID_RESIZE_NORTH_EAST = 19, 43 CURSOR_ID_RESIZE_NORTH_WEST = 20, 44 CURSOR_ID_RESIZE_SOUTH_EAST = 21, 45 CURSOR_ID_RESIZE_SOUTH_WEST = 22, 46 CURSOR_ID_RESIZE_NORTH_SOUTH = 23, 47 CURSOR_ID_RESIZE_EAST_WEST = 24, 48 CURSOR_ID_RESIZE_NORTH_EAST_SOUTH_WEST = 25, 49 CURSOR_ID_RESIZE_NORTH_WEST_SOUTH_EAST = 26 50 }; 51 52 enum haiku_alert_type 53 { 54 HAIKU_EMPTY_ALERT = 0, 55 HAIKU_INFO_ALERT, 56 HAIKU_IDEA_ALERT, 57 HAIKU_WARNING_ALERT, 58 HAIKU_STOP_ALERT 59 }; 60 61 enum haiku_event_type 62 { 63 QUIT_REQUESTED, 64 FRAME_RESIZED, 65 FRAME_EXPOSED, 66 KEY_DOWN, 67 KEY_UP, 68 ACTIVATION, 69 MOUSE_MOTION, 70 BUTTON_DOWN, 71 BUTTON_UP, 72 ICONIFICATION, 73 MOVE_EVENT, 74 SCROLL_BAR_VALUE_EVENT, 75 SCROLL_BAR_DRAG_EVENT, 76 WHEEL_MOVE_EVENT, 77 MENU_BAR_RESIZE, 78 MENU_BAR_OPEN, 79 MENU_BAR_SELECT_EVENT, 80 MENU_BAR_CLOSE, 81 FILE_PANEL_EVENT, 82 MENU_BAR_HELP_EVENT, 83 ZOOM_EVENT, 84 REFS_EVENT, 85 APP_QUIT_REQUESTED_EVENT 86 }; 87 88 struct haiku_quit_requested_event 89 { 90 void *window; 91 }; 92 93 struct haiku_resize_event 94 { 95 void *window; 96 float px_heightf; 97 float px_widthf; 98 }; 99 100 struct haiku_expose_event 101 { 102 void *window; 103 int x; 104 int y; 105 int width; 106 int height; 107 }; 108 109 struct haiku_refs_event 110 { 111 void *window; 112 int x, y; 113 /* Free this with free! */ 114 char *ref; 115 }; 116 117 struct haiku_app_quit_requested_event 118 { 119 char dummy; 120 }; 121 122 #define HAIKU_MODIFIER_ALT (1) 123 #define HAIKU_MODIFIER_CTRL (1 << 1) 124 #define HAIKU_MODIFIER_SHIFT (1 << 2) 125 #define HAIKU_MODIFIER_SUPER (1 << 3) 126 127 struct haiku_key_event 128 { 129 void *window; 130 int modifiers; 131 uint32_t mb_char; 132 uint32_t unraw_mb_char; 133 short kc; 134 }; 135 136 struct haiku_activation_event 137 { 138 void *window; 139 int activated_p; 140 }; 141 142 struct haiku_mouse_motion_event 143 { 144 void *window; 145 bool just_exited_p; 146 int x; 147 int y; 148 uint32_t be_code; 149 }; 150 151 struct haiku_button_event 152 { 153 void *window; 154 int btn_no; 155 int modifiers; 156 int x; 157 int y; 158 }; 159 160 struct haiku_iconification_event 161 { 162 void *window; 163 int iconified_p; 164 }; 165 166 struct haiku_move_event 167 { 168 void *window; 169 int x; 170 int y; 171 }; 172 173 struct haiku_wheel_move_event 174 { 175 void *window; 176 int modifiers; 177 float delta_x; 178 float delta_y; 179 }; 180 181 struct haiku_menu_bar_select_event 182 { 183 void *window; 184 void *ptr; 185 }; 186 187 struct haiku_file_panel_event 188 { 189 void *ptr; 190 }; 191 192 struct haiku_menu_bar_help_event 193 { 194 void *window; 195 int mb_idx; 196 }; 197 198 struct haiku_zoom_event 199 { 200 void *window; 201 int x; 202 int y; 203 int width; 204 int height; 205 }; 206 207 #define FSPEC_FAMILY 1 208 #define FSPEC_STYLE (1 << 1) 209 #define FSPEC_SLANT (1 << 2) 210 #define FSPEC_WEIGHT (1 << 3) 211 #define FSPEC_SPACING (1 << 4) 212 #define FSPEC_WANTED (1 << 5) 213 #define FSPEC_NEED_ONE_OF (1 << 6) 214 #define FSPEC_WIDTH (1 << 7) 215 #define FSPEC_LANGUAGE (1 << 8) 216 217 typedef char haiku_font_family_or_style[64]; 218 219 enum haiku_font_slant 220 { 221 NO_SLANT = -1, 222 SLANT_OBLIQUE, 223 SLANT_REGULAR, 224 SLANT_ITALIC 225 }; 226 227 enum haiku_font_width 228 { 229 NO_WIDTH = -1, 230 ULTRA_CONDENSED, 231 EXTRA_CONDENSED, 232 CONDENSED, 233 SEMI_CONDENSED, 234 NORMAL_WIDTH, 235 SEMI_EXPANDED, 236 EXPANDED, 237 EXTRA_EXPANDED, 238 ULTRA_EXPANDED 239 }; 240 241 enum haiku_font_language 242 { 243 LANGUAGE_CN, 244 LANGUAGE_KO, 245 LANGUAGE_JP, 246 MAX_LANGUAGE /* This isn't a language. */ 247 }; 248 249 struct haiku_font_pattern 250 { 251 int specified; 252 struct haiku_font_pattern *next; 253 /* The next two fields are only temporarily used during the font 254 discovery process! Do not rely on them being correct outside 255 BFont_find. */ 256 struct haiku_font_pattern *last; 257 struct haiku_font_pattern *next_family; 258 haiku_font_family_or_style family; 259 haiku_font_family_or_style style; 260 int weight; 261 int mono_spacing_p; 262 int want_chars_len; 263 int need_one_of_len; 264 enum haiku_font_slant slant; 265 enum haiku_font_width width; 266 enum haiku_font_language language; 267 uint32_t *wanted_chars; 268 uint32_t *need_one_of; 269 270 int oblique_seen_p; 271 }; 272 273 struct haiku_scroll_bar_value_event 274 { 275 void *scroll_bar; 276 int position; 277 }; 278 279 struct haiku_scroll_bar_drag_event 280 { 281 void *scroll_bar; 282 int dragging_p; 283 }; 284 285 struct haiku_menu_bar_resize_event 286 { 287 void *window; 288 int width; 289 int height; 290 }; 291 292 struct haiku_menu_bar_state_event 293 { 294 void *window; 295 }; 296 297 #define HAIKU_THIN 0 298 #define HAIKU_ULTRALIGHT 20 299 #define HAIKU_EXTRALIGHT 40 300 #define HAIKU_LIGHT 50 301 #define HAIKU_SEMI_LIGHT 75 302 #define HAIKU_REGULAR 100 303 #define HAIKU_SEMI_BOLD 180 304 #define HAIKU_BOLD 200 305 #define HAIKU_EXTRA_BOLD 205 306 #define HAIKU_ULTRA_BOLD 210 307 #define HAIKU_BOOK 400 308 #define HAIKU_HEAVY 800 309 #define HAIKU_ULTRA_HEAVY 900 310 #define HAIKU_BLACK 1000 311 #define HAIKU_MEDIUM 2000 312 313 #ifdef __cplusplus 314 extern "C" 315 { 316 #endif 317 #include <pthread.h> 318 #include <OS.h> 319 320 #ifdef __cplusplus 321 typedef void *haiku; 322 323 extern void 324 haiku_put_pixel (haiku bitmap, int x, int y, unsigned long pixel); 325 326 extern unsigned long 327 haiku_get_pixel (haiku bitmap, int x, int y); 328 #endif 329 330 extern port_id port_application_to_emacs; 331 332 extern void haiku_io_init (void); 333 extern void haiku_io_init_in_app_thread (void); 334 335 extern void 336 haiku_read_size (ssize_t *len); 337 338 extern int 339 haiku_read (enum haiku_event_type *type, void *buf, ssize_t len); 340 341 extern int 342 haiku_read_with_timeout (enum haiku_event_type *type, void *buf, ssize_t len, 343 time_t timeout); 344 345 extern int 346 haiku_write (enum haiku_event_type type, void *buf); 347 348 extern int 349 haiku_write_without_signal (enum haiku_event_type type, void *buf); 350 351 extern void 352 rgb_color_hsl (uint32_t rgb, double *h, double *s, double *l); 353 354 extern void 355 hsl_color_rgb (double h, double s, double l, uint32_t *rgb); 356 357 extern void * 358 BBitmap_new (int width, int height, int mono_p); 359 360 extern void * 361 BBitmap_data (void *bitmap); 362 363 extern int 364 BBitmap_convert (void *bitmap, void **new_bitmap); 365 366 extern void 367 BBitmap_free (void *bitmap); 368 369 extern void 370 BBitmap_dimensions (void *bitmap, int *left, int *top, 371 int *right, int *bottom, int32_t *bytes_per_row, 372 int *mono_p); 373 374 extern void * 375 BApplication_setup (void); 376 377 extern void * 378 BWindow_new (void *view); 379 380 extern void 381 BWindow_quit (void *window); 382 383 extern void 384 BWindow_set_offset (void *window, int x, int y); 385 386 extern void 387 BWindow_iconify (void *window); 388 389 extern void 390 BWindow_set_visible (void *window, int visible_p); 391 392 extern void 393 BFont_close (void *font); 394 395 extern void 396 BFont_dat (void *font, int *px_size, int *min_width, int *max_width, 397 int *avg_width, int *height, int *space_width, int *ascent, 398 int *descent, int *underline_position, int *underline_thickness); 399 400 extern int 401 BFont_have_char_p (void *font, int32_t chr); 402 403 extern int 404 BFont_have_char_block (void *font, int32_t beg, int32_t end); 405 406 extern void 407 BFont_char_bounds (void *font, const char *mb_str, int *advance, 408 int *lb, int *rb); 409 410 extern void 411 BFont_nchar_bounds (void *font, const char *mb_str, int *advance, 412 int *lb, int *rb, int32_t n); 413 414 extern void 415 BWindow_retitle (void *window, const char *title); 416 417 extern void 418 BWindow_resize (void *window, int width, int height); 419 420 extern void 421 BWindow_activate (void *window); 422 423 extern void 424 BView_StartClip (void *view); 425 426 extern void 427 BView_EndClip (void *view); 428 429 extern void 430 BView_SetHighColor (void *view, uint32_t color); 431 432 extern void 433 BView_SetHighColorForVisibleBell (void *view, uint32_t color); 434 435 extern void 436 BView_FillRectangleForVisibleBell (void *view, int x, int y, int width, 437 int height); 438 439 extern void 440 BView_SetLowColor (void *view, uint32_t color); 441 442 extern void 443 BView_SetPenSize (void *view, int u); 444 445 extern void 446 BView_SetFont (void *view, void *font); 447 448 extern void 449 BView_MovePenTo (void *view, int x, int y); 450 451 extern void 452 BView_DrawString (void *view, const char *chr, ptrdiff_t len); 453 454 extern void 455 BView_DrawChar (void *view, char chr); 456 457 extern void 458 BView_FillRectangle (void *view, int x, int y, int width, int height); 459 460 extern void 461 BView_FillRectangleAbs (void *view, int x, int y, int x1, int y1); 462 463 extern void 464 BView_FillTriangle (void *view, int x1, int y1, 465 int x2, int y2, int x3, int y3); 466 467 extern void 468 BView_StrokeRectangle (void *view, int x, int y, int width, int height); 469 470 extern void 471 BView_SetViewColor (void *view, uint32_t color); 472 473 extern void 474 BView_ClipToRect (void *view, int x, int y, int width, int height); 475 476 extern void 477 BView_ClipToInverseRect (void *view, int x, int y, int width, int height); 478 479 extern void 480 BView_StrokeLine (void *view, int sx, int sy, int tx, int ty); 481 482 extern void 483 BView_CopyBits (void *view, int x, int y, int width, int height, 484 int tox, int toy, int towidth, int toheight); 485 486 extern void 487 BView_DrawBitmap (void *view, void *bitmap, int x, int y, 488 int width, int height, int vx, int vy, int vwidth, 489 int vheight); 490 491 extern void 492 BView_DrawBitmapWithEraseOp (void *view, void *bitmap, int x, 493 int y, int width, int height); 494 495 extern void 496 BView_DrawMask (void *src, void *view, 497 int x, int y, int width, int height, 498 int vx, int vy, int vwidth, int vheight, 499 uint32_t color); 500 501 extern void * 502 BBitmap_transform_bitmap (void *bitmap, void *mask, uint32_t m_color, 503 double rot, int desw, int desh); 504 505 extern void 506 BScreen_px_dim (int *width, int *height); 507 508 extern void 509 BView_resize_to (void *view, int width, int height); 510 511 /* Functions for creating and freeing cursors. */ 512 extern void * 513 BCursor_create_default (void); 514 515 extern void * 516 BCursor_from_id (enum haiku_cursor cursor); 517 518 extern void * 519 BCursor_create_modeline (void); 520 521 extern void * 522 BCursor_create_i_beam (void); 523 524 extern void * 525 BCursor_create_progress_cursor (void); 526 527 extern void * 528 BCursor_create_grab (void); 529 530 extern void 531 BCursor_delete (void *cursor); 532 533 extern void 534 BView_set_view_cursor (void *view, void *cursor); 535 536 extern void 537 BWindow_Flush (void *window); 538 539 extern void 540 BMapKey (uint32_t kc, int *non_ascii_p, unsigned *code); 541 542 extern void * 543 BScrollBar_make_for_view (void *view, int horizontal_p, 544 int x, int y, int x1, int y1, 545 void *scroll_bar_ptr); 546 547 extern void 548 BScrollBar_delete (void *sb); 549 550 extern void 551 BView_move_frame (void *view, int x, int y, int x1, int y1); 552 553 extern void 554 BView_scroll_bar_update (void *sb, int portion, int whole, int position); 555 556 extern int 557 BScrollBar_default_size (int horizontal_p); 558 559 extern void 560 BView_invalidate (void *view); 561 562 extern void 563 BView_draw_lock (void *view); 564 565 extern void 566 BView_draw_unlock (void *view); 567 568 extern void 569 BWindow_center_on_screen (void *window); 570 571 extern void 572 BView_mouse_moved (void *view, int x, int y, uint32_t transit); 573 574 extern void 575 BView_mouse_down (void *view, int x, int y); 576 577 extern void 578 BView_mouse_up (void *view, int x, int y); 579 580 extern void 581 BBitmap_import_mono_bits (void *bitmap, void *bits, int wd, int h); 582 583 extern void 584 haiku_font_pattern_free (struct haiku_font_pattern *pt); 585 586 extern struct haiku_font_pattern * 587 BFont_find (struct haiku_font_pattern *pt); 588 589 extern int 590 BFont_open_pattern (struct haiku_font_pattern *pat, void **font, float size); 591 592 extern void 593 BFont_populate_fixed_family (struct haiku_font_pattern *ptn); 594 595 extern void 596 BFont_populate_plain_family (struct haiku_font_pattern *ptn); 597 598 extern void 599 BView_publish_scroll_bar (void *view, int x, int y, int width, int height); 600 601 extern void 602 BView_forget_scroll_bar (void *view, int x, int y, int width, int height); 603 604 extern void 605 BView_get_mouse (void *view, int *x, int *y); 606 607 extern void 608 BView_convert_to_screen (void *view, int *x, int *y); 609 610 extern void 611 BView_convert_from_screen (void *view, int *x, int *y); 612 613 extern void 614 BWindow_change_decoration (void *window, int decorate_p); 615 616 extern void 617 BWindow_set_tooltip_decoration (void *window); 618 619 extern void 620 BWindow_set_avoid_focus (void *window, int avoid_focus_p); 621 622 extern void 623 BView_emacs_delete (void *view); 624 625 extern uint32_t 626 haiku_current_workspace (void); 627 628 extern uint32_t 629 BWindow_workspaces (void *window); 630 631 extern void * 632 BPopUpMenu_new (const char *name); 633 634 extern void 635 BMenu_add_item (void *menu, const char *label, void *ptr, bool enabled_p, 636 bool marked_p, bool mbar_p, void *mbw_ptr, const char *key, 637 const char *help); 638 639 extern void 640 BMenu_add_separator (void *menu); 641 642 extern void * 643 BMenu_new_submenu (void *menu, const char *label, bool enabled_p); 644 645 extern void * 646 BMenu_new_menu_bar_submenu (void *menu, const char *label); 647 648 extern int 649 BMenu_count_items (void *menu); 650 651 extern void * 652 BMenu_item_at (void *menu, int idx); 653 654 extern void * 655 BMenu_run (void *menu, int x, int y); 656 657 extern void 658 BPopUpMenu_delete (void *menu); 659 660 extern void * 661 BMenuBar_new (void *view); 662 663 extern void 664 BMenu_delete_all (void *menu); 665 666 extern void 667 BMenuBar_delete (void *menubar); 668 669 extern void 670 BMenu_item_set_label (void *item, const char *label); 671 672 extern void * 673 BMenu_item_get_menu (void *item); 674 675 extern void 676 BMenu_delete_from (void *menu, int start, int count); 677 678 extern void 679 haiku_ring_bell (void); 680 681 extern void * 682 BAlert_new (const char *text, enum haiku_alert_type type); 683 684 extern void * 685 BAlert_add_button (void *alert, const char *text); 686 687 extern int32_t 688 BAlert_go (void *alert); 689 690 extern void 691 BButton_set_enabled (void *button, int enabled_p); 692 693 extern void 694 BView_set_tooltip (void *view, const char *tooltip); 695 696 extern void 697 BAlert_delete (void *alert); 698 699 extern void 700 BScreen_res (double *rrsx, double *rrsy); 701 702 extern void 703 EmacsWindow_parent_to (void *window, void *other_window); 704 705 extern void 706 EmacsWindow_unparent (void *window); 707 708 extern int 709 BFont_string_width (void *font, const char *utf8); 710 711 extern void 712 be_get_version_string (char *version, int len); 713 714 extern int 715 be_get_display_planes (void); 716 717 extern int 718 be_get_display_color_cells (void); 719 720 extern void 721 be_warp_pointer (int x, int y); 722 723 extern void 724 EmacsWindow_move_weak_child (void *window, void *child, int xoff, int yoff); 725 726 extern void 727 EmacsView_set_up_double_buffering (void *vw); 728 729 extern void 730 EmacsView_disable_double_buffering (void *vw); 731 732 extern void 733 EmacsView_flip_and_blit (void *vw); 734 735 extern int 736 EmacsView_double_buffered_p (void *vw); 737 738 extern char * 739 be_popup_file_dialog (int open_p, const char *default_dir, int must_match_p, 740 int dir_only_p, void *window, const char *save_text, 741 const char *prompt, 742 void (*block_input_function) (void), 743 void (*unblock_input_function) (void)); 744 745 extern void 746 record_c_unwind_protect_from_cxx (void (*) (void *), void *); 747 748 extern ptrdiff_t 749 c_specpdl_idx_from_cxx (void); 750 751 extern void 752 c_unbind_to_nil_from_cxx (ptrdiff_t idx); 753 754 extern void 755 EmacsView_do_visible_bell (void *view, uint32_t color); 756 757 extern void 758 BWindow_zoom (void *window); 759 760 extern void 761 EmacsWindow_make_fullscreen (void *window, int fullscreen_p); 762 763 extern void 764 EmacsWindow_unzoom (void *window); 765 766 #ifdef HAVE_NATIVE_IMAGE_API 767 extern int 768 be_can_translate_type_to_bitmap_p (const char *mime); 769 770 extern void * 771 be_translate_bitmap_from_file_name (const char *filename); 772 773 extern void * 774 be_translate_bitmap_from_memory (const void *buf, size_t bytes); 775 #endif 776 777 extern void 778 BMenuBar_start_tracking (void *mbar); 779 780 extern size_t 781 BBitmap_bytes_length (void *bitmap); 782 783 extern void 784 BView_show_tooltip (void *view); 785 786 #ifdef USE_BE_CAIRO 787 extern cairo_surface_t * 788 EmacsView_cairo_surface (void *view); 789 790 extern void 791 BView_cr_dump_clipping (void *view, cairo_t *ctx); 792 793 extern void 794 EmacsWindow_begin_cr_critical_section (void *window); 795 796 extern void 797 EmacsWindow_end_cr_critical_section (void *window); 798 #endif 799 800 extern void 801 BView_set_and_show_sticky_tooltip (void *view, const char *tooltip, 802 int x, int y); 803 804 extern void 805 BMenu_add_title (void *menu, const char *text); 806 807 extern int 808 be_plain_font_height (void); 809 810 extern int 811 be_string_width_with_plain_font (const char *str); 812 813 extern int 814 be_get_display_screens (void); 815 816 extern void 817 BWindow_set_min_size (void *window, int width, int height); 818 819 extern void 820 BWindow_set_size_alignment (void *window, int align_width, int align_height); 821 822 extern void 823 BWindow_sync (void *window); 824 825 #ifdef __cplusplus 826 extern void * 827 find_appropriate_view_for_draw (void *vw); 828 } 829 830 extern _Noreturn void 831 gui_abort (const char *msg); 832 #endif /* _cplusplus */ 833 834 /* Borrowed from X.Org keysymdef.h */ 835 #define XK_BackSpace 0xff08 /* Back space, back char */ 836 #define XK_Tab 0xff09 837 #define XK_Linefeed 0xff0a /* Linefeed, LF */ 838 #define XK_Clear 0xff0b 839 #define XK_Return 0xff0d /* Return, enter */ 840 #define XK_Pause 0xff13 /* Pause, hold */ 841 #define XK_Scroll_Lock 0xff14 842 #define XK_Sys_Req 0xff15 843 #define XK_Escape 0xff1b 844 #define XK_Delete 0xffff /* Delete, rubout */ 845 #define XK_Home 0xff50 846 #define XK_Left 0xff51 /* Move left, left arrow */ 847 #define XK_Up 0xff52 /* Move up, up arrow */ 848 #define XK_Right 0xff53 /* Move right, right arrow */ 849 #define XK_Down 0xff54 /* Move down, down arrow */ 850 #define XK_Prior 0xff55 /* Prior, previous */ 851 #define XK_Page_Up 0xff55 852 #define XK_Next 0xff56 /* Next */ 853 #define XK_Page_Down 0xff56 854 #define XK_End 0xff57 /* EOL */ 855 #define XK_Begin 0xff58 /* BOL */ 856 #define XK_Select 0xff60 /* Select, mark */ 857 #define XK_Print 0xff61 858 #define XK_Execute 0xff62 /* Execute, run, do */ 859 #define XK_Insert 0xff63 /* Insert, insert here */ 860 #define XK_Undo 0xff65 861 #define XK_Redo 0xff66 /* Redo, again */ 862 #define XK_Menu 0xff67 863 #define XK_Find 0xff68 /* Find, search */ 864 #define XK_Cancel 0xff69 /* Cancel, stop, abort, exit */ 865 #define XK_Help 0xff6a /* Help */ 866 #define XK_Break 0xff6b 867 #define XK_Mode_switch 0xff7e /* Character set switch */ 868 #define XK_script_switch 0xff7e /* Alias for mode_switch */ 869 #define XK_Num_Lock 0xff7f 870 #define XK_F1 0xffbe 871 872 #endif /* _HAIKU_SUPPORT_H_ */ 873