summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Huddleston <jeremyhu@apple.com>2012-03-26 14:22:54 -0700
committerJeremy Huddleston <jeremyhu@apple.com>2012-03-26 14:22:54 -0700
commit30ee94cd994e9d7be014cd1ec71855191bb78731 (patch)
tree0159358c3a7318d29c114ea338d675ca6ce849b0
parent3429c15790d139e94dcadab8f79803fe2e11e89c (diff)
Formatting changes using uncrustify
indent butchers Objective C, so use this uncrustify config for consistent formatting: tok_split_gte=false utf8_byte=true utf8_force=true indent_cmt_with_tabs=false indent_align_string=false indent_braces=false indent_braces_no_func=false indent_braces_no_class=false indent_braces_no_struct=false indent_brace_parent=false indent_namespace=false indent_extern=false indent_class=false indent_class_colon=false indent_else_if=false indent_var_def_cont=false indent_func_call_param=false indent_func_def_param=false indent_func_proto_param=false indent_func_class_param=false indent_func_ctor_var_param=false indent_template_param=false indent_func_param_double=false indent_relative_single_line_comments=false indent_col1_comment=false indent_access_spec_body=false indent_paren_nl=false indent_comma_paren=false indent_bool_paren=false indent_first_bool_expr=false indent_square_nl=false indent_preserve_sql=false indent_align_assign=true sp_balance_nested_parens=false align_keep_tabs=false align_with_tabs=false align_on_tabstop=false align_number_left=false align_func_params=false align_same_func_call_params=false align_var_def_colon=true align_var_def_attribute=true align_var_def_inline=true align_right_cmt_mix=false align_on_operator=false align_mix_var_proto=false align_single_line_func=false align_single_line_brace=false align_nl_cont=false align_left_shift=true align_oc_decl_colon=true nl_collapse_empty_body=true nl_assign_leave_one_liners=true nl_class_leave_one_liners=true nl_enum_leave_one_liners=true nl_getset_leave_one_liners=true nl_func_leave_one_liners=true nl_if_leave_one_liners=true nl_multi_line_cond=false nl_multi_line_define=false nl_before_case=true nl_after_case=true nl_after_return=false nl_after_semicolon=true nl_after_brace_open=true nl_after_brace_open_cmt=false nl_after_vbrace_open=false nl_after_vbrace_open_empty=false nl_after_brace_close=false nl_after_vbrace_close=false nl_define_macro=false nl_squeeze_ifdef=false nl_ds_struct_enum_cmt=false nl_ds_struct_enum_close_brace=false nl_create_if_one_liner=false nl_create_for_one_liner=false nl_create_while_one_liner=false ls_for_split_full=false ls_func_split_full=false nl_after_multiline_comment=false eat_blanks_after_open_brace=false eat_blanks_before_close_brace=false mod_full_brace_if_chain=false mod_pawn_semicolon=false mod_full_paren_if_bool=false mod_remove_extra_semicolon=false mod_sort_import=false mod_sort_using=false mod_sort_include=false mod_move_case_break=false mod_remove_empty_return=false cmt_indent_multi=true cmt_c_group=false cmt_c_nl_start=false cmt_c_nl_end=false cmt_cpp_group=false cmt_cpp_nl_start=false cmt_cpp_nl_end=false cmt_cpp_to_c=false cmt_star_cont=false cmt_multi_check_last=true cmt_insert_before_preproc=false pp_indent_at_level=false pp_region_indent_code=false pp_if_indent_code=false pp_define_at_level=false indent_columns=4 indent_brace=0 indent_switch_case=0 align_struct_init_span=2 align_pp_define_gap=0 align_pp_define_span=2 align_oc_msg_colon_span=16 nl_end_of_file_min=1 nl_func_var_def_blk=0 code_width=78 nl_max=2 newlines=auto indent_with_tabs=0 sp_arith=force sp_assign=force sp_assign_default=force sp_before_assign=force sp_after_assign=force sp_enum_assign=force sp_enum_before_assign=force sp_enum_after_assign=force sp_pp_stringify=add sp_bool=force sp_compare=force sp_inside_paren=remove sp_paren_paren=remove sp_paren_brace=force sp_before_ptr_star=ignore sp_before_unnamed_ptr_star=force sp_before_byref=force sp_before_unnamed_byref=force sp_after_byref=remove sp_after_type=force sp_before_sparen=force sp_inside_sparen=remove sp_inside_sparen_close=remove sp_after_sparen=force sp_sparen_brace=force sp_special_semi=force sp_before_semi=remove sp_after_semi=force sp_after_semi_for=force sp_after_semi_for_empty=remove sp_before_square=remove sp_inside_square=remove sp_after_comma=force sp_before_comma=remove sp_paren_comma=force sp_before_ellipsis=force sp_after_class_colon=force sp_before_class_colon=force sp_before_case_colon=remove sp_after_cast=remove sp_inside_paren_cast=remove sp_sizeof_paren=remove sp_inside_braces_enum=force sp_inside_braces_struct=force sp_inside_braces=force sp_inside_braces_empty=remove sp_func_proto_paren=remove sp_func_def_paren=remove sp_inside_fparens=remove sp_inside_fparen=remove sp_square_fparen=remove sp_fparen_brace=force sp_func_call_paren=remove sp_func_call_paren_empty=remove sp_return_paren=force sp_attribute_paren=remove sp_defined_paren=remove sp_macro=force sp_macro_func=force sp_else_brace=force sp_brace_else=force sp_brace_typedef=force sp_not=remove sp_inv=remove nl_start_of_file=remove nl_end_of_file=force nl_assign_square=remove nl_after_square_assign=remove nl_fcall_brace=remove nl_enum_brace=remove nl_struct_brace=remove nl_union_brace=remove nl_if_brace=remove nl_brace_else=force nl_elseif_brace=remove nl_else_brace=remove nl_else_if=remove nl_for_brace=remove nl_do_brace=remove nl_brace_while=remove nl_switch_brace=remove nl_case_colon_brace=force nl_func_type_name=force nl_func_type_name_class=force nl_func_proto_type_name=force nl_func_paren=remove nl_func_def_paren=remove nl_func_decl_start=remove nl_func_def_start=remove nl_func_decl_args=remove nl_func_decl_end=remove nl_func_def_end=remove nl_func_decl_end_single=remove nl_func_def_end_single=remove nl_func_decl_empty=remove nl_func_def_empty=remove nl_fdef_brace=force nl_return_expr=remove nl_before_if=ignore nl_after_if=ignore nl_before_for=ignore nl_after_for=ignore nl_before_while=ignore nl_after_while=ignore nl_before_switch=ignore nl_after_switch=ignore nl_before_do=ignore nl_after_do=ignore pp_space=remove Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
-rw-r--r--include/xcwm/event.h23
-rw-r--r--include/xcwm/xcwm.h2
-rw-r--r--include/xcwm/xtoq.h78
-rw-r--r--src/libxcwm/context_list.c2
-rw-r--r--src/libxcwm/event_loop.c124
-rw-r--r--src/libxcwm/init.c54
-rw-r--r--src/libxcwm/input.c80
-rw-r--r--src/libxcwm/util.c33
-rw-r--r--src/libxcwm/window.c104
-rw-r--r--src/libxcwm/xcwm.c68
-rw-r--r--src/libxcwm/xcwm_internal.h89
-rw-r--r--src/xtoq/XtoqApplication.h50
-rw-r--r--src/xtoq/XtoqApplication.m128
-rw-r--r--src/xtoq/XtoqController.h101
-rw-r--r--src/xtoq/XtoqController.m512
-rw-r--r--src/xtoq/XtoqImageRep.h9
-rw-r--r--src/xtoq/XtoqImageRep.m125
-rw-r--r--src/xtoq/XtoqView.h46
-rw-r--r--src/xtoq/XtoqView.m154
-rw-r--r--src/xtoq/XtoqWindow.h46
-rw-r--r--src/xtoq/XtoqWindow.m94
-rw-r--r--src/xtoq/keymap.c838
-rw-r--r--src/xtoq/keymap.h18
-rw-r--r--src/xtoq/keysym2ucs.c1622
-rw-r--r--src/xtoq/keysym2ucs.h6
-rw-r--r--src/xtoq/main.m3
26 files changed, 2323 insertions, 2086 deletions
diff --git a/include/xcwm/event.h b/include/xcwm/event.h
index 4957845..f10fece 100644
--- a/include/xcwm/event.h
+++ b/include/xcwm/event.h
@@ -32,26 +32,27 @@
/* Abstract types for xcwm data types */
struct xcwm_event_t;
-
typedef struct xcwm_event_t xcwm_event_t;
-typedef void (*xcwm_event_cb_t) (xcwm_event_t const *event);
+typedef void (*xcwm_event_cb_t)(xcwm_event_t const *event);
/* Event types */
-#define XTOQ_DAMAGE 0
-#define XTOQ_EXPOSE 1
-#define XTOQ_CREATE 2
+#define XTOQ_DAMAGE 0
+#define XTOQ_EXPOSE 1
+#define XTOQ_CREATE 2
#define XTOQ_DESTROY 3
/**
* Return the event type for the given event.
*/
-int xcwm_event_get_type(xcwm_event_t const *event);
+int
+xcwm_event_get_type(xcwm_event_t const *event);
/**
* Return the context for the given event.
*/
-xcwm_context_t *xcwm_event_get_context(xcwm_event_t const *event);
+xcwm_context_t *
+xcwm_event_get_context(xcwm_event_t const *event);
/**
* Starts the event loop and listens on the connection specified in
@@ -66,7 +67,7 @@ xcwm_context_t *xcwm_event_get_context(xcwm_event_t const *event);
* the return value.
*/
int
- xcwm_start_event_loop(xcwm_context_t * context, xcwm_event_cb_t callback);
+xcwm_start_event_loop(xcwm_context_t *context, xcwm_event_cb_t callback);
/**
* Request a lock on the mutex for the event loop thread. Blocks
@@ -74,13 +75,13 @@ int
* @return 0 if successful, otherwise non-zero
*/
int
- xcwm_get_event_thread_lock(void);
+xcwm_get_event_thread_lock(void);
/**
* Release the lock on the mutex for the event loop thread.
* @return 0 if successsful, otherwise non-zero
*/
int
- xcwm_release_event_thread_lock(void);
+xcwm_release_event_thread_lock(void);
-#endif /* _XCWM_EVENT_H_ */
+#endif /* _XCWM_EVENT_H_ */
diff --git a/include/xcwm/xcwm.h b/include/xcwm/xcwm.h
index 2a08eda..bdafbcd 100644
--- a/include/xcwm/xcwm.h
+++ b/include/xcwm/xcwm.h
@@ -33,4 +33,4 @@
#include <xcwm/xtoq.h>
#include <xcwm/event.h>
-#endif /* _XCWM_XCWM_H_ */
+#endif /* _XCWM_XCWM_H_ */
diff --git a/include/xcwm/xtoq.h b/include/xcwm/xtoq.h
index 80b681a..bc0927b 100644
--- a/include/xcwm/xtoq.h
+++ b/include/xcwm/xtoq.h
@@ -60,18 +60,16 @@ struct xcwm_context_t {
int damaged_y;
int damaged_width;
int damaged_height;
- char *name; /* The name of the window */
- int wm_delete_set; /* Flag for WM_DELETE_WINDOW, 1 if set */
- void *local_data; /* Area for data client cares about */
+ char *name; /* The name of the window */
+ int wm_delete_set; /* Flag for WM_DELETE_WINDOW, 1 if set */
+ void *local_data; /* Area for data client cares about */
};
-
typedef struct xcwm_context_t xcwm_context_t;
struct image_data_t {
uint8_t *data;
int length;
};
-
typedef struct image_data_t image_data_t;
struct xcwm_image_t {
@@ -81,7 +79,6 @@ struct xcwm_image_t {
int width;
int height;
};
-
typedef struct xcwm_image_t xcwm_image_t;
/**
@@ -97,15 +94,17 @@ extern xcwm_context_t *root_context;
* @param display the display to connect to
* @return The root context which contains the root window
*/
-xcwm_context_t *xcwm_init(char *display);
+xcwm_context_t *
+xcwm_init(char *display);
/**
* Returns a window's entire image
- * @param an xcwm_context_t
+ * @param an xcwm_context_t
* FIXME: this might be for the root window
* @return an xcwm_image_t with an the image of a window
*/
-xcwm_image_t *xcwm_get_image(xcwm_context_t * context);
+xcwm_image_t *
+xcwm_get_image(xcwm_context_t *context);
/**
* Intended for servicing to a client's reaction to a damage notification
@@ -113,125 +112,123 @@ xcwm_image_t *xcwm_get_image(xcwm_context_t * context);
* @param an xcwm_context_t of the damaged window
* @return an xcwm_image_t with partial image window contents
*/
-xcwm_image_t *test_xcwm_get_image(xcwm_context_t * context);
+xcwm_image_t *
+test_xcwm_get_image(xcwm_context_t * context);
/**
- * free the memory used by an xcwm_image_t created
+ * free the memory used by an xcwm_image_t created
* during a call to test_xcwm_image_create
* @param xcwm_image an image to be freed
*/
void
- xcwm_image_destroy(xcwm_image_t * xcwm_image);
+xcwm_image_destroy(xcwm_image_t * xcwm_image);
/**
* Set input focus to the window in context
* @param context The context containing the window
*/
void
- xcwm_set_input_focus(xcwm_context_t * context);
+xcwm_set_input_focus(xcwm_context_t *context);
/**
* Set a window to the bottom of the window stack.
* @param context The context containing the window
*/
void
- xcwm_set_window_to_bottom(xcwm_context_t * context);
+xcwm_set_window_to_bottom(xcwm_context_t *context);
/**
* Set a window to the top of the window stack.
* @param context The context containing the window
*/
void
- xcwm_set_window_to_top(xcwm_context_t * context);
+xcwm_set_window_to_top(xcwm_context_t *context);
/**
* Remove the damage from the given context.
* @param context The context to remove the damage from
*/
void
- xcwm_remove_context_damage(xcwm_context_t * context);
+xcwm_remove_context_damage(xcwm_context_t *context);
/**
* Closes the windows open on the X Server, the connection, and the event
- * loop.
+ * loop.
*/
void
- xcwm_close(void);
+xcwm_close(void);
/**
* function
- * @param context xcwm_context_t
+ * @param context xcwm_context_t
* @param window The window that the key press was made in.
* @param keyCode The key pressed.
*/
void
- xcwm_key_press(xcwm_context_t * context, int window, uint8_t code);
+xcwm_key_press(xcwm_context_t *context, int window, uint8_t code);
/**
* function
- * @param context xcwm_context_t
+ * @param context xcwm_context_t
* @param window The window that the key press was made in.
* @param keyCode The key released.
*/
void
- xcwm_key_release(xcwm_context_t * context, int window, uint8_t code);
+xcwm_key_release(xcwm_context_t *context, int window, uint8_t code);
/**
* Uses the XTEST protocol to send input events to the X Server (The X Server
* is usually in the position of sending input events to a client). The client
- * will often choose to send coordinates through mouse motion and set the params
+ * will often choose to send coordinates through mouse motion and set the params
* x & y to 0 here.
- * @param context xcwm_context_t
+ * @param context xcwm_context_t
* @param x - x coordinate
* @param y - y coordinate
* @param window The window that the key press was made in.
*/
void
-
-xcwm_button_press(xcwm_context_t * context, long x, long y, int window,
+xcwm_button_press(xcwm_context_t *context, long x, long y, int window,
int button);
/**
* Uses the XTEST protocol to send input events to the X Server (The X Server
* is usually in the position of sending input events to a client). The client
- * will often choose to send coordinates through mouse motion and set the params
+ * will often choose to send coordinates through mouse motion and set the params
* x & y to 0 here.
- * @param context xcwm_context_t
+ * @param context xcwm_context_t
* @param x - x coordinate
* @param y - y coordinate
* @param window The window that the key release was made in.
*/
void
-
-xcwm_button_release(xcwm_context_t * context, long x, long y, int window,
+xcwm_button_release(xcwm_context_t *context, long x, long y, int window,
int button);
/**
* function
- * @param context xcwm_context_t
+ * @param context xcwm_context_t
* @param x - x coordinate
* @param y - y coordinate
* @param window The window that the key release was made in.
*/
void
-
-xcwm_mouse_motion(xcwm_context_t * context, long x, long y, int window,
+xcwm_mouse_motion(xcwm_context_t *context, long x, long y, int window,
int button);
/****************
- * window.c
- ****************/
+* window.c
+****************/
/**
- * kill the window, if possible using WM_DELETE_WINDOW (icccm)
+ * kill the window, if possible using WM_DELETE_WINDOW (icccm)
* otherwise using xcb_kill_client.
* @param context The context of the window to be killed
*/
void
- xcwm_request_close(xcwm_context_t * context);
+xcwm_request_close(xcwm_context_t *context);
/**
- * move and/or resize the window, update the context
+ * move and/or resize the window, update the context
* @param context the context of the window to configure
* @param x The new x coordinate
* @param y The new y coordinate
@@ -239,8 +236,7 @@ void
* @param width The new width
*/
void
-
-xcwm_configure_window(xcwm_context_t * context, int x, int y, int height,
+xcwm_configure_window(xcwm_context_t *context, int x, int y, int height,
int width);
-#endif // _XTOQ_H_
+#endif // _XTOQ_H_
diff --git a/src/libxcwm/context_list.c b/src/libxcwm/context_list.c
index 702f395..8a4e004 100644
--- a/src/libxcwm/context_list.c
+++ b/src/libxcwm/context_list.c
@@ -36,9 +36,7 @@ _xcwm_add_context_t(struct xcwm_context_t *context)
{
/* temp pointers for traversing */
_xcwm_context_node *new_node;
-
_xcwm_context_node *curr;
-
_xcwm_context_node *prev;
/* Create node to hold the new window */
diff --git a/src/libxcwm/event_loop.c b/src/libxcwm/event_loop.c
index afa6fb5..e057fb2 100644
--- a/src/libxcwm/event_loop.c
+++ b/src/libxcwm/event_loop.c
@@ -47,7 +47,8 @@ pthread_mutex_t _event_thread_lock;
/* Functions only called within event_loop.c */
void
-*run_event_loop(void *thread_arg_struct);
+*
+run_event_loop(void *thread_arg_struct);
/* Functions included in xcwm.h */
int
@@ -65,12 +66,11 @@ xcwm_release_event_thread_lock(void)
/* Functions included in xcwm_internal.h */
int
-_xcwm_start_event_loop(xcb_connection_t * conn, xcwm_event_cb_t event_callback)
+_xcwm_start_event_loop(xcb_connection_t *conn,
+ xcwm_event_cb_t event_callback)
{
_connection_data *conn_data;
-
int ret_val;
-
int oldstate;
conn_data = malloc(sizeof(_connection_data));
@@ -82,7 +82,9 @@ _xcwm_start_event_loop(xcb_connection_t * conn, xcwm_event_cb_t event_callback)
pthread_mutex_init(&_event_thread_lock, NULL);
ret_val = pthread_create(&_event_thread,
- NULL, run_event_loop, (void *) conn_data);
+ NULL,
+ run_event_loop,
+ (void *)conn_data);
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &oldstate);
pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, &oldstate);
@@ -103,13 +105,9 @@ void *
run_event_loop(void *thread_arg_struct)
{
_connection_data *conn_data;
-
xcb_connection_t *event_conn;
-
xcb_generic_event_t *evt;
-
xcwm_event_t *return_evt;
-
xcwm_event_cb_t callback_ptr;
conn_data = thread_arg_struct;
@@ -124,13 +122,10 @@ run_event_loop(void *thread_arg_struct)
while ((evt = xcb_wait_for_event(event_conn))) {
if ((evt->response_type & ~0x80) == _damage_event) {
xcb_damage_notify_event_t *dmgevnt =
- (xcb_damage_notify_event_t *) evt;
+ (xcb_damage_notify_event_t *)evt;
int old_x;
-
int old_y;
-
int old_height;
-
int old_width;
return_evt = malloc(sizeof(xcwm_event_t));
@@ -172,7 +167,8 @@ run_event_loop(void *thread_arg_struct)
return_evt->context->damaged_width = dmgevnt->area.width;
}
if (old_height < dmgevnt->area.height) {
- return_evt->context->damaged_height = dmgevnt->area.height;
+ return_evt->context->damaged_height =
+ dmgevnt->area.height;
}
}
xcwm_release_event_thread_lock();
@@ -188,35 +184,38 @@ run_event_loop(void *thread_arg_struct)
}
else {
switch (evt->response_type & ~0x80) {
- case 0:{
+ case 0:
+ {
/* Error case. Something very bad has happened. Spit
* out some hopefully useful information and then
* die. */
- xcb_generic_error_t *err = (xcb_generic_error_t *) evt;
-
+ xcb_generic_error_t *err = (xcb_generic_error_t *)evt;
fprintf(stderr, "Error received in event loop.\n"
- "Error code: %i\n", err->error_code);
+ "Error code: %i\n",
+ err->error_code);
if ((err->error_code >= XCB_VALUE)
&& (err->error_code <= XCB_FONT)) {
- xcb_value_error_t *val_err = (xcb_value_error_t *) evt;
-
+ xcb_value_error_t *val_err = (xcb_value_error_t *)evt;
fprintf(stderr, "Bad value: %i\n"
"Major opcode: %i\n"
"Minor opcode: %i\n",
val_err->bad_value,
- val_err->major_opcode, val_err->minor_opcode);
+ val_err->major_opcode,
+ val_err->minor_opcode);
}
-/* fprintf(stderr, "Exiting....\n"); */
-/* free(evt); */
+/* fprintf(stderr, "Exiting....\n"); */
+/* free(evt); */
/* exit(1); */
break;
}
- case XCB_EXPOSE:{
- xcb_expose_event_t *exevnt = (xcb_expose_event_t *) evt;
- printf
- ("Window %u exposed. Region to be redrawn at location (%d, %d), ",
- exevnt->window, exevnt->x, exevnt->y);
+ case XCB_EXPOSE:
+ {
+ xcb_expose_event_t *exevnt = (xcb_expose_event_t *)evt;
+
+ printf(
+ "Window %u exposed. Region to be redrawn at location (%d, %d), ",
+ exevnt->window, exevnt->x, exevnt->y);
printf("with dimentions (%d, %d).\n", exevnt->width,
exevnt->height);
@@ -225,16 +224,20 @@ run_event_loop(void *thread_arg_struct)
callback_ptr(return_evt);
break;
}
- case XCB_CREATE_NOTIFY:{
+
+ case XCB_CREATE_NOTIFY:
+ {
/* We don't actually allow our client to create its
* window here, wait until the XCB_MAP_REQUEST */
printf("Got create notify\n");
break;
}
- case XCB_DESTROY_NOTIFY:{
+
+ case XCB_DESTROY_NOTIFY:
+ {
// Window destroyed in root window
xcb_destroy_notify_event_t *notify =
- (xcb_destroy_notify_event_t *) evt;
+ (xcb_destroy_notify_event_t *)evt;
xcwm_context_t *context = _xcwm_destroy_window(notify);
if (!context) {
@@ -250,11 +253,14 @@ run_event_loop(void *thread_arg_struct)
free(context);
break;
}
- case XCB_MAP_REQUEST:{
+
+ case XCB_MAP_REQUEST:
+ {
xcb_map_request_event_t *request =
- (xcb_map_request_event_t *) evt;
+ (xcb_map_request_event_t *)evt;
return_evt = malloc(sizeof(xcwm_event_t));
- return_evt->context = _xcwm_window_created(event_conn, request);
+ return_evt->context = _xcwm_window_created(event_conn,
+ request);
if (!return_evt->context) {
free(return_evt);
break;
@@ -264,54 +270,70 @@ run_event_loop(void *thread_arg_struct)
callback_ptr(return_evt);
break;
}
- case XCB_CONFIGURE_NOTIFY:{
+
+ case XCB_CONFIGURE_NOTIFY:
+ {
break;
}
- case XCB_CONFIGURE_REQUEST:{
+
+ case XCB_CONFIGURE_REQUEST:
+ {
xcb_configure_request_event_t *request =
- (xcb_configure_request_event_t *) evt;
+ (xcb_configure_request_event_t *)evt;
printf("Got configure request: ");
printf("x = %i, y = %i, w = %i, h = %i\n", request->x,
- request->y, request->width, request->height);
+ request->y,
+ request->width,
+ request->height);
/* Change the size of the window, but not its position */
_xcwm_resize_window(event_conn, request->window,
request->width, request->height);
break;
}
- case XCB_KEY_PRESS:{
- printf("X Key press from xserver-");
- xcb_button_press_event_t *kp = (xcb_button_press_event_t *) evt;
+ case XCB_KEY_PRESS:
+ {
+ printf("X Key press from xserver-");
+ xcb_button_press_event_t *kp =
+ (xcb_button_press_event_t *)evt;
printf("Key pressed in window %u detail %c\n",
kp->event, kp->detail);
break;
}
- case XCB_BUTTON_PRESS:{
- printf("X Button press from xserver ");
- xcb_button_press_event_t *bp = (xcb_button_press_event_t *) evt;
+ case XCB_BUTTON_PRESS:
+ {
+ printf("X Button press from xserver ");
+ xcb_button_press_event_t *bp =
+ (xcb_button_press_event_t *)evt;
printf("in window %u, at coordinates (%d,%d)\n",
bp->event, bp->event_x, bp->event_y);
break;
}
- case XCB_BUTTON_RELEASE:{
- printf("X Button release from xserver ");
- xcb_button_press_event_t *bp = (xcb_button_press_event_t *) evt;
+ case XCB_BUTTON_RELEASE:
+ {
+ printf("X Button release from xserver ");
+ xcb_button_press_event_t *bp =
+ (xcb_button_press_event_t *)evt;
printf("in window %u, at coordinates (%d,%d)\n",
bp->event, bp->event_x, bp->event_y);
break;
}
- case XCB_MOTION_NOTIFY:{
- //printf("X mouse motion from from xserver-");
- xcb_button_press_event_t *bp = (xcb_button_press_event_t *) evt;
+ case XCB_MOTION_NOTIFY:
+ {
+ //printf("X mouse motion from from xserver-");
+ xcb_button_press_event_t *bp =
+ (xcb_button_press_event_t *)evt;
// printf ("mouse motion in window %ld, at coordinates (%d,%d)\n",
// bp->event, bp->event_x, bp->event_y );
break;
}
- default:{
+
+ default:
+ {
printf("UNKNOWN EVENT: %i\n", (evt->response_type & ~0x80));
break;
}
diff --git a/src/libxcwm/init.c b/src/libxcwm/init.c
index 70cc5e1..4266034 100644
--- a/src/libxcwm/init.c
+++ b/src/libxcwm/init.c
@@ -35,12 +35,13 @@ int _damage_event = 0;
xcwm_wm_atoms *_wm_atoms = NULL;
xcb_query_extension_reply_t *
-_xcwm_init_extension(xcb_connection_t * conn, char *extension_name)
+_xcwm_init_extension(xcb_connection_t *conn, char *extension_name)
{
xcb_query_extension_cookie_t cookie =
xcb_query_extension(conn, strlen(extension_name), extension_name);
xcb_query_extension_reply_t *reply =
- xcb_query_extension_reply(conn, cookie, NULL);
+ xcb_query_extension_reply(conn, cookie,
+ NULL);
if (!reply->present) {
free(reply);
printf("%s extension not present\n", extension_name);
@@ -54,18 +55,17 @@ _xcwm_init_extension(xcb_connection_t * conn, char *extension_name)
}
void
-_xcwm_init_damage(xcwm_context_t * contxt)
+_xcwm_init_damage(xcwm_context_t *contxt)
{
- xcb_query_extension_reply_t *reply =
- _xcwm_init_extension(contxt->conn, "DAMAGE");
+ xcb_query_extension_reply_t *reply = _xcwm_init_extension(contxt->conn,
+ "DAMAGE");
xcb_damage_query_version_cookie_t version_cookie =
xcb_damage_query_version(contxt->conn,
XCB_DAMAGE_MAJOR_VERSION,
XCB_DAMAGE_MINOR_VERSION);
-
- xcb_damage_query_version_reply_t *version_reply =
+ xcb_damage_query_version_reply_t* version_reply =
xcb_damage_query_version_reply(contxt->conn, version_cookie, NULL);
_damage_event = reply->first_event + XCB_DAMAGE_NOTIFY;
@@ -78,9 +78,9 @@ _xcwm_init_damage(xcwm_context_t * contxt)
// Refer to the Damage Protocol. level = 0 corresponds to the level
// DamageReportRawRectangles. Another level may be more appropriate.
uint8_t level = XCB_DAMAGE_REPORT_LEVEL_BOUNDING_BOX;
-
xcb_void_cookie_t cookie = xcb_damage_create(contxt->conn,
- damage, contxt->window, level);
+ damage, contxt->window,
+ level);
/* Assign this damage object to the roots window's context */
contxt->damage = damage;
@@ -88,14 +88,14 @@ _xcwm_init_damage(xcwm_context_t * contxt)
}
void
-_xcwm_init_composite(xcwm_context_t * contxt)
+_xcwm_init_composite(xcwm_context_t *contxt)
{
- xcb_query_extension_reply_t *reply =
- _xcwm_init_extension(contxt->conn, "Composite");
+ xcb_query_extension_reply_t *reply = _xcwm_init_extension(contxt->conn,
+ "Composite");
- xcb_composite_query_version_cookie_t cookie =
- xcb_composite_query_version(contxt->conn, XCB_COMPOSITE_MAJOR_VERSION,
- XCB_COMPOSITE_MINOR_VERSION);
+ xcb_composite_query_version_cookie_t cookie = xcb_composite_query_version(
+ contxt->conn, XCB_COMPOSITE_MAJOR_VERSION,
+ XCB_COMPOSITE_MINOR_VERSION);
xcb_composite_query_version_reply_t *version_reply =
xcb_composite_query_version_reply(contxt->conn, cookie, NULL);
@@ -109,7 +109,7 @@ _xcwm_init_composite(xcwm_context_t * contxt)
}
void
-_xcwm_init_xfixes(xcwm_context_t * contxt)
+_xcwm_init_xfixes(xcwm_context_t *contxt)
{
xcb_xfixes_query_version_cookie_t cookie =
xcb_xfixes_query_version(contxt->conn, 4, 0);
@@ -121,19 +121,22 @@ _xcwm_init_xfixes(xcwm_context_t * contxt)
}
void
-_xcwm_get_wm_atoms(xcwm_context_t * context)
+_xcwm_get_wm_atoms(xcwm_context_t *context)
{
xcb_intern_atom_reply_t *atom_reply;
-
xcb_intern_atom_cookie_t atom_cookie;
-
xcb_generic_error_t *error;
_wm_atoms = malloc(sizeof(xcwm_wm_atoms));
/* WM_PROTOCOLS */
- atom_cookie = xcb_intern_atom(context->conn, 0, 12, "WM_PROTOCOLS");
- atom_reply = xcb_intern_atom_reply(context->conn, atom_cookie, NULL);
+ atom_cookie = xcb_intern_atom(context->conn,
+ 0,
+ 12,
+ "WM_PROTOCOLS");
+ atom_reply = xcb_intern_atom_reply(context->conn,
+ atom_cookie,
+ NULL);
if (!atom_reply) {
_wm_atoms->wm_protocols_atom = 0;
}
@@ -143,8 +146,13 @@ _xcwm_get_wm_atoms(xcwm_context_t * context)
}
/* WM_DELETE_WINDOW atom */
- atom_cookie = xcb_intern_atom(context->conn, 0, 16, "WM_DELETE_WINDOW");
- atom_reply = xcb_intern_atom_reply(context->conn, atom_cookie, NULL);
+ atom_cookie = xcb_intern_atom(context->conn,
+ 0,
+ 16,
+ "WM_DELETE_WINDOW");
+ atom_reply = xcb_intern_atom_reply(context->conn,
+ atom_cookie,
+ NULL);
if (!atom_reply) {
_wm_atoms->wm_delete_window_atom = 0;
}
diff --git a/src/libxcwm/input.c b/src/libxcwm/input.c
index 99b0a28..064a2dd 100644
--- a/src/libxcwm/input.c
+++ b/src/libxcwm/input.c
@@ -1,22 +1,22 @@
/*Copyright (C) 2012 Aaron Skomra
-
- Permission is hereby granted, free of charge, to any person obtaining a copy of
- this software and associated documentation files (the "Software"), to deal in
- the Software without restriction, including without limitation the rights to
- use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
- of the Software, and to permit persons to whom the Software is furnished to do
- so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in all
- copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- SOFTWARE.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
+ this software and associated documentation files (the "Software"), to deal in
+ the Software without restriction, including without limitation the rights to
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+ of the Software, and to permit persons to whom the Software is furnished to do
+ so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
*/
#ifdef HAVE_CONFIG_H
@@ -29,10 +29,9 @@
#include "xcwm_internal.h"
void
-xcwm_key_press(xcwm_context_t * context, int window, uint8_t code)
+xcwm_key_press(xcwm_context_t *context, int window, uint8_t code)
{
xcb_generic_error_t *err;
-
xcb_void_cookie_t cookie;
xcb_window_t none = { XCB_NONE };
@@ -45,16 +44,15 @@ xcwm_key_press(xcwm_context_t * context, int window, uint8_t code)
free(err);
}
xcb_flush(context->conn);
- printf
- ("xcwm.c received key down - uint8_t '%i', from Mac window #%i to context.window %u\n",
- code, window, context->window);
+ printf(
+ "xcwm.c received key down - uint8_t '%i', from Mac window #%i to context.window %u\n",
+ code, window, context->window);
}
void
-xcwm_key_release(xcwm_context_t * context, int window, uint8_t code)
+xcwm_key_release(xcwm_context_t *context, int window, uint8_t code)
{
xcb_generic_error_t *err;
-
xcb_void_cookie_t cookie;
xcb_window_t none = { XCB_NONE };
@@ -67,39 +65,45 @@ xcwm_key_release(xcwm_context_t * context, int window, uint8_t code)
free(err);
}
xcb_flush(context->conn);
- printf
- ("xcwm.c received key release- uint8_t '%i', from Mac window #%i to context.window %u\n",
- code, window, context->window);
+ printf(
+ "xcwm.c received key release- uint8_t '%i', from Mac window #%i to context.window %u\n",
+ code, window, context->window);
}
void
-xcwm_button_press(xcwm_context_t * context, long x, long y, int window,
+xcwm_button_press(xcwm_context_t *context, long x, long y, int window,
int button)
{
//xcb_window_t none = { XCB_NONE };
xcb_test_fake_input(context->conn, XCB_BUTTON_PRESS, 1, XCB_CURRENT_TIME,
context->window, 0, 0, 0);
xcb_flush(context->conn);
- printf("button down received by xcwm.c - (%ld,%ld) in Mac window #%i\n", x,
- y, window);
+ printf("button down received by xcwm.c - (%ld,%ld) in Mac window #%i\n",
+ x, y,
+ window);
}
void
-xcwm_button_release(xcwm_context_t * context, long x, long y, int window,
+xcwm_button_release(xcwm_context_t *context, long x, long y, int window,
int button)
{
- xcb_test_fake_input(context->conn, XCB_BUTTON_RELEASE, 1, XCB_CURRENT_TIME,
- context->window, 0, 0, 0);
+ xcb_test_fake_input(context->conn, XCB_BUTTON_RELEASE, 1,
+ XCB_CURRENT_TIME,
+ context->window, 0, 0,
+ 0);
xcb_flush(context->conn);
- printf("button release received by xcwm.c - (%ld,%ld) in Mac window #%i\n",
- x, y, window);
+ printf(
+ "button release received by xcwm.c - (%ld,%ld) in Mac window #%i\n",
+ x, y,
+ window);
}
void
-xcwm_mouse_motion(xcwm_context_t * context, long x, long y, int window,
+xcwm_mouse_motion(xcwm_context_t *context, long x, long y, int window,
int button)
{
- xcb_test_fake_input(context->conn, XCB_MOTION_NOTIFY, 0, XCB_CURRENT_TIME, root_context->window //root_context->window//none//context->parent
+ xcb_test_fake_input(context->conn, XCB_MOTION_NOTIFY, 0, XCB_CURRENT_TIME,
+ root_context->window //root_context->window//none//context->parent
, x, y, 0);
xcb_flush(context->conn);
//printf("mouse motion received by xcwm.c - (%ld,%ld) in Mac window #%i\n", x, y, window);
diff --git a/src/libxcwm/util.c b/src/libxcwm/util.c
index ffc6291..27524b7 100644
--- a/src/libxcwm/util.c
+++ b/src/libxcwm/util.c
@@ -31,12 +31,10 @@
#include <xcb/xcb.h>
xcb_get_window_attributes_reply_t *
-_xcwm_get_window_attributes(xcb_connection_t * conn, xcb_window_t window)
+_xcwm_get_window_attributes(xcb_connection_t *conn, xcb_window_t window)
{
xcb_get_window_attributes_reply_t *reply;
-
xcb_generic_error_t *error;
-
xcb_get_window_attributes_cookie_t cookie;
cookie = xcb_get_window_attributes(conn, window);
@@ -50,30 +48,24 @@ _xcwm_get_window_attributes(xcb_connection_t * conn, xcb_window_t window)
}
xcb_get_geometry_reply_t *
-_xcwm_get_window_geometry(xcb_connection_t * conn, xcb_window_t window)
+_xcwm_get_window_geometry(xcb_connection_t *conn, xcb_window_t window)
{
xcb_get_geometry_cookie_t cookie;
-
cookie = xcb_get_geometry(conn, window);
return xcb_get_geometry_reply(conn, cookie, NULL);
}
void
-_xcwm_write_all_children_window_info(xcb_connection_t * conn, xcb_window_t root)
+_xcwm_write_all_children_window_info(xcb_connection_t *conn,
+ xcb_window_t root)
{
xcb_query_tree_reply_t *reply;
-
xcb_query_tree_cookie_t tree_cookie;
-
xcb_window_t *children; /* The children of the given root */
-
image_data_t img_data;
-
xcb_generic_error_t *error;
-
int len;
-
int i;
tree_cookie = xcb_query_tree(conn, root);
@@ -88,7 +80,8 @@ _xcwm_write_all_children_window_info(xcb_connection_t * conn, xcb_window_t root)
children = xcb_query_tree_children(reply);
/* Iterate thorough all the children and get their pixmap (hopefully) */
- printf("--- Iterating through children of window %u ---\n", root);
+ printf("--- Iterating through children of window %u ---\n",
+ root);
for (i = 0; i < len; i++) {
_xcwm_write_window_info(conn, children[i]);
img_data = _xcwm_get_window_image_data(conn, children[i]);
@@ -103,16 +96,12 @@ _xcwm_write_all_children_window_info(xcb_connection_t * conn, xcb_window_t root)
}
image_data_t
-_xcwm_get_window_image_data(xcb_connection_t * conn, xcb_drawable_t window)
+_xcwm_get_window_image_data(xcb_connection_t *conn, xcb_drawable_t window)
{
image_data_t image_data;
-
xcb_get_image_cookie_t img_cookie;
-
xcb_get_image_reply_t *reply;
-
xcb_generic_error_t *error;
-
xcb_get_geometry_reply_t *geom_reply;
image_data.data = NULL;
@@ -130,7 +119,8 @@ _xcwm_get_window_image_data(xcb_connection_t * conn, xcb_drawable_t window)
0,
0,
geom_reply->width,
- geom_reply->height, (unsigned int) ~0L);
+ geom_reply->height,
+ (unsigned int)~0L);
reply = xcb_get_image_reply(conn, img_cookie, &error);
if (error) {
@@ -148,10 +138,9 @@ _xcwm_get_window_image_data(xcb_connection_t * conn, xcb_drawable_t window)
}
void
-_xcwm_write_window_info(xcb_connection_t * conn, xcb_window_t window)
+_xcwm_write_window_info(xcb_connection_t *conn, xcb_window_t window)
{
xcb_get_geometry_reply_t *geom_reply;
-
xcb_get_window_attributes_reply_t *attr_reply;
geom_reply = _xcwm_get_window_geometry(conn, window);
@@ -186,7 +175,7 @@ _xcwm_write_window_info(xcb_connection_t * conn, xcb_window_t window)
}
int
-_xcwm_request_check(xcb_connection_t * conn, xcb_void_cookie_t cookie,
+_xcwm_request_check(xcb_connection_t *conn, xcb_void_cookie_t cookie,
char *msg)
{
xcb_generic_error_t *error;
diff --git a/src/libxcwm/window.c b/src/libxcwm/window.c
index 90d2ba2..b80474f 100644
--- a/src/libxcwm/window.c
+++ b/src/libxcwm/window.c
@@ -34,67 +34,69 @@
/* Sets the WM_* properties we care about in context */
void
- set_icccm_properties(xcwm_context_t * context);
+set_icccm_properties(xcwm_context_t *context);
/* Set the WM_NAME property in context */
void
- set_wm_name_in_context(xcwm_context_t * context);
+set_wm_name_in_context(xcwm_context_t *context);
/* Find out of the WM_DELETE_WINDOW property is set */
void
- set_wm_delete_win_in_context(xcwm_context_t * context);
+set_wm_delete_win_in_context(xcwm_context_t *context);
/* Initialize damage on a window */
void
- init_damage_on_window(xcwm_context_t * context);
+init_damage_on_window(xcwm_context_t *context);
/* Set window to the top of the stack */
void
-xcwm_set_window_to_top(xcwm_context_t * context)
+xcwm_set_window_to_top(xcwm_context_t *context)
{
const static uint32_t values[] = { XCB_STACK_MODE_ABOVE };
/* Move the window on the top of the stack */
xcb_configure_window(context->conn, context->window,
- XCB_CONFIG_WINDOW_STACK_MODE, values);
+ XCB_CONFIG_WINDOW_STACK_MODE,
+ values);
}
/* Set window to the bottom of the stack */
void
-xcwm_set_window_to_bottom(xcwm_context_t * context)
+xcwm_set_window_to_bottom(xcwm_context_t *context)
{
const static uint32_t values[] = { XCB_STACK_MODE_BELOW };
/* Move the window on the top of the stack */
xcb_configure_window(context->conn, context->window,
- XCB_CONFIG_WINDOW_STACK_MODE, values);
+ XCB_CONFIG_WINDOW_STACK_MODE,
+ values);
}
/* Set input focus to window */
void
-xcwm_set_input_focus(xcwm_context_t * context)
+xcwm_set_input_focus(xcwm_context_t *context)
{
// Test -- David
xcb_get_input_focus_cookie_t cookie = xcb_get_input_focus(context->conn);
-
- xcb_get_input_focus_reply_t *reply =
- xcb_get_input_focus_reply(context->conn, cookie, NULL);
+ xcb_get_input_focus_reply_t *reply = xcb_get_input_focus_reply(
+ context->conn, cookie, NULL);
printf("Focus was in window #%d, now in #%d (window.c)\n", reply->focus,
context->window);
free(reply);
// End test -- David
- xcb_set_input_focus(context->conn, XCB_INPUT_FOCUS_PARENT, context->window,
+ xcb_set_input_focus(context->conn, XCB_INPUT_FOCUS_PARENT,
+ context->window,
XCB_CURRENT_TIME);
xcb_flush(context->conn);
}
xcwm_context_t *
-_xcwm_window_created(xcb_connection_t * conn, xcb_map_request_event_t * event)
+_xcwm_window_created(xcb_connection_t * conn, xcb_map_request_event_t *event)
{
/* Check to see if the window is already created */
@@ -106,7 +108,6 @@ _xcwm_window_created(xcb_connection_t * conn, xcb_map_request_event_t * event)
xcwm_context_t *context = malloc(sizeof(xcwm_context_t));
xcb_get_geometry_reply_t *geom;
-
geom = _xcwm_get_window_geometry(conn, event->window);
/* set any available values from xcb_create_notify_event_t object pointer
@@ -134,11 +135,11 @@ _xcwm_window_created(xcb_connection_t * conn, xcb_map_request_event_t * event)
}
xcwm_context_t *
-_xcwm_destroy_window(xcb_destroy_notify_event_t * event)
+_xcwm_destroy_window(xcb_destroy_notify_event_t *event)
{
- xcwm_context_t *context =
- _xcwm_get_context_node_by_window_id(event->window);
+ xcwm_context_t *context = _xcwm_get_context_node_by_window_id(
+ event->window);
if (!context) {
/* Window isn't being managed */
return NULL;
@@ -153,9 +154,8 @@ _xcwm_destroy_window(xcb_destroy_notify_event_t * event)
/* Return the pointer for the context that was removed from the list. */
return context;
}
-
void
-xcwm_configure_window(xcwm_context_t * context, int x, int y, int height,
+xcwm_configure_window(xcwm_context_t *context, int x, int y, int height,
int width)
{
@@ -166,11 +166,12 @@ xcwm_configure_window(xcwm_context_t * context, int x, int y, int height,
context->height = height;
uint32_t values[] =
- { (uint32_t) x, (uint32_t) y, (uint32_t) width, (uint32_t) height };
+ { (uint32_t)x, (uint32_t)y, (uint32_t)width, (uint32_t)height };
- xcb_configure_window(context->conn, context->window, XCB_CONFIG_WINDOW_X
- | XCB_CONFIG_WINDOW_Y | XCB_CONFIG_WINDOW_WIDTH |
- XCB_CONFIG_WINDOW_HEIGHT, values);
+ xcb_configure_window(
+ context->conn, context->window, XCB_CONFIG_WINDOW_X
+ | XCB_CONFIG_WINDOW_Y | XCB_CONFIG_WINDOW_WIDTH |
+ XCB_CONFIG_WINDOW_HEIGHT, values);
/* Set the damage area to the new window size so its redrawn properly */
context->damaged_width = width;
@@ -181,7 +182,7 @@ xcwm_configure_window(xcwm_context_t * context, int x, int y, int height,
}
void
-xcwm_request_close(xcwm_context_t * context)
+xcwm_request_close(xcwm_context_t *context)
{
/* check to see if the context is in the list */
@@ -209,7 +210,8 @@ xcwm_request_close(xcwm_context_t * context)
event.data.data32[1] = XCB_CURRENT_TIME;
xcb_send_event(context->conn, 0, context->window,
- XCB_EVENT_MASK_NO_EVENT, (char *) &event);
+ XCB_EVENT_MASK_NO_EVENT,
+ (char *)&event);
xcb_flush(context->conn);
return;
@@ -219,7 +221,7 @@ xcwm_request_close(xcwm_context_t * context)
/* Resize the window on server side */
void
-_xcwm_resize_window(xcb_connection_t * conn, xcb_window_t window,
+_xcwm_resize_window(xcb_connection_t *conn, xcb_window_t window,
int width, int height)
{
uint32_t values[2] = { width, height };
@@ -227,12 +229,13 @@ _xcwm_resize_window(xcb_connection_t * conn, xcb_window_t window,
xcb_configure_window(conn,
window,
XCB_CONFIG_WINDOW_WIDTH |
- XCB_CONFIG_WINDOW_HEIGHT, values);
+ XCB_CONFIG_WINDOW_HEIGHT,
+ values);
xcb_flush(conn);
}
void
-_xcwm_map_window(xcwm_context_t * context)
+_xcwm_map_window(xcwm_context_t *context)
{
/* Map the window. May want to handle other things here */
xcb_map_window(context->conn, context->window);
@@ -240,37 +243,37 @@ _xcwm_map_window(xcwm_context_t * context)
}
void
-set_icccm_properties(xcwm_context_t * context)
+set_icccm_properties(xcwm_context_t *context)
{
set_wm_name_in_context(context);
set_wm_delete_win_in_context(context);
}
void
-set_wm_name_in_context(xcwm_context_t * context)
+set_wm_name_in_context(xcwm_context_t *context)
{
xcb_get_property_cookie_t cookie;
-
xcb_get_property_reply_t *reply;
-
xcb_generic_error_t *error;
-
char *value;
-
int length;
cookie = xcb_get_property(context->conn,
0,
context->window,
XCB_ATOM_WM_NAME,
- XCB_GET_PROPERTY_TYPE_ANY, 0, 128);
- reply = xcb_get_property_reply(context->conn, cookie, &error);
+ XCB_GET_PROPERTY_TYPE_ANY,
+ 0,
+ 128);
+ reply = xcb_get_property_reply(context->conn,
+ cookie,
+ &error);
if (!reply) {
context->name = NULL;
return;
}
length = xcb_get_property_value_length(reply);
- value = (char *) xcb_get_property_value(reply);
+ value = (char *)xcb_get_property_value(reply);
context->name = malloc(sizeof(char) * (length + 1));
strncpy(context->name, value, length);
@@ -278,18 +281,13 @@ set_wm_name_in_context(xcwm_context_t * context)
}
void
-set_wm_delete_win_in_context(xcwm_context_t * context)
+set_wm_delete_win_in_context(xcwm_context_t *context)
{
xcb_get_property_cookie_t cookie;
-
xcb_get_property_reply_t *reply;
-
xcb_atom_t *prop_atoms;
-
int prop_length;
-
xcb_generic_error_t *error;
-
int i;
/* Get the WM_PROTOCOLS */
@@ -297,16 +295,20 @@ set_wm_delete_win_in_context(xcwm_context_t * context)
0,
context->window,
_wm_atoms->wm_protocols_atom,
- XCB_ATOM_ATOM, 0, UINT_MAX);
+ XCB_ATOM_ATOM,
+ 0,
+ UINT_MAX);
- reply = xcb_get_property_reply(context->conn, cookie, &error);
+ reply = xcb_get_property_reply(context->conn,
+ cookie,
+ &error);
if (!reply) {
context->wm_delete_set = 0;
return;
}
prop_length = xcb_get_property_value_length(reply);
- prop_atoms = (xcb_atom_t *) xcb_get_property_value(reply);
+ prop_atoms = (xcb_atom_t *)xcb_get_property_value(reply);
free(reply);
/* See if the WM_DELETE_WINDOW is in WM_PROTOCOLS */
@@ -322,12 +324,10 @@ set_wm_delete_win_in_context(xcwm_context_t * context)
}
void
-init_damage_on_window(xcwm_context_t * context)
+init_damage_on_window(xcwm_context_t *context)
{
xcb_damage_damage_t damage_id;
-
uint8_t level;
-
xcb_void_cookie_t cookie;
damage_id = xcb_generate_id(context->conn);
@@ -336,7 +336,9 @@ init_damage_on_window(xcwm_context_t * context)
// DamageReportRawRectangles. Another level may be more appropriate.
level = XCB_DAMAGE_REPORT_LEVEL_BOUNDING_BOX;
cookie = xcb_damage_create(context->conn,
- damage_id, context->window, level);
+ damage_id,
+ context->window,
+ level);
if (_xcwm_request_check(context->conn, cookie,
"Could not create damage for window")) {
diff --git a/src/libxcwm/xcwm.c b/src/libxcwm/xcwm.c
index eee8a7e..34f798f 100644
--- a/src/libxcwm/xcwm.c
+++ b/src/libxcwm/xcwm.c
@@ -33,9 +33,8 @@
#include <string.h>
// aaron key stuff
-#define XK_Shift_L 0xffe1
+#define XK_Shift_L 0xffe1
xcb_key_symbols_t *syms = NULL;
-
// end aaron key stuff
xcwm_context_t *root_context = NULL;
@@ -46,15 +45,10 @@ xcwm_init(char *display)
{
xcb_connection_t *conn;
-
int conn_screen;
-
xcb_screen_t *root_screen;
-
xcb_drawable_t root_window;
-
xcb_void_cookie_t cookie;
-
uint32_t mask_values[1];
conn = xcb_connect(display, &conn_screen);
@@ -66,18 +60,20 @@ xcwm_init(char *display)
// are created on the root. This is where we add masks for the events
// we care about catching on the root window.
mask_values[0] = XCB_EVENT_MASK_KEY_PRESS |
- XCB_EVENT_MASK_KEY_RELEASE |
- XCB_EVENT_MASK_BUTTON_PRESS |
- XCB_EVENT_MASK_BUTTON_RELEASE |
- XCB_EVENT_MASK_POINTER_MOTION |
- XCB_EVENT_MASK_STRUCTURE_NOTIFY |
- XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY |
- XCB_EVENT_MASK_ENTER_WINDOW |
- XCB_EVENT_MASK_LEAVE_WINDOW | XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT;
+ XCB_EVENT_MASK_KEY_RELEASE |
+ XCB_EVENT_MASK_BUTTON_PRESS |
+ XCB_EVENT_MASK_BUTTON_RELEASE |
+ XCB_EVENT_MASK_POINTER_MOTION |
+ XCB_EVENT_MASK_STRUCTURE_NOTIFY |
+ XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY |
+ XCB_EVENT_MASK_ENTER_WINDOW |
+ XCB_EVENT_MASK_LEAVE_WINDOW |
+ XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT;
cookie = xcb_change_window_attributes_checked(conn, root_window,
XCB_CW_EVENT_MASK,
mask_values);
- if (_xcwm_request_check(conn, cookie, "Could not set root window mask.")) {
+ if (_xcwm_request_check(conn, cookie,
+ "Could not set root window mask.")) {
fprintf(stderr, "Is another window manager running?\n");
xcb_disconnect(conn);
exit(1);
@@ -114,7 +110,7 @@ xcwm_init(char *display)
}
xcwm_image_t *
-xcwm_get_image(xcwm_context_t * context)
+xcwm_get_image(xcwm_context_t *context)
{
xcb_get_geometry_reply_t *geom_reply;
@@ -124,8 +120,8 @@ xcwm_get_image(xcwm_context_t * context)
geom_reply = _xcwm_get_window_geometry(context->conn, context->window);
//FIXME - right size
- xcwm_image_t *xcwm_image =
- (xcwm_image_t *) malloc(10 * sizeof(xcwm_image_t));
+ xcwm_image_t * xcwm_image =
+ (xcwm_image_t *)malloc(10 * sizeof(xcwm_image_t));
xcb_flush(context->conn);
/* Get the image of the root window */
@@ -135,7 +131,8 @@ xcwm_get_image(xcwm_context_t * context)
geom_reply->y,
geom_reply->width,
geom_reply->height,
- (unsigned int) ~0L, XCB_IMAGE_FORMAT_Z_PIXMAP);
+ (unsigned int)~0L,
+ XCB_IMAGE_FORMAT_Z_PIXMAP);
xcwm_image->image = image;
xcwm_image->x = geom_reply->x;
@@ -149,14 +146,15 @@ xcwm_get_image(xcwm_context_t * context)
}
int
-xcwm_start_event_loop(xcwm_context_t * context, xcwm_event_cb_t callback)
+xcwm_start_event_loop(xcwm_context_t *context,
+ xcwm_event_cb_t callback)
{
/* Simply call our internal function to do the actual setup */
return _xcwm_start_event_loop(context->conn, callback);
}
xcwm_image_t *
-test_xcwm_get_image(xcwm_context_t * context)
+test_xcwm_get_image(xcwm_context_t *context)
{
xcb_image_t *image;
@@ -169,11 +167,12 @@ test_xcwm_get_image(xcwm_context_t * context)
context->damaged_y,
context->damaged_width,
context->damaged_height,
- (unsigned int) ~0L, XCB_IMAGE_FORMAT_Z_PIXMAP);
+ (unsigned int)~0L,
+ XCB_IMAGE_FORMAT_Z_PIXMAP);
//FIXME - Calculate memory size correctly
- xcwm_image_t *xcwm_image =
- (xcwm_image_t *) malloc(10 * sizeof(xcwm_image_t));
+ xcwm_image_t * xcwm_image =
+ (xcwm_image_t *)malloc(10 * sizeof(xcwm_image_t));
xcwm_image->image = image;
xcwm_image->x = context->damaged_x;
@@ -193,12 +192,10 @@ xcwm_image_destroy(xcwm_image_t * xcwm_image)
}
void
-xcwm_remove_context_damage(xcwm_context_t * context)
+xcwm_remove_context_damage(xcwm_context_t *context)
{
xcb_xfixes_region_t region = xcb_generate_id(context->conn);
-
xcb_rectangle_t rect;
-
xcb_void_cookie_t cookie;
if (!context) {
@@ -210,10 +207,15 @@ xcwm_remove_context_damage(xcwm_context_t * context)
rect.width = context->damaged_width;
rect.height = context->damaged_height;
- xcb_xfixes_create_region(root_context->conn, region, 1, &rect);
+ xcb_xfixes_create_region(root_context->conn,
+ region,
+ 1,
+ &rect);
cookie = xcb_damage_subtract_checked(context->conn,
- context->damage, region, 0);
+ context->damage,
+ region,
+ 0);
if (!(_xcwm_request_check(context->conn, cookie,
"Failed to subtract damage"))) {
@@ -231,9 +233,7 @@ xcwm_close(void)
{
_xcwm_context_node *head = _xcwm_window_list_head;
-
xcb_connection_t *conn = head->context->conn;
-
xcb_flush(conn);
// Close all windows
@@ -249,9 +249,7 @@ xcwm_close(void)
// Terminate the event loop
int ret = _xcwm_stop_event_loop();
-
- if (ret != 1)
- printf("Event loop failed to close\n");
+ if (ret != 1) printf("Event loop failed to close\n");
return;
diff --git a/src/libxcwm/xcwm_internal.h b/src/libxcwm/xcwm_internal.h
index ed99b58..d7c06ff 100644
--- a/src/libxcwm/xcwm_internal.h
+++ b/src/libxcwm/xcwm_internal.h
@@ -44,8 +44,8 @@
* Strucuture used to pass nesessary data to xcwm_start_event_loop.
*/
typedef struct xcwm_event_connetion {
- xcb_connection_t *conn; /* Connection to listen to events on */
- xcwm_event_cb_t event_callback; /* Fuction to call when event caught */
+ xcb_connection_t *conn; /* Connection to listen to events on */
+ xcwm_event_cb_t event_callback; /* Fuction to call when event caught */
} xcwm_event_connection;
/**
@@ -75,10 +75,8 @@ extern pthread_mutex_t event_thread_lock;
* @param window The window.
* @return The window attributes reply. Null if the request fails.
*/
-xcb_get_window_attributes_reply_t *_xcwm_get_window_attributes(xcb_connection_t
- * conn,
- xcb_window_t
- window);
+xcb_get_window_attributes_reply_t *
+_xcwm_get_window_attributes(xcb_connection_t *conn, xcb_window_t window);
/**
* Return the geometry of the window in a geometry reply. Caller must free
@@ -87,8 +85,8 @@ xcb_get_window_attributes_reply_t *_xcwm_get_window_attributes(xcb_connection_t
* @param window The window.
* @return The window's geometry reply. Null if the request for reply fails.
*/
-xcb_get_geometry_reply_t *_xcwm_get_window_geometry(xcb_connection_t * conn,
- xcb_window_t window);
+xcb_get_geometry_reply_t *
+_xcwm_get_window_geometry(xcb_connection_t *conn, xcb_window_t window);
/**
* Print out information about the existing windows attached to our
@@ -99,8 +97,7 @@ xcb_get_geometry_reply_t *_xcwm_get_window_geometry(xcb_connection_t * conn,
* @return the geometry of the window
*/
void
-
-_xcwm_write_all_children_window_info(xcb_connection_t * conn,
+_xcwm_write_all_children_window_info(xcb_connection_t *conn,
xcb_window_t root);
/**
@@ -110,7 +107,7 @@ _xcwm_write_all_children_window_info(xcb_connection_t * conn,
* @return a structure containing data and data length.
*/
image_data_t
-_xcwm_get_window_image_data(xcb_connection_t * conn, xcb_window_t window);
+_xcwm_get_window_image_data(xcb_connection_t *conn, xcb_window_t window);
/**
* Write information about a window out to stdio.
@@ -119,7 +116,7 @@ _xcwm_get_window_image_data(xcb_connection_t * conn, xcb_window_t window);
* @param window The window.
*/
void
- _xcwm_write_window_info(xcb_connection_t * conn, xcb_window_t window);
+_xcwm_write_window_info(xcb_connection_t *conn, xcb_window_t window);
/**
* Check the request cookie and determine if there is an error.
@@ -129,13 +126,12 @@ void
* @return int The number of the error code, if any. Otherwise zero.
*/
int
-
-_xcwm_request_check(xcb_connection_t * conn, xcb_void_cookie_t cookie,
+_xcwm_request_check(xcb_connection_t *conn, xcb_void_cookie_t cookie,
char *msg);
/****************
- * init.c
- ****************/
+* init.c
+****************/
/**
* Initializes an extension on the xserver.
@@ -143,16 +139,16 @@ _xcwm_request_check(xcb_connection_t * conn, xcb_void_cookie_t cookie,
* @param extension_name The string specifying the name of the extension.
* @return The reply structure
*/
-xcb_query_extension_reply_t *_xcwm_init_extension(xcb_connection_t * conn,
- char *extension_name);
+xcb_query_extension_reply_t *
+_xcwm_init_extension(xcb_connection_t *conn, char *extension_name);
/**
* Initializes damage on a window contained in a context.
* The context will likely contain the root window.
- * @param contxt A context containing a window
+ * @param contxt A context containing a window
*/
void
- _xcwm_init_damage(xcwm_context_t * contxt);
+_xcwm_init_damage(xcwm_context_t *contxt);
/**
* Initializes the composite extension on the context containg
@@ -160,25 +156,25 @@ void
* @param contxt The contxt containing the root window
*/
void
- _xcwm_init_composite(xcwm_context_t * contxt);
+_xcwm_init_composite(xcwm_context_t *contxt);
/**
* Initialize the xfixes extension.
* @param contxt The context
*/
void
- _xcwm_init_xfixes(xcwm_context_t * contxt);
+_xcwm_init_xfixes(xcwm_context_t *contxt);
/**
* Get the values for the WM_* atoms that we need.
* @param contxt The context
*/
void
- _xcwm_get_wm_atoms(xcwm_context_t * contxt);
+_xcwm_get_wm_atoms(xcwm_context_t *contxt);
/****************
- * event_loop.c
- ****************/
+* event_loop.c
+****************/
/**
* Starts the event loop thread which listens on the given connection and
@@ -188,19 +184,18 @@ void
* @return 0 on success, nonzero on failure.
*/
int
-
-_xcwm_start_event_loop(xcb_connection_t * conn, xcwm_event_cb_t event_callback);
+_xcwm_start_event_loop(xcb_connection_t *conn, xcwm_event_cb_t event_callback);
/**
* Stops the thread running the event loop.
* @return 0 on success, otherwise zero.
*/
int
- _xcwm_stop_event_loop(void);
+_xcwm_stop_event_loop(void);
/****************
- * context_list.c
- ****************/
+* context_list.c
+****************/
/**
* A structure (doubly linked list) to hold
@@ -208,8 +203,8 @@ int
*/
typedef struct _xcwm_context_node {
struct xcwm_context_t *context; /**< Pointer to a context */
- struct _xcwm_context_node *next; /**< Pointer to the next context node */
- struct _xcwm_context_node *prev; /**< Pointer to the previous context node */
+ struct _xcwm_context_node * next; /**< Pointer to the next context node */
+ struct _xcwm_context_node * prev; /**< Pointer to the previous context node */
} _xcwm_context_node;
/* this is the head pointer */
@@ -220,7 +215,8 @@ extern _xcwm_context_node *_xcwm_window_list_head;
* @param context The context to be added to the linked list
* @return Pointer to context added to the list.
*/
-xcwm_context_t *_xcwm_add_context_t(struct xcwm_context_t *context);
+xcwm_context_t *
+_xcwm_add_context_t(struct xcwm_context_t *context);
/**
* Remove a context to the context_list using the window's id.
@@ -228,18 +224,19 @@ xcwm_context_t *_xcwm_add_context_t(struct xcwm_context_t *context);
* be removed from the context_list
*/
void
- _xcwm_remove_context_node(xcb_window_t window_id);
+_xcwm_remove_context_node(xcb_window_t window_id);
/**
* Find a context in the doubly linked list using its window_id.
* @param window_id The window_id of the context which should
* @return Pointer to context (if found), NULL if not found.
*/
-xcwm_context_t *_xcwm_get_context_node_by_window_id(xcb_window_t window_id);
+xcwm_context_t *
+_xcwm_get_context_node_by_window_id(xcb_window_t window_id);
/****************
- * window.c
- ****************/
+* window.c
+****************/
/**
* Create a new context for the window specified in the event.
@@ -247,17 +244,18 @@ xcwm_context_t *_xcwm_get_context_node_by_window_id(xcb_window_t window_id);
* @param evt The map event for the window
* @return Pointer to new context. NULL if window already exists.
*/
-xcwm_context_t *_xcwm_window_created(xcb_connection_t * conn,
- xcb_map_request_event_t * evt);
+xcwm_context_t *
+_xcwm_window_created(xcb_connection_t * conn, xcb_map_request_event_t *evt);
/**
- * Destroy the damage object associated with the window.
+ * Destroy the damage object associated with the window.
* Call the remove function in context_list.c
* @param conn The connection to xserver
* @param event The destroy notify event for the window
* @return Pointer to the context that was removed from the list, NULL if
* window isn't being managed by context_list
*/
-xcwm_context_t *_xcwm_destroy_window(xcb_destroy_notify_event_t * event);
+xcwm_context_t *
+_xcwm_destroy_window(xcb_destroy_notify_event_t *event);
/**
* Resize the window to given width and height.
@@ -267,15 +265,14 @@ xcwm_context_t *_xcwm_destroy_window(xcb_destroy_notify_event_t * event);
* @param height The new height
*/
void
-
-_xcwm_resize_window(xcb_connection_t * conn, xcb_window_t window,
- int width, int height);
+_xcwm_resize_window(xcb_connection_t *conn, xcb_window_t window, int width,
+ int height);
/**
* Map the given window.
* @param context The context of the window to map
*/
void
- _xcwm_map_window(xcwm_context_t * context);
+_xcwm_map_window(xcwm_context_t *context);
-#endif /* _XTOQ_INTERNAL_H_ */
+#endif /* _XTOQ_INTERNAL_H_ */
diff --git a/src/xtoq/XtoqApplication.h b/src/xtoq/XtoqApplication.h
index 625549e..68b0bb5 100644
--- a/src/xtoq/XtoqApplication.h
+++ b/src/xtoq/XtoqApplication.h
@@ -1,22 +1,22 @@
/*Copyright (C) 2012 Braden Wooley, Ben Huddle
-
- Permission is hereby granted, free of charge, to any person obtaining a copy of
- this software and associated documentation files (the "Software"), to deal in
- the Software without restriction, including without limitation the rights to
- use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
- of the Software, and to permit persons to whom the Software is furnished to do
- so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in all
- copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- SOFTWARE.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
+ this software and associated documentation files (the "Software"), to deal in
+ the Software without restriction, including without limitation the rights to
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+ of the Software, and to permit persons to whom the Software is furnished to do
+ so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
*/
#import <AppKit/AppKit.h>
@@ -31,14 +31,12 @@
#define environ (*_NSGetEnviron())
#endif
-@interface XtoqApplication : NSApplication {
-
-}
+@interface XtoqApplication : NSApplication {}
/**
* The main of our Application.
*
- * Specifically this function starts up Xorg connection, defaulting to
- * ':0' if it is available. It also sets the environment variable to the
+ * Specifically this function starts up Xorg connection, defaulting to
+ * ':0' if it is available. It also sets the environment variable to the
* correct display.
*
* @param argc Number of command line arguments.
@@ -46,12 +44,12 @@
*
* @return Returns 1.
*/
-int XtoqApplicationMain(int argc, char** argv);
+int
+XtoqApplicationMain(int argc, char** argv);
-- (void) sendEvent:(NSEvent *)e;
+- (void)sendEvent:(NSEvent *)e;
@end
int
XtoqApplicationMain(int argc, char** argv);
-
diff --git a/src/xtoq/XtoqApplication.m b/src/xtoq/XtoqApplication.m
index f136b76..4f61a9f 100644
--- a/src/xtoq/XtoqApplication.m
+++ b/src/xtoq/XtoqApplication.m
@@ -1,22 +1,22 @@
/*Copyright (C) 2012 Braden Wooley, Ben Huddle
-
- Permission is hereby granted, free of charge, to any person obtaining a copy of
- this software and associated documentation files (the "Software"), to deal in
- the Software without restriction, including without limitation the rights to
- use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
- of the Software, and to permit persons to whom the Software is furnished to do
- so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in all
- copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- SOFTWARE.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
+ this software and associated documentation files (the "Software"), to deal in
+ the Software without restriction, including without limitation the rights to
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+ of the Software, and to permit persons to whom the Software is furnished to do
+ so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
*/
#ifdef HAVE_CONFIG_H
@@ -29,7 +29,9 @@
@implementation XtoqApplication
-int XtoqApplicationMain(int argc, char** argv){
+int
+XtoqApplicationMain(int argc, char** argv)
+{
XtoqController *controller;
char *scrn;
@@ -43,10 +45,8 @@ int XtoqApplicationMain(int argc, char** argv){
char *xinitrc_path;
const char *spawn[5];
pid_t child;
-
- mkfifo(fifo_path, S_IRUSR | S_IWUSR);
-
+ mkfifo(fifo_path, S_IRUSR | S_IWUSR);
CFBundleRef bundle = CFBundleGetMainBundle();
assert(bundle);
@@ -54,83 +54,85 @@ int XtoqApplicationMain(int argc, char** argv){
CFURLRef resourcesURL = CFBundleCopyBundleURL(bundle);
assert(resourcesURL);
- CFStringRef bundle_path_cfstr = CFURLCopyFileSystemPath(resourcesURL, kCFURLPOSIXPathStyle);
+ CFStringRef bundle_path_cfstr = CFURLCopyFileSystemPath(
+ resourcesURL, kCFURLPOSIXPathStyle);
assert(bundle_path_cfstr);
-
- CFStringGetCString(bundle_path_cfstr, bundle_path, PATH_MAX, kCFStringEncodingUTF8);
-
-
- asprintf(&xinitrc_path,
- "%s/Contents/Resources/X11/lib/X11/xinit/xinitrc",
- bundle_path);
+ CFStringGetCString(bundle_path_cfstr, bundle_path, PATH_MAX,
+ kCFStringEncodingUTF8);
+
+ asprintf(&xinitrc_path,
+ "%s/Contents/Resources/X11/lib/X11/xinit/xinitrc",
+ bundle_path);
assert(xinitrc_path);
-
-
+
spawn[0] = startx_path;
spawn[1] = xinitrc_path;
spawn[2] = "--";
spawn[3] = Xorg_path;
spawn[4] = NULL;
-
- int error = posix_spawnp(&child, spawn[0], NULL, NULL, (char * const *)spawn, environ);
+
+ int error =
+ posix_spawnp(&child, spawn[0], NULL, NULL, (char *const *)spawn,
+ environ);
if (error) {
NSLog(@"error with posix_spawnp");
exit(1);
}
scrn = NULL;
-
-
+
fp = fopen(fifo_path, "r");
assert(fp);
#if 1
bytes_read = getline(&scrn, &len, fp);
#else
- scrn=":0";
+ scrn = ":0";
#endif
fclose(fp);
-
+
if (bytes_read && scrn[bytes_read - 1] == '\n')
scrn[bytes_read - 1] = '\0';
-
+
[XtoqApplication sharedApplication];
controller = [[XtoqController alloc] init];
[controller setScreen:scrn];
[NSApp setDelegate: controller];
-
+
[NSApp run];
return 1;
}
-- (void) sendEvent:(NSEvent *)e {
+- (void) sendEvent:(NSEvent *)e
+{
CGFloat x, y;
NSNumber *xObject, *yObject;
NSMutableDictionary *threeInfoDict;
switch ([e type]) {
- case NSMouseMoved:
- // height = [[NSScreen mainScreen] frame].size.height;
- // you can't call mouseLocation on "e"
- x = [NSEvent mouseLocation].x;
- y = [NSEvent mouseLocation].y;
-
- //NSLog(@"Mouse Moved y=%f", y);
-
- xObject = [[NSNumber alloc] initWithFloat:x];
- yObject = [[NSNumber alloc] initWithFloat:y];
- threeInfoDict = [[NSMutableDictionary alloc] initWithCapacity:3];
- [threeInfoDict setObject:e forKey:@"1"];
- [threeInfoDict setObject:xObject forKey:@"2"];
- [threeInfoDict setObject:yObject forKey:@"3"];
- [[NSNotificationCenter defaultCenter]
- postNotificationName:@"MouseMovedEvent"
- object:self
- userInfo:threeInfoDict];
- break;
-
- default: [super sendEvent:e];
- break;
+ case NSMouseMoved:
+ // height = [[NSScreen mainScreen] frame].size.height;
+ // you can't call mouseLocation on "e"
+ x = [NSEvent mouseLocation].x;
+ y = [NSEvent mouseLocation].y;
+
+ //NSLog(@"Mouse Moved y=%f", y);
+
+ xObject = [[NSNumber alloc] initWithFloat:x];
+ yObject = [[NSNumber alloc] initWithFloat:y];
+ threeInfoDict = [[NSMutableDictionary alloc] initWithCapacity:3];
+ [threeInfoDict setObject:e forKey:@"1"];
+ [threeInfoDict setObject:xObject forKey:@"2"];
+ [threeInfoDict setObject:yObject forKey:@"3"];
+ [[NSNotificationCenter defaultCenter]
+ postNotificationName:@"MouseMovedEvent"
+ object:self
+ userInfo:threeInfoDict];
+ break;
+
+ default:
+ [super sendEvent:e];
+ break;
}
}
diff --git a/src/xtoq/XtoqController.h b/src/xtoq/XtoqController.h
index 5b3d3aa..0eb77f8 100644
--- a/src/xtoq/XtoqController.h
+++ b/src/xtoq/XtoqController.h
@@ -1,26 +1,25 @@
-
/*Copyright (C) 2012 Aaron Skomra, Braden Wooley, Ben Huddle
-
- Permission is hereby granted, free of charge, to any person obtaining a copy of
- this software and associated documentation files (the "Software"), to deal in
- the Software without restriction, including without limitation the rights to
- use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
- of the Software, and to permit persons to whom the Software is furnished to do
- so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in all
- copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- SOFTWARE.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
+ this software and associated documentation files (the "Software"), to deal in
+ the Software without restriction, including without limitation the rights to
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+ of the Software, and to permit persons to whom the Software is furnished to do
+ so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
*/
-/**
+/**
* AppController.h
* xcwm
*
@@ -55,12 +54,12 @@ id referenceToSelf;
@interface XtoqController : NSObject {
XtoqWindow *xcwmWindow;
XtoqView * ourView;
-
+
dispatch_queue_t xcwmDispatchQueue;
-
+
//The X :1 paramater, updated in the XtoqApplication
char *screen;
-
+
xcwm_image_t *libImageT;
xcwm_context_t *rootContext;
xcb_image_t *imageT;
@@ -74,32 +73,32 @@ id referenceToSelf;
NSString *keyFirst;
}
-- (id) init;
-- (void) applicationWillFinishLaunching:(NSNotification *) aNotification;
-- (void) applicationDidFinishLaunching: (NSNotification *) aNotification;
+- (id)init;
+- (void)applicationWillFinishLaunching:(NSNotification *)aNotification;
+- (void)applicationDidFinishLaunching: (NSNotification *)aNotification;
/**
* Receive notification of a key down event from the view.
- * @param an NSNotification containing an NSEvent
+ * @param an NSNotification containing an NSEvent
*/
-- (void) keyDownInView: (NSNotification *) aNotification;
+- (void)keyDownInView: (NSNotification *)aNotification;
/**
* Receive notification of a mouse button press from the view.
- * @param an NSNotification containing an NSEvent
+ * @param an NSNotification containing an NSEvent
*/
-- (void) mouseButtonDownInView: (NSNotification *) aNotification;
+- (void)mouseButtonDownInView: (NSNotification *)aNotification;
/**
* Receive notification of a mouse button release from the view.
- * @param an NSNotification containing an NSEvent
+ * @param an NSNotification containing an NSEvent
*/
-- (void) mouseButtonReleaseInView: (NSNotification *) aNotification;
+- (void)mouseButtonReleaseInView: (NSNotification *)aNotification;
/**
* Makemenu and related selector functions for launching X applications.
*/
-- (void) makeMenu;
+- (void)makeMenu;
/**
* Launches the application based on filename.
@@ -110,7 +109,7 @@ id referenceToSelf;
*
* @param filename The name of the application to be run within XtoQ.app.
*/
-- (void) launch_client: (NSString *) filename;
+- (void)launch_client: (NSString *)filename;
/**
* Runs xeyes.
@@ -120,7 +119,7 @@ id referenceToSelf;
*
* @param sender Only needed for functionality with Makemenu's menu system.
*/
-- (void) runXeyes: (id) sender;
+- (void)runXeyes: (id)sender;
/**
* Runs xclock.
@@ -130,7 +129,7 @@ id referenceToSelf;
*
* @param sender Only needed for functionality with Makemenu's menu system.
*/
-- (void) runXclock: (id) sender;
+- (void)runXclock: (id)sender;
/**
* Runs xlogo.
@@ -140,9 +139,9 @@ id referenceToSelf;
*
* @param sender Only needed for functionality with Makemenu's menu system.
*/
-- (void) runXlogo: (id) sender;
+- (void)runXlogo: (id)sender;
-- (void) mouseMovedInApp: (NSNotification *) aNotification;
+- (void)mouseMovedInApp: (NSNotification *)aNotification;
/**
* Runs xterm.
@@ -152,18 +151,18 @@ id referenceToSelf;
*
* @param sender Only needed for functionality with Makemenu's menu system.
*/
-- (void) runXterm: (id) sender;
+- (void)runXterm: (id)sender;
/**
* Put a new image in the window / view
- * Send an image to the view after being notified of a damage event from
+ * Send an image to the view after being notified of a damage event from
* the event handler.
* @param an xcwm_context_t sent from eventHandler
*/
-- (void) updateImage: (xcwm_context_t *) windowContext;
+- (void)updateImage: (xcwm_context_t *)windowContext;
-- (void) createNewWindow: (xcwm_context_t *) windowContext;
-- (void) destroyWindow: (xcwm_context_t *) windowContext;
+- (void)createNewWindow: (xcwm_context_t *)windowContext;
+- (void)destroyWindow: (xcwm_context_t *)windowContext;
/**
* Sets the variable screen to correct display.
@@ -174,23 +173,23 @@ id referenceToSelf;
* @param scrn This value is determined in XtoqApplication before connection
* to Xorg is established.
*/
-- (void) setScreen: (char *) scrn;
+- (void)setScreen: (char *)scrn;
-- (void)windowWillMove:(NSNotification*)notification;
-- (void)windowDidMove:(NSNotification*)notification;
-- (void)windowDidResize:(NSNotification*)notification;
+- (void)windowWillMove:(NSNotification *)notification;
+- (void)windowDidMove:(NSNotification *)notification;
+- (void)windowDidResize:(NSNotification *)notification;
- (void)applicationWillTerminate:(NSNotification *)aNotification;
- (void)reshape;
-- (int) xserverToOSX:(int)yValue windowHeight:(int)windowH;
-- (int) osxToXserver:(int)yValue windowHeight:(int)windowH;
+- (int)xserverToOSX:(int)yValue windowHeight:(int)windowH;
+- (int)osxToXserver:(int)yValue windowHeight:(int)windowH;
@end
-
/**
* Callback function that will receive events from the xcwm event loop
* once it is started.
* @param event The event received.
*/
-void eventHandler (xcwm_event_t *event);
+void
+eventHandler(xcwm_event_t *event);
diff --git a/src/xtoq/XtoqController.m b/src/xtoq/XtoqController.m
index fb3b6a5..877f404 100644
--- a/src/xtoq/XtoqController.m
+++ b/src/xtoq/XtoqController.m
@@ -1,30 +1,29 @@
-
/*Copyright (C) 2012 Aaron Skomra, Ben Huddle, Braden Wooley
-
- Permission is hereby granted, free of charge, to any person obtaining a copy of
- this software and associated documentation files (the "Software"), to deal in
- the Software without restriction, including without limitation the rights to
- use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
- of the Software, and to permit persons to whom the Software is furnished to do
- so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in all
- copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- SOFTWARE.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
+ this software and associated documentation files (the "Software"), to deal in
+ the Software without restriction, including without limitation the rights to
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+ of the Software, and to permit persons to whom the Software is furnished to do
+ so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
*/
-/**
+/**
* AppController.m
* xcwm
*
- *
+ *
* This is the controller for the Popup to retreive the display number
* from the user.
*/
@@ -36,11 +35,12 @@
#import "XtoqController.h"
#define WINDOWBAR 22
-#define FILEBAR 23
+#define FILEBAR 23
@implementation XtoqController
-- (id) init {
+- (id) init
+{
self = [super init];
if (self) {
referenceToSelf = self;
@@ -48,194 +48,199 @@
return self;
}
-- (int) xserverToOSX:(int)yValue windowHeight:(int)windowH {
-
- int height = [[NSScreen mainScreen] frame].size.height;
+- (int) xserverToOSX:(int)yValue windowHeight:(int)windowH
+{
+
+ int height = [[NSScreen mainScreen] frame].size.height;
return height - windowH + yValue;
-
+
}
-- (int) osxToXserver:(int)yValue windowHeight:(int)windowH {
-
- int height = [[NSScreen mainScreen] frame].size.height;
+- (int) osxToXserver:(int)yValue windowHeight:(int)windowH
+{
+
+ int height = [[NSScreen mainScreen] frame].size.height;
return height - yValue;
-
+
}
-- (void)applicationWillFinishLaunching:(NSNotification *)aNotification {
-
+- (void)applicationWillFinishLaunching:(NSNotification *)aNotification
+{
+
// setup X connection and get the initial image from the server
rootContext = xcwm_init(screen);
-
+
[[NSGraphicsContext currentContext]
- setImageInterpolation:NSImageInterpolationHigh];
-
- xcwmWindow = [[XtoqWindow alloc]
- initWithContentRect: NSMakeRect(rootContext->x, rootContext->y,
- rootContext->width, rootContext->height)
- styleMask: (NSTitledWindowMask |
- NSClosableWindowMask |
- NSMiniaturizableWindowMask |
- NSResizableWindowMask)
- backing: NSBackingStoreBuffered
- defer: YES];
-
- [xcwmWindow setContext: rootContext];
- rootContext->local_data = xcwmWindow;
+ setImageInterpolation:NSImageInterpolationHigh];
+
+ xcwmWindow = [[XtoqWindow alloc]
+ initWithContentRect: NSMakeRect(rootContext->x,
+ rootContext->y,
+ rootContext->width,
+ rootContext->height)
+ styleMask: (NSTitledWindowMask |
+ NSClosableWindowMask |
+ NSMiniaturizableWindowMask |
+ NSResizableWindowMask)
+ backing: NSBackingStoreBuffered
+ defer: YES];
+
+ [xcwmWindow setContext: rootContext];
+ rootContext->local_data = xcwmWindow;
// Make the menu
[self makeMenu];
-
+
//create an XtoqImageRep with the information from X
//libImageT = xcwm_get_image(rootContext);
- //image = [[XtoqImageRep alloc] initWithData:libImageT x:0 y:0];
+ //image = [[XtoqImageRep alloc] initWithData:libImageT x:0 y:0];
//draw the image into a rect
- imageRec = NSMakeRect(0, 0, 1028,768);//[image getWidth], [image getHeight]);
+ imageRec = NSMakeRect(0, 0, 1028, 768); //[image getWidth], [image getHeight]);
// create a view, init'ing it with our rect
ourView = [[XtoqView alloc] initWithFrame:imageRec];
- [ourView setContext: rootContext];
+ [ourView setContext: rootContext];
// add view to its window
- [xcwmWindow setContentView: ourView];
+ [xcwmWindow setContentView: ourView];
// set the initial image in the window
//[ourView setImage:image];
originalWidth = [image getWidth];
originalHeight = [image getHeight];
//[ourView setPartialImage:imageNew];
-
+
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
-
-
+
// Register for the key down notifications from the view
[nc addObserver: self
- selector: @selector(keyDownInView:)
- name: @"XTOQviewKeyDownEvent"
- object: nil];
-
+ selector: @selector(keyDownInView:)
+ name: @"XTOQviewKeyDownEvent"
+ object: nil];
+
[nc addObserver: self
- selector: @selector(mouseButtonDownInView:)
- name: @"XTOQmouseButtonDownEvent"
- object: nil];
-
+ selector: @selector(mouseButtonDownInView:)
+ name: @"XTOQmouseButtonDownEvent"
+ object: nil];
+
[nc addObserver: self
- selector: @selector(mouseButtonReleaseInView:)
- name: @"XTOQmouseButtonReleaseEvent"
- object: nil];
-
+ selector: @selector(mouseButtonReleaseInView:)
+ name: @"XTOQmouseButtonReleaseEvent"
+ object: nil];
+
[nc addObserver: self
selector: @selector(mouseMovedInApp:)
- name: @"MouseMovedEvent"
+ name: @"MouseMovedEvent"
object: nil];
// register for destroy event
[nc addObserver: self
- selector: @selector(destroy:)
- name: @"XTOQdestroyTheWindow"
- object: nil];
-
+ selector: @selector(destroy:)
+ name: @"XTOQdestroyTheWindow"
+ object: nil];
+
// regester for window will/did movement notification
- [nc addObserver:self
- selector:@selector(windowWillMove:)
- name:NSWindowWillMoveNotification
- object:nil];
-
- [nc addObserver:self
- selector:@selector(windowDidMove:)
- name:NSWindowDidMoveNotification
- object:nil];
+ [nc addObserver:self
+ selector:@selector(windowWillMove:)
+ name:NSWindowWillMoveNotification
+ object:nil];
+
+ [nc addObserver:self
+ selector:@selector(windowDidMove:)
+ name:NSWindowDidMoveNotification
+ object:nil];
// regester for window resize notification
- [nc addObserver:self
- selector:@selector(windowDidResize:)
- name:NSWindowDidResizeNotification
- object:nil];
- /* [nc addObserver:self
- selector:@selector(applicationWillTerminate:)
- name:NSApplicationWillTerminateNotification object:nil]; */
-
-
+ [nc addObserver:self
+ selector:@selector(windowDidResize:)
+ name:NSWindowDidResizeNotification
+ object:nil];
+ /* [nc addObserver:self
+ selector:@selector(applicationWillTerminate:)
+ name:NSApplicationWillTerminateNotification object:nil]; */
xcwmDispatchQueue = dispatch_queue_create("xcwm.dispatch.queue", NULL);
-
+
}
- (void)applicationWillTerminate:(NSNotification *)aNotification
{
xcwm_close();
-
+
const char *spawn[4];
pid_t child;
int error = 0;
-
+
spawn[0] = "/usr/bin/killall";
spawn[1] = "-9";
spawn[2] = "Xorg";
spawn[3] = NULL;
-
- posix_spawn(&child, spawn[0], NULL, NULL, (char * const*)spawn, environ);
+
+ posix_spawn(&child, spawn[0], NULL, NULL, (char *const *)spawn, environ);
}
- (void) applicationDidFinishLaunching: (NSNotification *) aNotification
{
[xcwmWindow makeKeyAndOrderFront: self];
-
+
//hide window
[xcwmWindow orderOut:self];
-
+
// Start the event loop and set the handler function
- xcwm_start_event_loop(rootContext, (void *) eventHandler);
+ xcwm_start_event_loop(rootContext, (void *)eventHandler);
}
-- (void) mouseMovedInApp: (NSNotification *) aNotification {
+- (void) mouseMovedInApp: (NSNotification *) aNotification
+{
//CGFloat heightFloat;
NSDictionary *mouseMoveInfo = [aNotification userInfo];
NSEvent * event = [mouseMoveInfo objectForKey: @"1"];
- NSNumber * xVal = [NSNumber alloc];
- NSNumber * yVal = [NSNumber alloc];
+ NSNumber * xVal = [NSNumber alloc];
+ NSNumber * yVal = [NSNumber alloc];
xVal = [mouseMoveInfo objectForKey: @"2"];
yVal = [mouseMoveInfo objectForKey: @"3"];
-
+
float height = [[NSScreen mainScreen] frame].size.height;
-
+
int yInt = height - FILEBAR - [yVal intValue];
yVal = [[NSNumber alloc] initWithInt:yInt];
-
+
NSLog(@"Mouse x = %i, y = %i", [xVal intValue], [yVal intValue]);
-
- dispatch_async(xcwmDispatchQueue,
+
+ dispatch_async(xcwmDispatchQueue,
^{ xcwm_mouse_motion (rootContext,
- [xVal intValue],
- [yVal intValue],
+ [xVal intValue],
+ [yVal intValue],
(int)[event windowNumber],
- 0);;});
+ 0);
+ ;
+ });
-
}
- (void) keyDownInView: (NSNotification *) aNotification
-{
+{
NSDictionary *keyInfo = [aNotification userInfo];
// note this keyInfo is the key in <key, value> not the key pressed
NSEvent * event = [keyInfo objectForKey: @"1"];
unsigned short aChar = [event keyCode];
- NSString* charNSString = [event characters];
+ NSString* charNSString = [event characters];
const char* charcharstar = [charNSString UTF8String];
NSLog(@"%s pressed", charcharstar);
- dispatch_async(xcwmDispatchQueue,
- ^{ xcwm_key_press(rootContext,
- (int)[event windowNumber],
- aChar + 8) ;});
- dispatch_async(xcwmDispatchQueue,
- ^{ xcwm_key_release(rootContext,
- (int)[event windowNumber],
- aChar + 8) ;});
+ dispatch_async(xcwmDispatchQueue,
+ ^{ xcwm_key_press (rootContext,
+ (int)[event windowNumber],
+ aChar + 8);
+ });
+ dispatch_async(xcwmDispatchQueue,
+ ^{ xcwm_key_release (rootContext,
+ (int)[event windowNumber],
+ aChar + 8);
+ });
}
-
// on this side all I have is a xcwm_context , on the library side I need
-// to turn that into a real context
+// to turn that into a real context
- (void) mouseButtonDownInView: (NSNotification *) aNotification
{
CGFloat heightFloat;
@@ -243,23 +248,25 @@
// NSLog(@"Controller Got a XTOQmouseButtonDownEvent");
NSEvent * event = [mouseDownInfo objectForKey: @"1"];
- NSNumber * heightAsNumber = [NSNumber alloc];
+ NSNumber * heightAsNumber = [NSNumber alloc];
heightAsNumber = [mouseDownInfo objectForKey: @"2"];
heightFloat = [heightAsNumber floatValue];
//NSLog(@"Mouse Info: %@", [mouseDownInfo objectForKey: @"2"]);
-
+
float height = [[NSScreen mainScreen] frame].size.height;
-
- dispatch_async(xcwmDispatchQueue,
+
+ dispatch_async(xcwmDispatchQueue,
^{ xcwm_button_press (rootContext,
0,
- 0,
+ 0,
(int)[event windowNumber],
- 0);;});
+ 0);
+ ;
+ });
}
// on this side all I have is a xcwm_context , on the library side I need
-// to turn that into a real context
+// to turn that into a real context
- (void) mouseButtonReleaseInView: (NSNotification *) aNotification
{
CGFloat heightFloat;
@@ -267,28 +274,31 @@
// NSLog(@"Controller Got a XTOQmouseButtonDownEvent");
NSEvent * event = [mouseReleaseInfo objectForKey: @"1"];
//NSRect bnd = NSMakeRect(0,0,512,386);
- NSNumber * heightAsNumber = [NSNumber alloc];
+ NSNumber * heightAsNumber = [NSNumber alloc];
heightAsNumber = [mouseReleaseInfo objectForKey: @"2"];
heightFloat = [heightAsNumber floatValue];
//NSLog(@"Mouse Info: %@", [mouseDownInfo objectForKey: @"2"]);
-
+
float height = [[NSScreen mainScreen] frame].size.height;
-
- dispatch_async(xcwmDispatchQueue,
+
+ dispatch_async(xcwmDispatchQueue,
^{ xcwm_button_release (rootContext,
0,
0,
(int)[event windowNumber],
- 0);;});
+ 0);
+ ;
+ });
}
-
-- (void) setScreen:(char *)scrn {
+- (void) setScreen:(char *)scrn
+{
screen = scrn;
}
-- (void) makeMenu {
- // Create menu
+- (void) makeMenu
+{
+ // Create menu
NSMenu *menubar;
NSMenuItem *appMenuItem;
NSMenu *appMenu;
@@ -300,231 +310,261 @@
menubar = [[NSMenu new] autorelease];
appMenuItem = [[NSMenuItem new] autorelease];
-
+
appMenu = [[NSMenu new] autorelease];
appName = [[NSProcessInfo processInfo] processName];
// Xtoq -> About
aboutTitle = [@"About " stringByAppendingString:appName];
- aboutMenuItem = [[NSMenuItem alloc] initWithTitle:aboutTitle
- action:NULL
- keyEquivalent:@"a"];
+ aboutMenuItem = [[NSMenuItem alloc] initWithTitle:aboutTitle
+ action:NULL
+ keyEquivalent:@"a"];
[appMenu addItem:aboutMenuItem];
[appMenuItem setSubmenu:appMenu];
-
+
// Xtoq -> Quit
quitTitle = [@"Quit " stringByAppendingString:appName];
- quitMenuItem = [[NSMenuItem alloc] initWithTitle:quitTitle
- action:@selector(terminate:)
- keyEquivalent:@"q"];
+ quitMenuItem = [[NSMenuItem alloc] initWithTitle:quitTitle
+ action:@selector(terminate:)
+ keyEquivalent:@"q"];
[appMenu addItem:quitMenuItem];
[appMenuItem setSubmenu:appMenu];
-
+
// Menu under Applications
NSMenu *startXMenu = [[NSMenu new] autorelease];
NSMenuItem *startXApps = [[NSMenuItem new] autorelease];
[startXMenu setTitle:@"Applications"];
-
+
// Run Xeyes
NSString *xTitle;
NSMenuItem *xeyesMenuItem;
xTitle = @"Run Xeyes";
- xeyesMenuItem = [[NSMenuItem alloc] initWithTitle:xTitle
- action:@selector(runXeyes:)
+ xeyesMenuItem = [[NSMenuItem alloc] initWithTitle:xTitle
+ action:@selector(runXeyes:)
keyEquivalent:@""];
[startXMenu addItem:xeyesMenuItem];
[startXApps setSubmenu:startXMenu];
-
+
// Run Xclock
NSMenuItem *xclockMenuItem;
xTitle = @"Run Xclock";
- xclockMenuItem = [[NSMenuItem alloc] initWithTitle:xTitle
+ xclockMenuItem = [[NSMenuItem alloc] initWithTitle:xTitle
action:@selector(runXclock:)
keyEquivalent:@""];
[startXMenu addItem:xclockMenuItem];
[startXApps setSubmenu:startXMenu];
-
+
// Run Xlogo
NSMenuItem *xlogoMenuItem;
xTitle = @"Run Xlogo";
- xlogoMenuItem = [[NSMenuItem alloc] initWithTitle:xTitle
+ xlogoMenuItem = [[NSMenuItem alloc] initWithTitle:xTitle
action:@selector(runXlogo:)
keyEquivalent:@""];
[startXMenu addItem:xlogoMenuItem];
[startXApps setSubmenu:startXMenu];
-
+
// Run Xterm
NSMenuItem *xtermMenuItem;
xTitle = @"Run Xterm";
- xtermMenuItem = [[NSMenuItem alloc] initWithTitle:xTitle
+ xtermMenuItem = [[NSMenuItem alloc] initWithTitle:xTitle
action:@selector(runXterm:)
keyEquivalent:@""];
[startXMenu addItem:xtermMenuItem];
[startXApps setSubmenu:startXMenu];
-
+
// Adding all the menu items to the main menu for XtoQ.
[menubar addItem:appMenuItem];
[menubar addItem:startXApps];
[NSApp setMainMenu:menubar];
}
-- (void) launch_client:(NSString *)filename {
+- (void) launch_client:(NSString *)filename
+{
int status;
pid_t child;
const char *file_name = [filename UTF8String];
const char *newargv[4];
-
+
asprintf(&newargv[0], "/usr/X11/bin/%s", file_name);
newargv[1] = "-display";
newargv[2] = screen;
newargv[3] = NULL;
-
- status = posix_spawn(&child, newargv[0], NULL, NULL, (char * const *) newargv, environ);
- if(status) {
+
+ status =
+ posix_spawn(&child, newargv[0], NULL, NULL, (char *const *)newargv,
+ environ);
+ if (status) {
NSLog(@"Error spawning file for launch.");
}
}
-- (void) runXeyes:(id) sender {
+- (void) runXeyes:(id) sender
+{
[self launch_client:@"xeyes"];
}
-- (void) runXclock:(id) sender {
+- (void) runXclock:(id) sender
+{
[self launch_client:@"xclock"];
}
-- (void) runXlogo:(id) sender {
- [self launch_client:@"xlogo"];
+- (void) runXlogo:(id) sender
+{
+ [self launch_client:@"xlogo"];
}
-- (void) runXterm:(id) sender {
- [self launch_client:@"xterm"];
+- (void) runXterm:(id) sender
+{
+ [self launch_client:@"xterm"];
}
-// create a new window
-- (void) createNewWindow: (xcwm_context_t *) windowContext {
-
+// create a new window
+- (void) createNewWindow: (xcwm_context_t *) windowContext
+{
+
XtoqWindow *newWindow;
XtoqView *newView;
xcwm_image_t *xcbImage;
- XtoqImageRep *imageRep;
+ XtoqImageRep *imageRep;
+
+ int y =
+ [self xserverToOSX:windowContext->y windowHeight:windowContext->
+ height];
+
+ newWindow = [[XtoqWindow alloc]
+ initWithContentRect: NSMakeRect(windowContext->x, y,
+ windowContext->width,
+ windowContext->height)
+ styleMask: (NSTitledWindowMask |
+ NSClosableWindowMask |
+ NSMiniaturizableWindowMask |
+ NSResizableWindowMask)
+ backing: NSBackingStoreBuffered
+ defer: YES];
- int y = [self xserverToOSX:windowContext->y windowHeight:windowContext->height];
-
- newWindow = [[XtoqWindow alloc]
- initWithContentRect: NSMakeRect(windowContext->x, y,
- windowContext->width, windowContext->height)
- styleMask: (NSTitledWindowMask |
- NSClosableWindowMask |
- NSMiniaturizableWindowMask |
- NSResizableWindowMask)
- backing: NSBackingStoreBuffered
- defer: YES];
-
// save context in window
[newWindow setContext:windowContext];
-
+
// save the newWindow pointer into the context
windowContext->local_data = (id)newWindow;
-
+
// get image to darw
xcbImage = xcwm_get_image(windowContext);
imageRep = [[XtoqImageRep alloc] initWithData:xcbImage x: 0 y: 0];
-
+
// draw the image into a rect
- NSRect imgRec = NSMakeRect(0, 0, [imageRep getWidth], [imageRep getHeight]);
-
+ NSRect imgRec = NSMakeRect(0, 0, [imageRep getWidth],
+ [imageRep getHeight]);
+
// create a view, init'ing it with our rect
newView = [[XtoqView alloc] initWithFrame:imgRec];
- [newView setContext:windowContext];
-
+ [newView setContext:windowContext];
+
// add view to its window
- [newWindow setContentView: newView ];
-
+ [newWindow setContentView: newView];
+
// set title
NSString *winTitle;
- winTitle = [NSString stringWithCString:windowContext->name encoding:NSUTF8StringEncoding];
+ winTitle =
+ [NSString stringWithCString:windowContext->name encoding:
+ NSUTF8StringEncoding
+ ];
[newWindow setTitle:winTitle];
-
+
//shows the window
[newWindow makeKeyAndOrderFront:self];
-
+
}
-- (void) destroyWindow:(xcwm_context_t *) windowContext {
+- (void) destroyWindow:(xcwm_context_t *) windowContext
+{
// set the window to be closed
XtoqWindow *destWindow = windowContext->local_data;
//close window
[destWindow close];
}
-- (void) destroy:(NSNotification *) aNotification {
-
- NSDictionary *contextInfo = [aNotification userInfo];
+- (void) destroy:(NSNotification *) aNotification
+{
+
+ NSDictionary *contextInfo = [aNotification userInfo];
XtoqWindow *aWindow = [contextInfo objectForKey: @"1"];
xcwm_context_t *theContext = [aWindow getContext];
-
- //use dispatch_async() to handle the actual close
- dispatch_async(xcwmDispatchQueue, ^{
- NSLog(@"Call xcwm_request_close(theContext)");
- xcwm_request_close(theContext);
- });
+
+ //use dispatch_async() to handle the actual close
+ dispatch_async(xcwmDispatchQueue, ^{
+ NSLog (@"Call xcwm_request_close(theContext)");
+ xcwm_request_close (theContext);
+ });
}
-- (void) windowWillMove:(NSNotification*)notification {
+- (void) windowWillMove:(NSNotification *)notification
+{
//NSLog(@"window will move");
}
- (void) updateImage:(xcwm_context_t *) windowContext
{
- float y_transformed;
- NSRect newDamageRect;
-
- y_transformed =( windowContext->height - windowContext->damaged_y - windowContext->damaged_height)/1.0;
- newDamageRect = NSMakeRect(windowContext->damaged_x,
- y_transformed,
- windowContext->damaged_width,
- windowContext->damaged_height);
- XtoqView *localView = (XtoqView *)[(XtoqWindow *)windowContext->local_data contentView];
- [ localView setPartialImage:newDamageRect];
+ float y_transformed;
+ NSRect newDamageRect;
+
+ y_transformed =
+ (windowContext->height - windowContext->damaged_y -
+ windowContext->damaged_height) / 1.0;
+ newDamageRect = NSMakeRect(windowContext->damaged_x,
+ y_transformed,
+ windowContext->damaged_width,
+ windowContext->damaged_height);
+ XtoqView *localView =
+ (XtoqView *)[(XtoqWindow *)windowContext->local_data contentView];
+ [localView setPartialImage:newDamageRect];
}
-- (void) windowDidMove:(NSNotification*)notification {
+- (void) windowDidMove:(NSNotification *)notification
+{
[self reshape];
}
-- (void) windowDidResize:(NSNotification*)notification {
+- (void) windowDidResize:(NSNotification *)notification
+{
[self reshape];
}
-- (void) reshape {
-
- XtoqWindow *moveWindow = (XtoqWindow *)[NSApp mainWindow];
-
- if (moveWindow != nil) {
- xcwm_context_t *moveContext = [moveWindow getContext];
+- (void) reshape
+{
+
+ XtoqWindow *moveWindow = (XtoqWindow *)[NSApp mainWindow];
+
+ if (moveWindow != nil) {
+ xcwm_context_t *moveContext = [moveWindow getContext];
NSRect moveFrame = [moveWindow frame];
int x = (int)moveFrame.origin.x;
int y = [self osxToXserver:(int)moveFrame.origin.y
- windowHeight:moveContext->height] - WINDOWBAR;
+ windowHeight:moveContext->height] - WINDOWBAR;
int width = (int)moveFrame.size.width;
int height = (int)moveFrame.size.height - WINDOWBAR;
- NSLog(@"Call xcwm_configure_window(moveContext, x = %i, y = %i, height = %i, width = %i)", x, y, height, width);
- xcwm_configure_window(moveContext, x, y - height, height, width);
- }
+ NSLog(
+ @"Call xcwm_configure_window(moveContext, x = %i, y = %i, height = %i, width = %i)",
+ x, y, height, width);
+ xcwm_configure_window(moveContext, x, y - height, height, width);
+ }
}
@end
-void eventHandler (xcwm_event_t *event)
+void
+eventHandler(xcwm_event_t *event)
{
xcwm_context_t *context = xcwm_event_get_context(event);
if (xcwm_event_get_type(event) == XTOQ_DAMAGE) {
- [referenceToSelf updateImage: context];
- } else if (xcwm_event_get_type(event) == XTOQ_CREATE) {
+ [referenceToSelf updateImage: context];
+ }
+ else if (xcwm_event_get_type(event) == XTOQ_CREATE) {
NSLog(@"Window was created");
[referenceToSelf createNewWindow: context];
- } else if (xcwm_event_get_type(event) == XTOQ_DESTROY) {
+ }
+ else if (xcwm_event_get_type(event) == XTOQ_DESTROY) {
NSLog(@"Window was destroyed");
[referenceToSelf destroyWindow: context];
- } else {
- NSLog(@"Hey I'm Not damage!");
+ }
+ else {
+ NSLog(@"Hey I'm Not damage!");
}
free(event);
}
diff --git a/src/xtoq/XtoqImageRep.h b/src/xtoq/XtoqImageRep.h
index 1f2c111..0669dfe 100644
--- a/src/xtoq/XtoqImageRep.h
+++ b/src/xtoq/XtoqImageRep.h
@@ -28,7 +28,6 @@
#import <xcb/xcb_image.h>
#import <xcwm/xcwm.h>
-
@interface XtoqImageRep : NSImageRep {
CGImageRef cgImage;
xcb_image_t *imageT;
@@ -37,23 +36,21 @@
CGFloat width;
CGFloat height;
NSArray *imageTypes;
- NSSize windowSize;
+ NSSize windowSize;
float imageX;
float imageY;
-
+
}
- (float)imageX;
- (float)imageY;
-
/**
* Return an NSArray of supported file types, currently nil
* @return An array of supported image file types.
*/
- (NSArray *)imageUnfilteredTypes;
-
/**
* Return Yes if the xcb_image_t it is passed is not null, else No.
* @param imageData The image from the Xserver that you want drawn
@@ -70,7 +67,7 @@
/**
* Return whether the window was drawn
- * 'draw' draws the image at the coordinate system's origin
+ * 'draw' draws the image at the coordinate system's origin
* @return bool Yes if the image was drawn, No if it was not.
*/
- (BOOL)draw;
diff --git a/src/xtoq/XtoqImageRep.m b/src/xtoq/XtoqImageRep.m
index 89a404e..f0969b2 100644
--- a/src/xtoq/XtoqImageRep.m
+++ b/src/xtoq/XtoqImageRep.m
@@ -31,108 +31,121 @@
@implementation XtoqImageRep
-- (NSArray *)imageUnfilteredTypes{
- imageTypes = [[NSArray alloc] initWithObjects:nil];
+- (NSArray *)imageUnfilteredTypes
+{
+ imageTypes = [[NSArray alloc] initWithObjects:nil];
return imageTypes;
}
-- (BOOL)canInitWithData:(xcb_image_t *)imageData {
+- (BOOL)canInitWithData:(xcb_image_t *)imageData
+{
if (imageData == NULL) {
return NO;
- }
+ }
return YES;
}
-
-- (id)initWithData:(xcwm_image_t *)imageData x:(int)x y:(int)y{
+- (id)initWithData:(xcwm_image_t *)imageData x:(int)x y:(int)y
+{
imageParent = imageData;
imageT = imageData->image;
self = [super init];
- if (!self) {
- return nil;
+ if (!self) {
+ return nil;
}
- CGDataProviderRef cgdat = CGDataProviderCreateWithData (
- NULL,
- imageT->data,
- imageT->size,
- NULL
- );
-
+ CGDataProviderRef cgdat = CGDataProviderCreateWithData(
+ NULL,
+ imageT->data,
+ imageT->size,
+ NULL
+ );
+
CGColorSpaceRef csp = CGColorSpaceCreateDeviceRGB();
- CGBitmapInfo bitmapInfo = kCGImageAlphaNoneSkipFirst | kCGBitmapByteOrder32Host;
- cgImage = CGImageCreate (imageT->width,// size_t width,
- imageT->height, //size_t height,
- 8, //size_t bitsPerComponent,
- 32,//size_t bitsPerPixel,
- imageT->stride,//size_t bytesPerRow,
- csp, //CGColorSpaceRef colorspace,
- bitmapInfo,
- cgdat,//CGDataProviderRef provider,
- NULL, //const CGFloat decode[],
- YES, //bool shouldInterpolate,
- kCGRenderingIntentDefault //CGColorRenderingIntent intent
- );
+ CGBitmapInfo bitmapInfo = kCGImageAlphaNoneSkipFirst |
+ kCGBitmapByteOrder32Host;
+ cgImage = CGImageCreate(imageT->width, // size_t width,
+ imageT->height, //size_t height,
+ 8, //size_t bitsPerComponent,
+ 32, //size_t bitsPerPixel,
+ imageT->stride, //size_t bytesPerRow,
+ csp, //CGColorSpaceRef colorspace,
+ bitmapInfo,
+ cgdat, //CGDataProviderRef provider,
+ NULL, //const CGFloat decode[],
+ YES, //bool shouldInterpolate,
+ kCGRenderingIntentDefault //CGColorRenderingIntent intent
+ );
width = CGImageGetWidth(cgImage);
height = CGImageGetHeight(cgImage);
- size = NSMakeSize (width, height);
- imageX =x;
- imageY =y;
-
+ size = NSMakeSize(width, height);
+ imageX = x;
+ imageY = y;
+
return self;
}
-- (BOOL)draw{
- CGContextRef contextMac = [[NSGraphicsContext currentContext] graphicsPort];
+- (BOOL)draw
+{
+ CGContextRef contextMac =
+ [[NSGraphicsContext currentContext] graphicsPort];
if (contextMac == NULL)
NSLog(@"NULL context in draw");
- if ( !cgImage) {
+ if (!cgImage) {
NSLog(@"No image");
- return NO;
- }
+ return NO;
+ }
// CGContextDrawImage(contextMac, CGRectMake(imageX, imageY, width, height), cgImage);
- CGContextDrawImage(contextMac, CGRectMake(imageX, imageY, width, height), cgImage);
-
- return YES;
+ CGContextDrawImage(contextMac, CGRectMake(imageX, imageY, width,
+ height), cgImage);
+
+ return YES;
}
-- (BOOL)drawInRect:(NSRect)rect{
- CGContextRef contextMac = [[NSGraphicsContext currentContext] graphicsPort];
+- (BOOL)drawInRect:(NSRect)rect
+{
+ CGContextRef contextMac =
+ [[NSGraphicsContext currentContext] graphicsPort];
if (contextMac == NULL)
NSLog(@"NULL context in drawInRect");
- if ( !cgImage) {
+ if (!cgImage) {
NSLog(@"No image");
- return NO;
- }
+ return NO;
+ }
//changed origin to imageX imageY to get damage to work
- CGContextDrawImage(contextMac, CGRectMake(imageX, imageY, width, height), cgImage);
-
- return YES;
+ CGContextDrawImage(contextMac, CGRectMake(imageX, imageY, width,
+ height), cgImage);
+
+ return YES;
}
-- (NSSize)size{
+- (NSSize)size
+{
return size;
}
-- (CGFloat)getWidth{
+- (CGFloat)getWidth
+{
return width;
}
-- (CGFloat)getHeight{
+- (CGFloat)getHeight
+{
return height;
}
-- (float)imageX{
+- (float)imageX
+{
return imageX;
}
-- (float)imageY{
+- (float)imageY
+{
return imageY;
}
-- (void)destroy{
+- (void)destroy
+{
if (imageParent) {
xcwm_image_destroy(imageParent);
}
}
-
-
@end
diff --git a/src/xtoq/XtoqView.h b/src/xtoq/XtoqView.h
index fdd7b2e..0b229c0 100644
--- a/src/xtoq/XtoqView.h
+++ b/src/xtoq/XtoqView.h
@@ -1,30 +1,30 @@
/*Copyright (C) 2012 Aaron Skomra and Ben Huddle
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is furnished to do
-so, subject to the following conditions:
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
+ this software and associated documentation files (the "Software"), to deal in
+ the Software without restriction, including without limitation the rights to
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+ of the Software, and to permit persons to whom the Software is furnished to do
+ so, subject to the following conditions:
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+ */
-/**
+/**
* XtoqView.h
* Xtoq
*
- * Create an window that displays an image from a file,
- * that toggles between another when the down arrow key is pressed.
+ * Create an window that displays an image from a file,
+ * that toggles between another when the down arrow key is pressed.
*/
#import <Cocoa/Cocoa.h>
@@ -34,17 +34,17 @@ SOFTWARE.
@interface XtoqView : NSView {
xcwm_context_t *viewContext;
- //mouse event
+ //mouse event
NSPoint downPoint;
NSPoint currentPoint;
-
+
NSNotificationCenter * notificationCenter;
NSTrackingArea * trackingArea;
}
/**
* Intialize the view given its bounds
- * @param an NSRect with the bounds (size) of the view
+ * @param an NSRect with the bounds (size) of the view
*/
- (id)initWithFrame:(NSRect)frame;
@@ -56,7 +56,7 @@ SOFTWARE.
/**
* The OS X magic loop which is responsible for drawing content to the screen
- * @param a "fake" NSRect which is not actually used within the body of the
+ * @param a "fake" NSRect which is not actually used within the body of the
* method
*/
-(void)drawRect:(NSRect)dirtyRect;
diff --git a/src/xtoq/XtoqView.m b/src/xtoq/XtoqView.m
index 58d9dd5..e6d5776 100644
--- a/src/xtoq/XtoqView.m
+++ b/src/xtoq/XtoqView.m
@@ -1,22 +1,22 @@
/*Copyright (C) 2012 Aaron Skomra and Ben Huddle
-
- Permission is hereby granted, free of charge, to any person obtaining a copy of
- this software and associated documentation files (the "Software"), to deal in
- the Software without restriction, including without limitation the rights to
- use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
- of the Software, and to permit persons to whom the Software is furnished to do
- so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in all
- copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- SOFTWARE.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
+ this software and associated documentation files (the "Software"), to deal in
+ the Software without restriction, including without limitation the rights to
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+ of the Software, and to permit persons to whom the Software is furnished to do
+ so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
*/
#ifdef HAVE_CONFIG_H
@@ -25,132 +25,142 @@
#import "XtoqView.h"
-#define RECTLOG(rect) (NSLog(@"" #rect @" x:%f y:%f w:%f h:%f", rect.origin.x, rect.origin.y, rect.size.width, rect.size.height ));
-
@implementation XtoqView
/**
* This is the initializer.
*/
- (id)
-initWithFrame:(NSRect)frame {
+ initWithFrame:(NSRect)frame
+{
self = [super initWithFrame:frame];
-
+
if (self) {
notificationCenter = [NSNotificationCenter defaultCenter];
[[self window] flushWindow];
[self setNeedsDisplay:YES];
trackingArea = [[NSTrackingArea alloc] initWithRect:frame
- options: (NSTrackingMouseEnteredAndExited |
- NSTrackingMouseMoved
- | NSTrackingActiveInKeyWindow)
- owner:self userInfo:nil];
+ options: (
+ NSTrackingMouseEnteredAndExited |
+ NSTrackingMouseMoved
+ | NSTrackingActiveInKeyWindow)
+ owner:self userInfo:nil
+ ];
[self addTrackingArea:trackingArea];
-
+
}
return self;
}
--(void) setContext: (xcwm_context_t *)context {
+-(void) setContext: (xcwm_context_t *)context
+{
viewContext = context;
}
// Overridden by subclasses to draw the receiver’s image within the
// passed-in rectangle.
-(void)
-drawRect:(NSRect)dirtyRect {
+ drawRect:(NSRect)dirtyRect
+{
xcwm_image_t *imageT;
- float y_transformed;
- XtoqImageRep *imageNew;
+ float y_transformed;
+ XtoqImageRep *imageNew;
xcwm_get_event_thread_lock();
imageT = test_xcwm_get_image(viewContext);
- if (imageT->image) {
- y_transformed =( viewContext->height
- - viewContext->damaged_y
- - viewContext->damaged_height)/1.0;
- imageNew = [[XtoqImageRep alloc]
- initWithData:imageT
- x:((viewContext->damaged_x))
- y:y_transformed];
- [imageNew draw];
- [imageNew destroy];
-
- // Remove the damage
- xcwm_remove_context_damage(viewContext);
- }
- xcwm_release_event_thread_lock();
+ if (imageT->image) {
+ y_transformed = (viewContext->height
+ - viewContext->damaged_y
+ - viewContext->damaged_height) / 1.0;
+ imageNew = [[XtoqImageRep alloc]
+ initWithData:imageT
+ x:((viewContext->damaged_x))
+ y:y_transformed];
+ [imageNew draw];
+ [imageNew destroy];
+
+ // Remove the damage
+ xcwm_remove_context_damage(viewContext);
+ }
+ xcwm_release_event_thread_lock();
}
-
-
//This is necessary for accepting input.
- (BOOL)
-acceptsFirstResponder {
+ acceptsFirstResponder
+{
return YES;
}
-- (BOOL)acceptsMouseMovedEvents {
+- (BOOL)acceptsMouseMovedEvents
+{
return YES;
}
/*- (void)mouseEntered:(NSEvent *)theEvent {
-}
+ }
-- (void)mouseExited:(NSEvent *)theEvent {
+ - (void)mouseExited:(NSEvent *)theEvent {
-}
-
-- (void)rightMouseDown:(NSEvent *)theEvent
+ }
-}*/
+ - (void)rightMouseDown:(NSEvent *)theEvent
+
+ }*/
/**
* Capture keyboard events
*/
- (void)
-keyDown:(NSEvent *)theEvent {
- NSDictionary * dictionary = [NSDictionary dictionaryWithObject:theEvent
+ keyDown:(NSEvent *)theEvent
+{
+ NSDictionary * dictionary = [NSDictionary dictionaryWithObject:theEvent
forKey:@"1"];
- [notificationCenter postNotificationName:@"XTOQviewKeyDownEvent"
- object:self
+ [notificationCenter postNotificationName:@"XTOQviewKeyDownEvent"
+ object:self
userInfo:dictionary];
}
-(void)
-mouseDown:(NSEvent *)mouseEvent {
+ mouseDown:(NSEvent *)mouseEvent
+{
CGFloat f = [self bounds].size.height;
NSNumber *n = [[NSNumber alloc] initWithFloat:f];
//NSLog(@"mouseevent %i", [mouseEvent mouseLocation]->x);
- // NSLog(@"mouse event bound %f location %f", CGRectGetHeight(bnd), [mouseEvent locationInWindow].y );
- NSMutableDictionary *twoInfoDict = [[NSMutableDictionary alloc] initWithCapacity:2];
+ // NSLog(@"mouse event bound %f location %f", CGRectGetHeight(bnd), [mouseEvent locationInWindow].y );
+ NSMutableDictionary *twoInfoDict =
+ [[NSMutableDictionary alloc] initWithCapacity:2];
[twoInfoDict setObject:mouseEvent forKey:@"1"];
[twoInfoDict setObject:n forKey:@"2"];
//NSLog(@"bound %f location %f", CGRectGetHeight(bnd), [mouseEvent locationInWindow].y );
- [notificationCenter postNotificationName:@"XTOQmouseButtonDownEvent"
- object:self
+ [notificationCenter postNotificationName:@"XTOQmouseButtonDownEvent"
+ object:self
userInfo:twoInfoDict];
}
-- (void)mouseUp:(NSEvent *)theEvent {
- CGFloat f = [self bounds].size.height;
+- (void)mouseUp:(NSEvent *)theEvent
+{
+ CGFloat f = [self bounds].size.height;
NSNumber *n = [[NSNumber alloc] initWithFloat:f];
- NSMutableDictionary *twoInfoDict = [[NSMutableDictionary alloc] initWithCapacity:2];
+ NSMutableDictionary *twoInfoDict =
+ [[NSMutableDictionary alloc] initWithCapacity:2];
[twoInfoDict setObject:theEvent forKey:@"1"];
[twoInfoDict setObject:n forKey:@"2"];
- [notificationCenter postNotificationName:@"XTOQmouseButtonReleaseEvent"
- object:self
+ [notificationCenter postNotificationName:@"XTOQmouseButtonReleaseEvent"
+ object:self
userInfo:twoInfoDict];
}
-- (void)setPartialImage:(NSRect)newDamageRect {
+- (void)setPartialImage:(NSRect)newDamageRect
+{
[self setNeedsDisplayInRect:newDamageRect];
}
-- (BOOL)isOpaque{
+- (BOOL)isOpaque
+{
return YES;
}
diff --git a/src/xtoq/XtoqWindow.h b/src/xtoq/XtoqWindow.h
index 1248502..fbe4fd4 100644
--- a/src/xtoq/XtoqWindow.h
+++ b/src/xtoq/XtoqWindow.h
@@ -1,22 +1,22 @@
/*Copyright (C) 2012 Ben Huddle, Braden Wooley
-
- Permission is hereby granted, free of charge, to any person obtaining a copy of
- this software and associated documentation files (the "Software"), to deal in
- the Software without restriction, including without limitation the rights to
- use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
- of the Software, and to permit persons to whom the Software is furnished to do
- so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in all
- copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- SOFTWARE.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
+ this software and associated documentation files (the "Software"), to deal in
+ the Software without restriction, including without limitation the rights to
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+ of the Software, and to permit persons to whom the Software is furnished to do
+ so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
*/
// Placehoder
@@ -33,23 +33,23 @@
/**
* Used for initialization of a window.
*/
--(id) initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)aStyle
- backing:(NSBackingStoreType)bufferingType defer:(BOOL)flag;
+-(id)initWithContentRect:(NSRect) contentRect styleMask:(NSUInteger) aStyle
+ backing:(NSBackingStoreType) bufferingType defer:(BOOL)flag;
/*
* Orders a specific window to the front and makes it key window.
*/
--(void) makeKeyAndOrderFront:(id)sender;
+-(void)makeKeyAndOrderFront:(id)sender;
/**
* Used for setting member variables context and id.
*/
--(void) setContext: (xcwm_context_t *) aContext;
+-(void)setContext: (xcwm_context_t *)aContext;
/**
* Function for getting context of window from list.
*/
--(xcwm_context_t *) getContext;
+-(xcwm_context_t *)getContext;
/**
* Sets the root window's pointer xcwmLocalData to the context's pointer.
diff --git a/src/xtoq/XtoqWindow.m b/src/xtoq/XtoqWindow.m
index c61629e..3114bfa 100644
--- a/src/xtoq/XtoqWindow.m
+++ b/src/xtoq/XtoqWindow.m
@@ -1,22 +1,22 @@
/*Copyright (C) 2012 Ben Huddle, Braden Wooley, David Snyder
-
- Permission is hereby granted, free of charge, to any person obtaining a copy of
- this software and associated documentation files (the "Software"), to deal in
- the Software without restriction, including without limitation the rights to
- use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
- of the Software, and to permit persons to whom the Software is furnished to do
- so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in all
- copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- SOFTWARE.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
+ this software and associated documentation files (the "Software"), to deal in
+ the Software without restriction, including without limitation the rights to
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+ of the Software, and to permit persons to whom the Software is furnished to do
+ so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
*/
#ifdef HAVE_CONFIG_H
@@ -27,56 +27,62 @@
@implementation XtoqWindow
+-(id) initWithContentRect:(NSRect)contentRect
+ styleMask:(NSUInteger)aStyle
+ backing:(NSBackingStoreType)bufferingType
+ defer:(BOOL)flag
+{
-
--(id) initWithContentRect:(NSRect)contentRect
- styleMask:(NSUInteger)aStyle
- backing:(NSBackingStoreType)bufferingType
- defer:(BOOL)flag {
-
notificationCenter = [NSNotificationCenter defaultCenter];
-
+
// Hack job, probably -- David
- [[NSNotificationCenter defaultCenter] addObserver: self
- selector: @selector(windowDidBecomeKey:)
- name: @"NSWindowDidBecomeKeyNotification"
- object: self];
+ [[NSNotificationCenter defaultCenter] addObserver: self
+ selector: @selector(
+ windowDidBecomeKey:)
+ name:
+ @"NSWindowDidBecomeKeyNotification"
+ object: self];
// End Hack job -- David
-
+
XtoqWindow *result = [super initWithContentRect:contentRect
- styleMask:aStyle
- backing:bufferingType
- defer:flag];
+ styleMask:aStyle
+ backing:bufferingType
+ defer:flag];
return result;
}
--(void) makeKeyAndOrderFront:(id)sender {
+-(void) makeKeyAndOrderFront:(id)sender
+{
[super makeKeyAndOrderFront:sender];
}
--(void) setContext:(xcwm_context_t *)aContext {
+-(void) setContext:(xcwm_context_t *)aContext
+{
winContext = aContext;
}
--(xcwm_context_t *) getContext {
+-(xcwm_context_t *) getContext
+{
return winContext;
}
-- (BOOL) windowShouldClose:(id)sender {
+- (BOOL) windowShouldClose:(id)sender
+{
// send notification to controller to close the window
XtoqWindow * aWindow = self;
- NSDictionary * dictionary = [NSDictionary dictionaryWithObject:aWindow
- forKey:@"1"];
- [notificationCenter postNotificationName:@"XTOQdestroyTheWindow"
+ NSDictionary * dictionary = [NSDictionary dictionaryWithObject:aWindow
+ forKey:@"1"];
+ [notificationCenter postNotificationName:@"XTOQdestroyTheWindow"
object:self
- userInfo:dictionary];
-
+ userInfo:dictionary];
+
// keep window from closing till server tells it to
return NO;
}
--(void)windowDidBecomeKey:(NSNotification *)note {
-
+-(void)windowDidBecomeKey:(NSNotification *)note
+{
+
xcwm_set_input_focus(winContext);
xcwm_set_window_to_top(winContext);
}
diff --git a/src/xtoq/keymap.c b/src/xtoq/keymap.c
index 0104b17..8e0038f 100644
--- a/src/xtoq/keymap.c
+++ b/src/xtoq/keymap.c
@@ -29,14 +29,14 @@
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
+ */
#ifdef CONFIG_H
#include <config.h>
#endif
-#define HACK_MISSING 1
-#define HACK_KEYPAD 1
+#define HACK_MISSING 1
+#define HACK_KEYPAD 1
#define HACK_BLACKLIST 1
#include <unistd.h>
@@ -61,17 +61,17 @@
// FIXME: Convert away from server-style error logging
#define DEBUG_LOG(...) /**/
-#define ErrorF(...) /**/
+#define ErrorF(...) /**/
// Each key can generate 4 glyphs. They are, in order:
// unshifted, shifted, modeswitch unshifted, modeswitch shifted
-#define GLYPHS_PER_KEY 4
-#define NUM_KEYCODES 248 // NX_NUMKEYCODES might be better
-#define MIN_KEYCODE XkbMinLegalKeyCode // unfortunately, this isn't 0...
-#define MAX_KEYCODE NUM_KEYCODES + MIN_KEYCODE - 1
+#define GLYPHS_PER_KEY 4
+#define NUM_KEYCODES 248 // NX_NUMKEYCODES might be better
+#define MIN_KEYCODE XkbMinLegalKeyCode // unfortunately, this isn't 0...
+#define MAX_KEYCODE NUM_KEYCODES + MIN_KEYCODE - 1
// FIXME: Don't rely on this
-#define MAP_LENGTH 256
+#define MAP_LENGTH 256
enum {
MOD_COMMAND = 256,
@@ -90,32 +90,32 @@ const static struct {
unsigned short keycode;
KeySym keysym;
} known_keys[] = {
- {55, XK_Meta_L},
- {56, XK_Shift_L},
- {57, XK_Caps_Lock},
- {58, XK_Alt_L},
- {59, XK_Control_L},
-
- {60, XK_Shift_R},
- {61, XK_Alt_R},
- {62, XK_Control_R},
- {63, XK_Meta_R},
-
- {122, XK_F1},
- {120, XK_F2},
- {99, XK_F3},
- {118, XK_F4},
- {96, XK_F5},
- {97, XK_F6},
- {98, XK_F7},
- {100, XK_F8},
- {101, XK_F9},
- {109, XK_F10},
- {103, XK_F11},
- {111, XK_F12},
- {105, XK_F13},
- {107, XK_F14},
- {113, XK_F15},
+ { 55, XK_Meta_L },
+ { 56, XK_Shift_L },
+ { 57, XK_Caps_Lock },
+ { 58, XK_Alt_L },
+ { 59, XK_Control_L },
+
+ { 60, XK_Shift_R },
+ { 61, XK_Alt_R },
+ { 62, XK_Control_R },
+ { 63, XK_Meta_R },
+
+ { 122, XK_F1 },
+ { 120, XK_F2 },
+ { 99, XK_F3 },
+ { 118, XK_F4 },
+ { 96, XK_F5 },
+ { 97, XK_F6 },
+ { 98, XK_F7 },
+ { 100, XK_F8 },
+ { 101, XK_F9 },
+ { 109, XK_F10 },
+ { 103, XK_F11 },
+ { 111, XK_F12 },
+ { 105, XK_F13 },
+ { 107, XK_F14 },
+ { 113, XK_F15 },
};
#endif
@@ -127,23 +127,23 @@ const static struct {
unsigned short keycode;
KeySym normal, keypad;
} known_numeric_keys[] = {
- {65, XK_period, XK_KP_Decimal},
- {67, XK_asterisk, XK_KP_Multiply},
- {69, XK_plus, XK_KP_Add},
- {75, XK_slash, XK_KP_Divide},
- {76, 0x01000003, XK_KP_Enter},
- {78, XK_minus, XK_KP_Subtract},
- {81, XK_equal, XK_KP_Equal},
- {82, XK_0, XK_KP_0},
- {83, XK_1, XK_KP_1},
- {84, XK_2, XK_KP_2},
- {85, XK_3, XK_KP_3},
- {86, XK_4, XK_KP_4},
- {87, XK_5, XK_KP_5},
- {88, XK_6, XK_KP_6},
- {89, XK_7, XK_KP_7},
- {91, XK_8, XK_KP_8},
- {92, XK_9, XK_KP_9},
+ { 65, XK_period, XK_KP_Decimal },
+ { 67, XK_asterisk, XK_KP_Multiply },
+ { 69, XK_plus, XK_KP_Add },
+ { 75, XK_slash, XK_KP_Divide },
+ { 76, 0x01000003, XK_KP_Enter },
+ { 78, XK_minus, XK_KP_Subtract },
+ { 81, XK_equal, XK_KP_Equal },
+ { 82, XK_0, XK_KP_0 },
+ { 83, XK_1, XK_KP_1 },
+ { 84, XK_2, XK_KP_2 },
+ { 85, XK_3, XK_KP_3 },
+ { 86, XK_4, XK_KP_4 },
+ { 87, XK_5, XK_KP_5 },
+ { 88, XK_6, XK_KP_6 },
+ { 89, XK_7, XK_KP_7 },
+ { 91, XK_8, XK_KP_8 },
+ { 92, XK_9, XK_KP_9 },
};
#endif
@@ -154,7 +154,7 @@ const static struct {
*
* legacy Mac keycodes for arrow keys that shift-modify to math symbols
*/
-const static unsigned short keycode_blacklist[] = {66, 70, 72, 77};
+const static unsigned short keycode_blacklist[] = { 66, 70, 72, 77 };
#endif
/* Table mapping normal keysyms to their dead equivalents.
@@ -163,30 +163,30 @@ const static unsigned short keycode_blacklist[] = {66, 70, 72, 77};
const static struct {
KeySym normal, dead;
} dead_keys[] = {
- {XK_grave, XK_dead_grave},
- {XK_apostrophe, XK_dead_acute}, /* US:"=" on a Czech keyboard */
- {XK_acute, XK_dead_acute},
- {UKEYSYM (0x384), XK_dead_acute}, /* US:";" on a Greek keyboard */
+ { XK_grave, XK_dead_grave },
+ { XK_apostrophe, XK_dead_acute }, /* US:"=" on a Czech keyboard */
+ { XK_acute, XK_dead_acute },
+ { UKEYSYM(0x384), XK_dead_acute }, /* US:";" on a Greek keyboard */
// {XK_Greek_accentdieresis, XK_dead_diaeresis}, /* US:"opt+;" on a Greek keyboard ... replace with dead_accentdieresis if there is one */
- {XK_asciicircum, XK_dead_circumflex},
- {UKEYSYM (0x2c6), XK_dead_circumflex}, /* MODIFIER LETTER CIRCUMFLEX ACCENT */
- {XK_asciitilde, XK_dead_tilde},
- {UKEYSYM (0x2dc), XK_dead_tilde}, /* SMALL TILDE */
- {XK_macron, XK_dead_macron},
- {XK_breve, XK_dead_breve},
- {XK_abovedot, XK_dead_abovedot},
- {XK_diaeresis, XK_dead_diaeresis},
- {UKEYSYM (0x2da), XK_dead_abovering}, /* DOT ABOVE */
- {XK_doubleacute, XK_dead_doubleacute},
- {XK_caron, XK_dead_caron},
- {XK_cedilla, XK_dead_cedilla},
- {XK_ogonek, XK_dead_ogonek},
- {UKEYSYM (0x269), XK_dead_iota}, /* LATIN SMALL LETTER IOTA */
- {UKEYSYM (0x2ec), XK_dead_voiced_sound}, /* MODIFIER LETTER VOICING */
+ { XK_asciicircum, XK_dead_circumflex },
+ { UKEYSYM(0x2c6), XK_dead_circumflex }, /* MODIFIER LETTER CIRCUMFLEX ACCENT */
+ { XK_asciitilde, XK_dead_tilde },
+ { UKEYSYM(0x2dc), XK_dead_tilde }, /* SMALL TILDE */
+ { XK_macron, XK_dead_macron },
+ { XK_breve, XK_dead_breve },
+ { XK_abovedot, XK_dead_abovedot },
+ { XK_diaeresis, XK_dead_diaeresis },
+ { UKEYSYM(0x2da), XK_dead_abovering }, /* DOT ABOVE */
+ { XK_doubleacute, XK_dead_doubleacute },
+ { XK_caron, XK_dead_caron },
+ { XK_cedilla, XK_dead_cedilla },
+ { XK_ogonek, XK_dead_ogonek },
+ { UKEYSYM(0x269), XK_dead_iota }, /* LATIN SMALL LETTER IOTA */
+ { UKEYSYM(0x2ec), XK_dead_voiced_sound }, /* MODIFIER LETTER VOICING */
/* {XK_semivoiced_sound, XK_dead_semivoiced_sound}, */
- {UKEYSYM (0x323), XK_dead_belowdot}, /* COMBINING DOT BELOW */
- {UKEYSYM (0x309), XK_dead_hook}, /* COMBINING HOOK ABOVE */
- {UKEYSYM (0x31b), XK_dead_horn}, /* COMBINING HORN */
+ { UKEYSYM(0x323), XK_dead_belowdot }, /* COMBINING DOT BELOW */
+ { UKEYSYM(0x309), XK_dead_hook }, /* COMBINING HOOK ABOVE */
+ { UKEYSYM(0x31b), XK_dead_horn }, /* COMBINING HORN */
};
typedef struct XtoQKeymapInfo_struct {
@@ -207,7 +207,9 @@ XtoQKeymapInfo keyInfo;
* Use the keyMap field of keyboard info structure to populate
* the modMap and modifierKeycodes fields.
*/
-static void XtoQBuildModifierMaps(XtoQKeymapInfo *info) {
+static void
+XtoQBuildModifierMaps(XtoQKeymapInfo *info)
+{
int i;
KeySym *k;
@@ -218,89 +220,90 @@ static void XtoQBuildModifierMaps(XtoQKeymapInfo *info) {
k = info->keyMap + i * GLYPHS_PER_KEY;
switch (*k) {
- case XK_Shift_L:
- info->modifierKeycodes[NX_MODIFIERKEY_SHIFT][0] = i;
- info->modMap[MIN_KEYCODE + i] = ShiftMask;
- break;
+ case XK_Shift_L:
+ info->modifierKeycodes[NX_MODIFIERKEY_SHIFT][0] = i;
+ info->modMap[MIN_KEYCODE + i] = ShiftMask;
+ break;
- case XK_Shift_R:
+ case XK_Shift_R:
#ifdef NX_MODIFIERKEY_RSHIFT
- info->modifierKeycodes[NX_MODIFIERKEY_RSHIFT][0] = i;
+ info->modifierKeycodes[NX_MODIFIERKEY_RSHIFT][0] = i;
#else
- info->modifierKeycodes[NX_MODIFIERKEY_SHIFT][0] = i;
+ info->modifierKeycodes[NX_MODIFIERKEY_SHIFT][0] = i;
#endif
- info->modMap[MIN_KEYCODE + i] = ShiftMask;
- break;
+ info->modMap[MIN_KEYCODE + i] = ShiftMask;
+ break;
- case XK_Control_L:
- info->modifierKeycodes[NX_MODIFIERKEY_CONTROL][0] = i;
- info->modMap[MIN_KEYCODE + i] = ControlMask;
- break;
+ case XK_Control_L:
+ info->modifierKeycodes[NX_MODIFIERKEY_CONTROL][0] = i;
+ info->modMap[MIN_KEYCODE + i] = ControlMask;
+ break;
- case XK_Control_R:
+ case XK_Control_R:
#ifdef NX_MODIFIERKEY_RCONTROL
- info->modifierKeycodes[NX_MODIFIERKEY_RCONTROL][0] = i;
+ info->modifierKeycodes[NX_MODIFIERKEY_RCONTROL][0] = i;
#else
- info->modifierKeycodes[NX_MODIFIERKEY_CONTROL][0] = i;
+ info->modifierKeycodes[NX_MODIFIERKEY_CONTROL][0] = i;
#endif
- info->modMap[MIN_KEYCODE + i] = ControlMask;
- break;
+ info->modMap[MIN_KEYCODE + i] = ControlMask;
+ break;
- case XK_Caps_Lock:
- info->modifierKeycodes[NX_MODIFIERKEY_ALPHALOCK][0] = i;
- info->modMap[MIN_KEYCODE + i] = LockMask;
- break;
+ case XK_Caps_Lock:
+ info->modifierKeycodes[NX_MODIFIERKEY_ALPHALOCK][0] = i;
+ info->modMap[MIN_KEYCODE + i] = LockMask;
+ break;
- case XK_Alt_L:
- info->modifierKeycodes[NX_MODIFIERKEY_ALTERNATE][0] = i;
- info->modMap[MIN_KEYCODE + i] = Mod1Mask;
+ case XK_Alt_L:
+ info->modifierKeycodes[NX_MODIFIERKEY_ALTERNATE][0] = i;
+ info->modMap[MIN_KEYCODE + i] = Mod1Mask;
#if 0
// FIXME: Add support for this toggle into XtoQ
- if(!XQuartzOptionSendsAlt)
- *k = XK_Mode_switch; // Yes, this is ugly. This needs to be cleaned up when we integrate quartzKeyboard with this code and refactor.
+ if (!XQuartzOptionSendsAlt)
+ *k = XK_Mode_switch; // Yes, this is ugly. This needs to be cleaned up when we integrate quartzKeyboard with this code and refactor.
#endif
- break;
+ break;
- case XK_Alt_R:
+ case XK_Alt_R:
#ifdef NX_MODIFIERKEY_RALTERNATE
- info->modifierKeycodes[NX_MODIFIERKEY_RALTERNATE][0] = i;
+ info->modifierKeycodes[NX_MODIFIERKEY_RALTERNATE][0] = i;
#else
- info->modifierKeycodes[NX_MODIFIERKEY_ALTERNATE][0] = i;
+ info->modifierKeycodes[NX_MODIFIERKEY_ALTERNATE][0] = i;
#endif
#if 0
// FIXME: Add support for this toggle into XtoQ
- if(!XQuartzOptionSendsAlt)
- *k = XK_Mode_switch; // Yes, this is ugly. This needs to be cleaned up when we integrate quartzKeyboard with this code and refactor.
+ if (!XQuartzOptionSendsAlt)
+ *k = XK_Mode_switch; // Yes, this is ugly. This needs to be cleaned up when we integrate quartzKeyboard with this code and refactor.
#endif
- info->modMap[MIN_KEYCODE + i] = Mod1Mask;
- break;
+ info->modMap[MIN_KEYCODE + i] = Mod1Mask;
+ break;
- case XK_Mode_switch:
- ErrorF("XtoQBuildModifierMaps: XK_Mode_switch encountered, unable to determine side.\n");
- info->modifierKeycodes[NX_MODIFIERKEY_ALTERNATE][0] = i;
+ case XK_Mode_switch:
+ ErrorF(
+ "XtoQBuildModifierMaps: XK_Mode_switch encountered, unable to determine side.\n");
+ info->modifierKeycodes[NX_MODIFIERKEY_ALTERNATE][0] = i;
#ifdef NX_MODIFIERKEY_RALTERNATE
- info->modifierKeycodes[NX_MODIFIERKEY_RALTERNATE][0] = i;
+ info->modifierKeycodes[NX_MODIFIERKEY_RALTERNATE][0] = i;
#endif
- info->modMap[MIN_KEYCODE + i] = Mod1Mask;
- break;
+ info->modMap[MIN_KEYCODE + i] = Mod1Mask;
+ break;
- case XK_Meta_L:
- info->modifierKeycodes[NX_MODIFIERKEY_COMMAND][0] = i;
- info->modMap[MIN_KEYCODE + i] = Mod2Mask;
- break;
+ case XK_Meta_L:
+ info->modifierKeycodes[NX_MODIFIERKEY_COMMAND][0] = i;
+ info->modMap[MIN_KEYCODE + i] = Mod2Mask;
+ break;
- case XK_Meta_R:
+ case XK_Meta_R:
#ifdef NX_MODIFIERKEY_RCOMMAND
- info->modifierKeycodes[NX_MODIFIERKEY_RCOMMAND][0] = i;
+ info->modifierKeycodes[NX_MODIFIERKEY_RCOMMAND][0] = i;
#else
- info->modifierKeycodes[NX_MODIFIERKEY_COMMAND][0] = i;
+ info->modifierKeycodes[NX_MODIFIERKEY_COMMAND][0] = i;
#endif
- info->modMap[MIN_KEYCODE + i] = Mod2Mask;
- break;
+ info->modMap[MIN_KEYCODE + i] = Mod2Mask;
+ break;
- case XK_Num_Lock:
- info->modMap[MIN_KEYCODE + i] = Mod3Mask;
- break;
+ case XK_Num_Lock:
+ info->modMap[MIN_KEYCODE + i] = Mod3Mask;
+ break;
}
}
}
@@ -310,46 +313,51 @@ static void XtoQBuildModifierMaps(XtoQKeymapInfo *info) {
/* Set the repeat rates based on global preferences and keycodes for modifiers.
* Precondition: Has the keyInfo_mutex lock.
*/
-static void XtoQKeyboardSetRepeat(DeviceIntPtr pDev, int initialKeyRepeatValue, int keyRepeatValue) {
- if(initialKeyRepeatValue == 300000) { // off
+static void
+XtoQKeyboardSetRepeat(DeviceIntPtr pDev, int initialKeyRepeatValue,
+ int keyRepeatValue)
+{
+ if (initialKeyRepeatValue == 300000) { // off
/* Turn off repeats globally */
XkbSetRepeatKeys(pDev, -1, AutoRepeatModeOff);
- } else {
+ }
+ else {
int i;
- XkbControlsPtr ctrl;
- XkbControlsRec old;
+ XkbControlsPtr ctrl;
+ XkbControlsRec old;
/* Turn on repeats globally */
XXkbSetRepeatKeys(pDev, -1, AutoRepeatModeOn);
-
+
/* Setup the bit mask for individual key repeats */
ctrl = pDev->key->xkbInfo->desc->ctrls;
- old= *ctrl;
-
+ old = *ctrl;
+
ctrl->repeat_delay = initialKeyRepeatValue * 15;
ctrl->repeat_interval = keyRepeatValue * 15;
/* Turn off key-repeat for modifier keys, on for others */
/* First set them all on */
- for(i=0; i < XkbPerKeyBitArraySize; i++)
+ for (i = 0; i < XkbPerKeyBitArraySize; i++)
ctrl->per_key_repeat[i] = -1;
/* Now turn off the modifiers */
- for(i=0; i < 32; i++) {
+ for (i = 0; i < 32; i++) {
unsigned char keycode;
-
+
keycode = keyInfo.modifierKeycodes[i][0];
- if(keycode)
+ if (keycode)
ClearBit(ctrl->per_key_repeat, keycode + MIN_KEYCODE);
keycode = keyInfo.modifierKeycodes[i][1];
- if(keycode)
+ if (keycode)
ClearBit(ctrl->per_key_repeat, keycode + MIN_KEYCODE);
}
/* Hurray for data duplication */
if (pDev->kbdfeed)
- memcpy(pDev->kbdfeed->ctrl.autoRepeats, ctrl->per_key_repeat, XkbPerKeyBitArraySize);
+ memcpy(pDev->kbdfeed->ctrl.autoRepeats, ctrl->per_key_repeat,
+ XkbPerKeyBitArraySize);
//ErrorF("per_key_repeat =\n");
//for(i=0; i < XkbPerKeyBitArraySize; i++)
@@ -361,7 +369,9 @@ static void XtoQKeyboardSetRepeat(DeviceIntPtr pDev, int initialKeyRepeatValue,
}
#endif
-void XtoQKeyboardReloadHandler(void) {
+void
+XtoQKeyboardReloadHandler(void)
+{
CFIndex initialKeyRepeatValue, keyRepeatValue;
Boolean ok;
#if 0 /* FIXME: Don't worry about xmodmap until we're done with everything else */
@@ -375,57 +385,72 @@ void XtoQKeyboardReloadHandler(void) {
/* Get our key repeat settings from GlobalPreferences */
(void)CFPreferencesAppSynchronize(CFSTR(".GlobalPreferences"));
-
- initialKeyRepeatValue = CFPreferencesGetAppIntegerValue(CFSTR("InitialKeyRepeat"), CFSTR(".GlobalPreferences"), &ok);
- if(!ok)
+
+ initialKeyRepeatValue =
+ CFPreferencesGetAppIntegerValue(CFSTR("InitialKeyRepeat"),
+ CFSTR(".GlobalPreferences"), &ok);
+ if (!ok)
initialKeyRepeatValue = 35;
-
- keyRepeatValue = CFPreferencesGetAppIntegerValue(CFSTR("KeyRepeat"), CFSTR(".GlobalPreferences"), &ok);
- if(!ok)
+
+ keyRepeatValue = CFPreferencesGetAppIntegerValue(CFSTR(
+ "KeyRepeat"),
+ CFSTR(
+ ".GlobalPreferences"),
+ &ok);
+ if (!ok)
keyRepeatValue = 6;
-#if 0
- //FIXME: Use Xi's ChangeDeviceKeyMapping (note that this won't handle modMap).
- // modMap needs to be sent using the core SetModifierMapping request,
- // and it probably needs to be in a different format than it is currently.
+#if 0
+ //FIXME: Use Xi's ChangeDeviceKeyMapping (note that this won't handle modMap).
+ // modMap needs to be sent using the core SetModifierMapping request,
+ // and it probably needs to be in a different format than it is currently.
- /* Initialize our keySyms */
- KeySymsRec keySyms;
- keySyms.map = keyInfo.keyMap;
- keySyms.mapWidth = GLYPHS_PER_KEY;
- keySyms.minKeyCode = MIN_KEYCODE;
- keySyms.maxKeyCode = MAX_KEYCODE;
+ /* Initialize our keySyms */
+ KeySymsRec keySyms;
+ keySyms.map = keyInfo.keyMap;
+ keySyms.mapWidth = GLYPHS_PER_KEY;
+ keySyms.minKeyCode = MIN_KEYCODE;
+ keySyms.maxKeyCode = MAX_KEYCODE;
- // TODO: We should build the entire XkbDescRec and use XkbCopyKeymap
- /* Apply the mappings to darwinKeyboard */
- //XkbApplyMappingChange(darwinKeyboard, &keySyms, keySyms.minKeyCode,
- // keySyms.maxKeyCode - keySyms.minKeyCode + 1,
- // keyInfo.modMap, serverClient);
- //FIXME: Disabled XtoQKeyboardSetRepeat(darwinKeyboard, initialKeyRepeatValue, keyRepeatValue);
+ // TODO: We should build the entire XkbDescRec and use XkbCopyKeymap
+ /* Apply the mappings to darwinKeyboard */
+ //XkbApplyMappingChange(darwinKeyboard, &keySyms, keySyms.minKeyCode,
+ // keySyms.maxKeyCode - keySyms.minKeyCode + 1,
+ // keyInfo.modMap, serverClient);
+ //FIXME: Disabled XtoQKeyboardSetRepeat(darwinKeyboard, initialKeyRepeatValue, keyRepeatValue);
#endif
#if 0 /* FIXME: Don't worry about xmodmap until we're done with everything else */
- /* Modify with xmodmap */
+ /* Modify with xmodmap */
if (access(xmodmap, F_OK) == 0) {
/* Check for system .Xmodmap */
if (access(sysmodmap, F_OK) == 0) {
- if(snprintf (cmd, sizeof(cmd), "%s %s", xmodmap, sysmodmap) < sizeof(cmd)) {
+ if (snprintf(cmd, sizeof(cmd), "%s %s", xmodmap,
+ sysmodmap) < sizeof(cmd)) {
X11ApplicationLaunchClient(cmd);
- } else {
- ErrorF("X11.app: Unable to create / execute xmodmap command line");
+ }
+ else {
+ ErrorF(
+ "X11.app: Unable to create / execute xmodmap command line");
}
}
/* Check for user's local .Xmodmap */
- if ((homedir != NULL) && (snprintf (usermodmap, sizeof(usermodmap), "%s/.Xmodmap", homedir) < sizeof(usermodmap))) {
+ if ((homedir != NULL) &&
+ (snprintf(usermodmap, sizeof(usermodmap), "%s/.Xmodmap",
+ homedir) < sizeof(usermodmap))) {
if (access(usermodmap, F_OK) == 0) {
- if(snprintf (cmd, sizeof(cmd), "%s %s", xmodmap, usermodmap) < sizeof(cmd)) {
+ if (snprintf(cmd, sizeof(cmd), "%s %s", xmodmap,
+ usermodmap) < sizeof(cmd)) {
X11ApplicationLaunchClient(cmd);
- } else {
- ErrorF("X11.app: Unable to create / execute xmodmap command line");
+ }
+ else {
+ ErrorF(
+ "X11.app: Unable to create / execute xmodmap command line");
}
}
- } else {
+ }
+ else {
ErrorF("X11.app: Unable to determine path to user's .Xmodmap");
}
}
@@ -448,7 +473,9 @@ void XtoQKeyboardReloadHandler(void) {
* side = 0 for left or 1 for right.
* Returns 0 if key+side is not a known modifier.
*/
-int XtoQModifierNXKeyToNXKeycode(int key, int side) {
+int
+XtoQModifierNXKeyToNXKeycode(int key, int side)
+{
return keyInfo.modifierKeycodes[key][side];
}
@@ -457,7 +484,9 @@ int XtoQModifierNXKeyToNXKeycode(int key, int side) {
* Returns -1 if keycode+side is not a modifier key
* outSide may be NULL, else it gets 0 for left and 1 for right.
*/
-int XtoQModifierNXKeycodeToNXKey(unsigned char keycode, int *outSide) {
+int
+XtoQModifierNXKeycodeToNXKey(unsigned char keycode, int *outSide)
+{
int key, side;
keycode += MIN_KEYCODE;
@@ -481,32 +510,65 @@ int XtoQModifierNXKeycodeToNXKey(unsigned char keycode, int *outSide) {
* XtoQModifierNXMaskToNXKey
* Returns -1 if mask is not a known modifier mask.
*/
-int XtoQModifierNXMaskToNXKey(int mask) {
+int
+XtoQModifierNXMaskToNXKey(int mask)
+{
switch (mask) {
- case NX_ALPHASHIFTMASK: return NX_MODIFIERKEY_ALPHALOCK;
- case NX_SHIFTMASK: return NX_MODIFIERKEY_SHIFT;
+ case NX_ALPHASHIFTMASK:
+ return NX_MODIFIERKEY_ALPHALOCK;
+
+ case NX_SHIFTMASK:
+ return NX_MODIFIERKEY_SHIFT;
+
#ifdef NX_DEVICELSHIFTKEYMASK
- case NX_DEVICELSHIFTKEYMASK: return NX_MODIFIERKEY_SHIFT;
- case NX_DEVICERSHIFTKEYMASK: return NX_MODIFIERKEY_RSHIFT;
+ case NX_DEVICELSHIFTKEYMASK:
+ return NX_MODIFIERKEY_SHIFT;
+
+ case NX_DEVICERSHIFTKEYMASK:
+ return NX_MODIFIERKEY_RSHIFT;
+
#endif
- case NX_CONTROLMASK: return NX_MODIFIERKEY_CONTROL;
+ case NX_CONTROLMASK:
+ return NX_MODIFIERKEY_CONTROL;
+
#ifdef NX_DEVICELCTLKEYMASK
- case NX_DEVICELCTLKEYMASK: return NX_MODIFIERKEY_CONTROL;
- case NX_DEVICERCTLKEYMASK: return NX_MODIFIERKEY_RCONTROL;
+ case NX_DEVICELCTLKEYMASK:
+ return NX_MODIFIERKEY_CONTROL;
+
+ case NX_DEVICERCTLKEYMASK:
+ return NX_MODIFIERKEY_RCONTROL;
+
#endif
- case NX_ALTERNATEMASK: return NX_MODIFIERKEY_ALTERNATE;
+ case NX_ALTERNATEMASK:
+ return NX_MODIFIERKEY_ALTERNATE;
+
#ifdef NX_DEVICELALTKEYMASK
- case NX_DEVICELALTKEYMASK: return NX_MODIFIERKEY_ALTERNATE;
- case NX_DEVICERALTKEYMASK: return NX_MODIFIERKEY_RALTERNATE;
+ case NX_DEVICELALTKEYMASK:
+ return NX_MODIFIERKEY_ALTERNATE;
+
+ case NX_DEVICERALTKEYMASK:
+ return NX_MODIFIERKEY_RALTERNATE;
+
#endif
- case NX_COMMANDMASK: return NX_MODIFIERKEY_COMMAND;
+ case NX_COMMANDMASK:
+ return NX_MODIFIERKEY_COMMAND;
+
#ifdef NX_DEVICELCMDKEYMASK
- case NX_DEVICELCMDKEYMASK: return NX_MODIFIERKEY_COMMAND;
- case NX_DEVICERCMDKEYMASK: return NX_MODIFIERKEY_RCOMMAND;
+ case NX_DEVICELCMDKEYMASK:
+ return NX_MODIFIERKEY_COMMAND;
+
+ case NX_DEVICERCMDKEYMASK:
+ return NX_MODIFIERKEY_RCOMMAND;
+
#endif
- case NX_NUMERICPADMASK: return NX_MODIFIERKEY_NUMERICPAD;
- case NX_HELPMASK: return NX_MODIFIERKEY_HELP;
- case NX_SECONDARYFNMASK: return NX_MODIFIERKEY_SECONDARYFN;
+ case NX_NUMERICPADMASK:
+ return NX_MODIFIERKEY_NUMERICPAD;
+
+ case NX_HELPMASK:
+ return NX_MODIFIERKEY_HELP;
+
+ case NX_SECONDARYFNMASK:
+ return NX_MODIFIERKEY_SECONDARYFN;
}
return -1;
}
@@ -515,27 +577,60 @@ int XtoQModifierNXMaskToNXKey(int mask) {
* XtoQModifierNXKeyToNXMask
* Returns 0 if key is not a known modifier key.
*/
-int XtoQModifierNXKeyToNXMask(int key) {
+int
+XtoQModifierNXKeyToNXMask(int key)
+{
switch (key) {
- case NX_MODIFIERKEY_ALPHALOCK: return NX_ALPHASHIFTMASK;
+ case NX_MODIFIERKEY_ALPHALOCK:
+ return NX_ALPHASHIFTMASK;
+
#ifdef NX_DEVICELSHIFTKEYMASK
- case NX_MODIFIERKEY_SHIFT: return NX_DEVICELSHIFTKEYMASK;
- case NX_MODIFIERKEY_RSHIFT: return NX_DEVICERSHIFTKEYMASK;
- case NX_MODIFIERKEY_CONTROL: return NX_DEVICELCTLKEYMASK;
- case NX_MODIFIERKEY_RCONTROL: return NX_DEVICERCTLKEYMASK;
- case NX_MODIFIERKEY_ALTERNATE: return NX_DEVICELALTKEYMASK;
- case NX_MODIFIERKEY_RALTERNATE: return NX_DEVICERALTKEYMASK;
- case NX_MODIFIERKEY_COMMAND: return NX_DEVICELCMDKEYMASK;
- case NX_MODIFIERKEY_RCOMMAND: return NX_DEVICERCMDKEYMASK;
+ case NX_MODIFIERKEY_SHIFT:
+ return NX_DEVICELSHIFTKEYMASK;
+
+ case NX_MODIFIERKEY_RSHIFT:
+ return NX_DEVICERSHIFTKEYMASK;
+
+ case NX_MODIFIERKEY_CONTROL:
+ return NX_DEVICELCTLKEYMASK;
+
+ case NX_MODIFIERKEY_RCONTROL:
+ return NX_DEVICERCTLKEYMASK;
+
+ case NX_MODIFIERKEY_ALTERNATE:
+ return NX_DEVICELALTKEYMASK;
+
+ case NX_MODIFIERKEY_RALTERNATE:
+ return NX_DEVICERALTKEYMASK;
+
+ case NX_MODIFIERKEY_COMMAND:
+ return NX_DEVICELCMDKEYMASK;
+
+ case NX_MODIFIERKEY_RCOMMAND:
+ return NX_DEVICERCMDKEYMASK;
+
#else
- case NX_MODIFIERKEY_SHIFT: return NX_SHIFTMASK;
- case NX_MODIFIERKEY_CONTROL: return NX_CONTROLMASK;
- case NX_MODIFIERKEY_ALTERNATE: return NX_ALTERNATEMASK;
- case NX_MODIFIERKEY_COMMAND: return NX_COMMANDMASK;
-#endif
- case NX_MODIFIERKEY_NUMERICPAD: return NX_NUMERICPADMASK;
- case NX_MODIFIERKEY_HELP: return NX_HELPMASK;
- case NX_MODIFIERKEY_SECONDARYFN: return NX_SECONDARYFNMASK;
+ case NX_MODIFIERKEY_SHIFT:
+ return NX_SHIFTMASK;
+
+ case NX_MODIFIERKEY_CONTROL:
+ return NX_CONTROLMASK;
+
+ case NX_MODIFIERKEY_ALTERNATE:
+ return NX_ALTERNATEMASK;
+
+ case NX_MODIFIERKEY_COMMAND:
+ return NX_COMMANDMASK;
+
+#endif
+ case NX_MODIFIERKEY_NUMERICPAD:
+ return NX_NUMERICPADMASK;
+
+ case NX_MODIFIERKEY_HELP:
+ return NX_HELPMASK;
+
+ case NX_MODIFIERKEY_SECONDARYFN:
+ return NX_SECONDARYFNMASK;
}
return 0;
}
@@ -544,89 +639,124 @@ int XtoQModifierNXKeyToNXMask(int key) {
* XtoQModifierStringToNXMask
* Returns 0 if string is not a known modifier.
*/
-int XtoQModifierStringToNXMask(const char *str, int separatelr) {
+int
+XtoQModifierStringToNXMask(const char *str, int separatelr)
+{
#ifdef NX_DEVICELSHIFTKEYMASK
- if(separatelr) {
- if (!strcasecmp(str, "shift")) return NX_DEVICELSHIFTKEYMASK | NX_DEVICERSHIFTKEYMASK;
- if (!strcasecmp(str, "control")) return NX_DEVICELCTLKEYMASK | NX_DEVICERCTLKEYMASK;
- if (!strcasecmp(str, "option")) return NX_DEVICELALTKEYMASK | NX_DEVICERALTKEYMASK;
- if (!strcasecmp(str, "alt")) return NX_DEVICELALTKEYMASK | NX_DEVICERALTKEYMASK;
- if (!strcasecmp(str, "command")) return NX_DEVICELCMDKEYMASK | NX_DEVICERCMDKEYMASK;
- if (!strcasecmp(str, "lshift")) return NX_DEVICELSHIFTKEYMASK;
- if (!strcasecmp(str, "rshift")) return NX_DEVICERSHIFTKEYMASK;
+ if (separatelr) {
+ if (!strcasecmp(str,
+ "shift")) return NX_DEVICELSHIFTKEYMASK |
+ NX_DEVICERSHIFTKEYMASK;
+ if (!strcasecmp(str,
+ "control")) return NX_DEVICELCTLKEYMASK |
+ NX_DEVICERCTLKEYMASK;
+ if (!strcasecmp(str,
+ "option")) return NX_DEVICELALTKEYMASK |
+ NX_DEVICERALTKEYMASK;
+ if (!strcasecmp(str,
+ "alt")) return NX_DEVICELALTKEYMASK |
+ NX_DEVICERALTKEYMASK;
+ if (!strcasecmp(str,
+ "command")) return NX_DEVICELCMDKEYMASK |
+ NX_DEVICERCMDKEYMASK;
+ if (!strcasecmp(str, "lshift")) return NX_DEVICELSHIFTKEYMASK;
+ if (!strcasecmp(str, "rshift")) return NX_DEVICERSHIFTKEYMASK;
if (!strcasecmp(str, "lcontrol")) return NX_DEVICELCTLKEYMASK;
if (!strcasecmp(str, "rcontrol")) return NX_DEVICERCTLKEYMASK;
- if (!strcasecmp(str, "loption")) return NX_DEVICELALTKEYMASK;
- if (!strcasecmp(str, "roption")) return NX_DEVICERALTKEYMASK;
- if (!strcasecmp(str, "lalt")) return NX_DEVICELALTKEYMASK;
- if (!strcasecmp(str, "ralt")) return NX_DEVICERALTKEYMASK;
+ if (!strcasecmp(str, "loption")) return NX_DEVICELALTKEYMASK;
+ if (!strcasecmp(str, "roption")) return NX_DEVICERALTKEYMASK;
+ if (!strcasecmp(str, "lalt")) return NX_DEVICELALTKEYMASK;
+ if (!strcasecmp(str, "ralt")) return NX_DEVICERALTKEYMASK;
if (!strcasecmp(str, "lcommand")) return NX_DEVICELCMDKEYMASK;
if (!strcasecmp(str, "rcommand")) return NX_DEVICERCMDKEYMASK;
- } else {
-#endif
- if (!strcasecmp(str, "shift")) return NX_SHIFTMASK;
- if (!strcasecmp(str, "control")) return NX_CONTROLMASK;
- if (!strcasecmp(str, "option")) return NX_ALTERNATEMASK;
- if (!strcasecmp(str, "alt")) return NX_ALTERNATEMASK;
- if (!strcasecmp(str, "command")) return NX_COMMANDMASK;
- if (!strcasecmp(str, "lshift")) return NX_SHIFTMASK;
- if (!strcasecmp(str, "rshift")) return NX_SHIFTMASK;
- if (!strcasecmp(str, "lcontrol")) return NX_CONTROLMASK;
- if (!strcasecmp(str, "rcontrol")) return NX_CONTROLMASK;
- if (!strcasecmp(str, "loption")) return NX_ALTERNATEMASK;
- if (!strcasecmp(str, "roption")) return NX_ALTERNATEMASK;
- if (!strcasecmp(str, "lalt")) return NX_ALTERNATEMASK;
- if (!strcasecmp(str, "ralt")) return NX_ALTERNATEMASK;
- if (!strcasecmp(str, "lcommand")) return NX_COMMANDMASK;
- if (!strcasecmp(str, "rcommand")) return NX_COMMANDMASK;
-#ifdef NX_DEVICELSHIFTKEYMASK
}
+ else {
+#endif
+ if (!strcasecmp(str, "shift")) return NX_SHIFTMASK;
+ if (!strcasecmp(str, "control")) return NX_CONTROLMASK;
+ if (!strcasecmp(str, "option")) return NX_ALTERNATEMASK;
+ if (!strcasecmp(str, "alt")) return NX_ALTERNATEMASK;
+ if (!strcasecmp(str, "command")) return NX_COMMANDMASK;
+ if (!strcasecmp(str, "lshift")) return NX_SHIFTMASK;
+ if (!strcasecmp(str, "rshift")) return NX_SHIFTMASK;
+ if (!strcasecmp(str, "lcontrol")) return NX_CONTROLMASK;
+ if (!strcasecmp(str, "rcontrol")) return NX_CONTROLMASK;
+ if (!strcasecmp(str, "loption")) return NX_ALTERNATEMASK;
+ if (!strcasecmp(str, "roption")) return NX_ALTERNATEMASK;
+ if (!strcasecmp(str, "lalt")) return NX_ALTERNATEMASK;
+ if (!strcasecmp(str, "ralt")) return NX_ALTERNATEMASK;
+ if (!strcasecmp(str, "lcommand")) return NX_COMMANDMASK;
+ if (!strcasecmp(str, "rcommand")) return NX_COMMANDMASK;
+#ifdef NX_DEVICELSHIFTKEYMASK
+}
#endif
- if (!strcasecmp(str, "lock")) return NX_ALPHASHIFTMASK;
- if (!strcasecmp(str, "fn")) return NX_SECONDARYFNMASK;
- if (!strcasecmp(str, "help")) return NX_HELPMASK;
- if (!strcasecmp(str, "numlock")) return NX_NUMERICPADMASK;
+ if (!strcasecmp(str, "lock")) return NX_ALPHASHIFTMASK;
+ if (!strcasecmp(str, "fn")) return NX_SECONDARYFNMASK;
+ if (!strcasecmp(str, "help")) return NX_HELPMASK;
+ if (!strcasecmp(str, "numlock")) return NX_NUMERICPADMASK;
return 0;
}
-static inline UniChar macroman2ucs(unsigned char c) {
+static inline UniChar
+macroman2ucs(unsigned char c)
+{
/* Precalculated table mapping MacRoman-128 to Unicode. Generated
by creating single element CFStringRefs then extracting the
first character. */
static const unsigned short table[128] = {
- 0xc4, 0xc5, 0xc7, 0xc9, 0xd1, 0xd6, 0xdc, 0xe1,
- 0xe0, 0xe2, 0xe4, 0xe3, 0xe5, 0xe7, 0xe9, 0xe8,
- 0xea, 0xeb, 0xed, 0xec, 0xee, 0xef, 0xf1, 0xf3,
- 0xf2, 0xf4, 0xf6, 0xf5, 0xfa, 0xf9, 0xfb, 0xfc,
- 0x2020, 0xb0, 0xa2, 0xa3, 0xa7, 0x2022, 0xb6, 0xdf,
- 0xae, 0xa9, 0x2122, 0xb4, 0xa8, 0x2260, 0xc6, 0xd8,
- 0x221e, 0xb1, 0x2264, 0x2265, 0xa5, 0xb5, 0x2202, 0x2211,
- 0x220f, 0x3c0, 0x222b, 0xaa, 0xba, 0x3a9, 0xe6, 0xf8,
- 0xbf, 0xa1, 0xac, 0x221a, 0x192, 0x2248, 0x2206, 0xab,
- 0xbb, 0x2026, 0xa0, 0xc0, 0xc3, 0xd5, 0x152, 0x153,
- 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0xf7, 0x25ca,
- 0xff, 0x178, 0x2044, 0x20ac, 0x2039, 0x203a, 0xfb01, 0xfb02,
- 0x2021, 0xb7, 0x201a, 0x201e, 0x2030, 0xc2, 0xca, 0xc1,
- 0xcb, 0xc8, 0xcd, 0xce, 0xcf, 0xcc, 0xd3, 0xd4,
- 0xf8ff, 0xd2, 0xda, 0xdb, 0xd9, 0x131, 0x2c6, 0x2dc,
- 0xaf, 0x2d8, 0x2d9, 0x2da, 0xb8, 0x2dd, 0x2db, 0x2c7,
+ 0xc4, 0xc5, 0xc7, 0xc9, 0xd1, 0xd6, 0xdc,
+ 0xe1,
+ 0xe0, 0xe2, 0xe4, 0xe3, 0xe5, 0xe7, 0xe9,
+ 0xe8,
+ 0xea, 0xeb, 0xed, 0xec, 0xee, 0xef, 0xf1,
+ 0xf3,
+ 0xf2, 0xf4, 0xf6, 0xf5, 0xfa, 0xf9, 0xfb,
+ 0xfc,
+ 0x2020, 0xb0, 0xa2, 0xa3, 0xa7, 0x2022, 0xb6,
+ 0xdf,
+ 0xae, 0xa9, 0x2122, 0xb4, 0xa8, 0x2260, 0xc6,
+ 0xd8,
+ 0x221e, 0xb1, 0x2264, 0x2265, 0xa5, 0xb5, 0x2202,
+ 0x2211,
+ 0x220f, 0x3c0, 0x222b, 0xaa, 0xba, 0x3a9, 0xe6,
+ 0xf8,
+ 0xbf, 0xa1, 0xac, 0x221a, 0x192, 0x2248, 0x2206,
+ 0xab,
+ 0xbb, 0x2026, 0xa0, 0xc0, 0xc3, 0xd5, 0x152,
+ 0x153,
+ 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0xf7,
+ 0x25ca,
+ 0xff, 0x178, 0x2044, 0x20ac, 0x2039, 0x203a, 0xfb01,
+ 0xfb02,
+ 0x2021, 0xb7, 0x201a, 0x201e, 0x2030, 0xc2, 0xca,
+ 0xc1,
+ 0xcb, 0xc8, 0xcd, 0xce, 0xcf, 0xcc, 0xd3,
+ 0xd4,
+ 0xf8ff, 0xd2, 0xda, 0xdb, 0xd9, 0x131, 0x2c6,
+ 0x2dc,
+ 0xaf, 0x2d8, 0x2d9, 0x2da, 0xb8, 0x2dd, 0x2db,
+ 0x2c7,
};
if (c < 128) return c;
- else return table[c - 128];
+ else return table[c - 128];
}
-static KeySym make_dead_key(KeySym in) {
+static KeySym
+make_dead_key(KeySym in)
+{
int i;
- for (i = 0; i < sizeof (dead_keys) / sizeof (dead_keys[0]); i++)
+ for (i = 0; i < sizeof(dead_keys) / sizeof(dead_keys[0]); i++)
if (dead_keys[i].normal == in) return dead_keys[i].dead;
return in;
}
-static Boolean XtoQReadSystemKeymap(XtoQKeymapInfo *info) {
+static Boolean
+XtoQReadSystemKeymap(XtoQKeymapInfo *info)
+{
#if !defined(__LP64__) || MAC_OS_X_VERSION_MIN_REQUIRED < 1050
KeyboardLayoutRef key_layout;
int is_uchr = 1;
@@ -640,12 +770,14 @@ static Boolean XtoQReadSystemKeymap(XtoQKeymapInfo *info) {
CFDataRef currentKeyLayoutDataRef = NULL;
#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1050
- TISInputSourceRef currentKeyLayoutRef = TISCopyCurrentKeyboardLayoutInputSource();
+ TISInputSourceRef currentKeyLayoutRef =
+ TISCopyCurrentKeyboardLayoutInputSource();
if (currentKeyLayoutRef) {
- currentKeyLayoutDataRef = (CFDataRef )TISGetInputSourceProperty(currentKeyLayoutRef, kTISPropertyUnicodeKeyLayoutData);
- if (currentKeyLayoutDataRef)
- chr_data = CFDataGetBytePtr(currentKeyLayoutDataRef);
+ currentKeyLayoutDataRef = (CFDataRef)TISGetInputSourceProperty(
+ currentKeyLayoutRef, kTISPropertyUnicodeKeyLayoutData);
+ if (currentKeyLayoutDataRef)
+ chr_data = CFDataGetBytePtr(currentKeyLayoutDataRef);
}
#endif
@@ -657,31 +789,38 @@ static Boolean XtoQReadSystemKeymap(XtoQKeymapInfo *info) {
#if !defined(__LP64__) || MAC_OS_X_VERSION_MIN_REQUIRED < 1050
if (chr_data == NULL) {
#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1050
- ErrorF("X11.app: Error detected in determining keyboard layout. If you are using an Apple-provided keyboard layout, please report this error at http://xquartz.macosforge.org and http://bugreport.apple.com\n");
- ErrorF("X11.app: Debug Info: keyboard_type=%u, currentKeyLayoutRef=%p, currentKeyLayoutDataRef=%p, chr_data=%p\n",
- (unsigned)keyboard_type, currentKeyLayoutRef, currentKeyLayoutDataRef, chr_data);
+ ErrorF(
+ "X11.app: Error detected in determining keyboard layout. If you are using an Apple-provided keyboard layout, please report this error at http://xquartz.macosforge.org and http://bugreport.apple.com\n");
+ ErrorF(
+ "X11.app: Debug Info: keyboard_type=%u, currentKeyLayoutRef=%p, currentKeyLayoutDataRef=%p, chr_data=%p\n",
+ (unsigned)keyboard_type, currentKeyLayoutRef,
+ currentKeyLayoutDataRef, chr_data);
#endif
- KLGetCurrentKeyboardLayout (&key_layout);
- KLGetKeyboardLayoutProperty (key_layout, kKLuchrData, &chr_data);
+ KLGetCurrentKeyboardLayout(&key_layout);
+ KLGetKeyboardLayoutProperty(key_layout, kKLuchrData, &chr_data);
#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1050
- if(chr_data != NULL) {
- ErrorF("X11.app: Fallback succeeded, but this is still a bug. Please report the above information.\n");
+ if (chr_data != NULL) {
+ ErrorF(
+ "X11.app: Fallback succeeded, but this is still a bug. Please report the above information.\n");
}
#endif
}
if (chr_data == NULL) {
- ErrorF("X11.app: Debug Info: kKLuchrData failed, trying kKLKCHRData.\n");
- ErrorF("If you are using a 3rd party keyboard layout, please see http://xquartz.macosforge.org/trac/ticket/154\n");
- KLGetKeyboardLayoutProperty (key_layout, kKLKCHRData, &chr_data);
+ ErrorF(
+ "X11.app: Debug Info: kKLuchrData failed, trying kKLKCHRData.\n");
+ ErrorF(
+ "If you are using a 3rd party keyboard layout, please see http://xquartz.macosforge.org/trac/ticket/154\n");
+ KLGetKeyboardLayoutProperty(key_layout, kKLKCHRData, &chr_data);
is_uchr = 0;
num_keycodes = 128;
-
+
#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1050
- if(chr_data != NULL) {
- ErrorF("X11.app: Fallback succeeded, but this is still a bug. Please report the above information.\n");
+ if (chr_data != NULL) {
+ ErrorF(
+ "X11.app: Fallback succeeded, but this is still a bug. Please report the above information.\n");
}
#endif
}
@@ -692,93 +831,96 @@ static Boolean XtoQReadSystemKeymap(XtoQKeymapInfo *info) {
#endif
#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1050
- if(currentKeyLayoutRef)
+ if (currentKeyLayoutRef)
CFRelease(currentKeyLayoutRef);
#endif
-
+
if (chr_data == NULL) {
- ErrorF ( "Couldn't get uchr or kchr resource\n");
- return FALSE;
+ ErrorF("Couldn't get uchr or kchr resource\n");
+ return FALSE;
}
-
+
/* Scan the keycode range for the Unicode character that each
key produces in the four shift states. Then convert that to
an X11 keysym (which may just the bit that says "this is
Unicode" if it can't find the real symbol.) */
-
+
/* KeyTranslate is not available on 64-bit platforms; UCKeyTranslate
must be used instead. */
for (i = 0; i < num_keycodes; i++) {
- static const int mods[4] = {0, MOD_SHIFT, MOD_OPTION,
- MOD_OPTION | MOD_SHIFT};
+ static const int mods[4] = {
+ 0, MOD_SHIFT, MOD_OPTION,
+ MOD_OPTION | MOD_SHIFT
+ };
k = info->keyMap + i * GLYPHS_PER_KEY;
for (j = 0; j < 4; j++) {
#if !defined(__LP64__) || MAC_OS_X_VERSION_MIN_REQUIRED < 1050
- if (is_uchr) {
-#endif
- UniChar s[8];
- UniCharCount len;
- UInt32 dead_key_state = 0, extra_dead = 0;
-
- err = UCKeyTranslate (chr_data, i, kUCKeyActionDown,
- mods[j] >> 8, keyboard_type, 0,
- &dead_key_state, 8, &len, s);
+ if (is_uchr) {
+#endif
+ UniChar s[8];
+ UniCharCount len;
+ UInt32 dead_key_state = 0, extra_dead = 0;
+
+ err = UCKeyTranslate(chr_data, i, kUCKeyActionDown,
+ mods[j] >> 8, keyboard_type, 0,
+ &dead_key_state, 8, &len, s);
+ if (err != noErr) continue;
+
+ if (len == 0 && dead_key_state != 0) {
+ /* Found a dead key. Work out which one it is, but
+ remembering that it's dead. */
+ err = UCKeyTranslate(chr_data, i, kUCKeyActionDown,
+ mods[j] >> 8, keyboard_type,
+ kUCKeyTranslateNoDeadKeysMask,
+ &extra_dead, 8, &len, s);
if (err != noErr) continue;
+ }
- if (len == 0 && dead_key_state != 0) {
- /* Found a dead key. Work out which one it is, but
- remembering that it's dead. */
- err = UCKeyTranslate (chr_data, i, kUCKeyActionDown,
- mods[j] >> 8, keyboard_type,
- kUCKeyTranslateNoDeadKeysMask,
- &extra_dead, 8, &len, s);
- if (err != noErr) continue;
- }
-
- /* Not sure why 0x0010 is there.
- * 0x0000 - <rdar://problem/7793566> 'Unicode Hex Input' ...
- */
- if (len > 0 && s[0] != 0x0010 && s[0] != 0x0000) {
- k[j] = ucs2keysym (s[0]);
- if (dead_key_state != 0) k[j] = make_dead_key (k[j]);
- }
+ /* Not sure why 0x0010 is there.
+ * 0x0000 - <rdar://problem/7793566> 'Unicode Hex Input' ...
+ */
+ if (len > 0 && s[0] != 0x0010 && s[0] != 0x0000) {
+ k[j] = ucs2keysym(s[0]);
+ if (dead_key_state != 0) k[j] = make_dead_key(k[j]);
+ }
#if !defined(__LP64__) || MAC_OS_X_VERSION_MIN_REQUIRED < 1050
- } else { // kchr
- UInt32 c, state = 0, state2 = 0;
- UInt16 code;
+ }
+ else { // kchr
+ UInt32 c, state = 0, state2 = 0;
+ UInt16 code;
- code = i | mods[j];
+ code = i | mods[j];
#ifdef __clang__
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations" // KeyTranslate
#endif
- c = KeyTranslate (chr_data, code, &state);
+ c = KeyTranslate(chr_data, code, &state);
- /* Dead keys are only processed on key-down, so ask
- to translate those events. When we find a dead key,
- translating the matching key up event will give
- us the actual dead character. */
+ /* Dead keys are only processed on key-down, so ask
+ to translate those events. When we find a dead key,
+ translating the matching key up event will give
+ us the actual dead character. */
- if (state != 0)
- c = KeyTranslate (chr_data, code | 128, &state2);
+ if (state != 0)
+ c = KeyTranslate(chr_data, code | 128, &state2);
#ifdef __clang__
#pragma clang diagnostic pop
#endif
- /* Characters seem to be in MacRoman encoding. */
+ /* Characters seem to be in MacRoman encoding. */
- if (c != 0 && c != 0x0010) {
- k[j] = ucs2keysym (macroman2ucs (c & 255));
+ if (c != 0 && c != 0x0010) {
+ k[j] = ucs2keysym(macroman2ucs(c & 255));
- if (state != 0) k[j] = make_dead_key (k[j]);
- }
+ if (state != 0) k[j] = make_dead_key(k[j]);
}
+ }
#endif
}
@@ -790,29 +932,31 @@ static Boolean XtoQReadSystemKeymap(XtoQKeymapInfo *info) {
#if HACK_MISSING
/* Fix up some things that are normally missing.. */
-
- for (i = 0; i < sizeof (known_keys) / sizeof (known_keys[0]); i++) {
+
+ for (i = 0; i < sizeof(known_keys) / sizeof(known_keys[0]); i++) {
k = info->keyMap + known_keys[i].keycode * GLYPHS_PER_KEY;
-
- if ( k[0] == NoSymbol && k[1] == NoSymbol
+
+ if (k[0] == NoSymbol && k[1] == NoSymbol
&& k[2] == NoSymbol && k[3] == NoSymbol)
k[0] = known_keys[i].keysym;
}
#endif
-
+
#if HACK_KEYPAD
/* And some more things. We find the right symbols for the numeric
- keypad, but not the KP_ keysyms. So try to convert known keycodes. */
- for (i = 0; i < sizeof (known_numeric_keys) / sizeof (known_numeric_keys[0]); i++) {
+ keypad, but not the KP_ keysyms. So try to convert known keycodes. */
+ for (i = 0; i < sizeof(known_numeric_keys) / sizeof(known_numeric_keys[0]);
+ i++) {
k = info->keyMap + known_numeric_keys[i].keycode * GLYPHS_PER_KEY;
-
+
if (k[0] == known_numeric_keys[i].normal)
k[0] = known_numeric_keys[i].keypad;
}
#endif
-
+
#if HACK_BLACKLIST
- for (i = 0; i < sizeof (keycode_blacklist) / sizeof (keycode_blacklist[0]); i++) {
+ for (i = 0; i < sizeof(keycode_blacklist) / sizeof(keycode_blacklist[0]);
+ i++) {
k = info->keyMap + keycode_blacklist[i] * GLYPHS_PER_KEY;
k[0] = k[1] = k[2] = k[3] = NoSymbol;
}
@@ -823,7 +967,9 @@ static Boolean XtoQReadSystemKeymap(XtoQKeymapInfo *info) {
return TRUE;
}
-void XtoQKeymapReSync(void) {
+void
+XtoQKeymapReSync(void)
+{
/* Update keyInfo */
memset(keyInfo.keyMap, 0, sizeof(keyInfo.keyMap));
XtoQReadSystemKeymap(&keyInfo);
diff --git a/src/xtoq/keymap.h b/src/xtoq/keymap.h
index ed3a5ea..64e96d9 100644
--- a/src/xtoq/keymap.h
+++ b/src/xtoq/keymap.h
@@ -32,12 +32,18 @@
* to the server.
*/
-int XtoQModifierNXKeycodeToNXKey(unsigned char keycode, int *outSide);
-int XtoQModifierNXKeyToNXKeycode(int key, int side);
-int XtoQModifierNXKeyToNXMask(int key);
-int XtoQModifierNXMaskToNXKey(int mask);
-int XtoQModifierStringToNXMask(const char *string, int separatelr);
+int
+XtoQModifierNXKeycodeToNXKey(unsigned char keycode, int *outSide);
+int
+XtoQModifierNXKeyToNXKeycode(int key, int side);
+int
+XtoQModifierNXKeyToNXMask(int key);
+int
+XtoQModifierNXMaskToNXKey(int mask);
+int
+XtoQModifierStringToNXMask(const char *string, int separatelr);
-void XtoQKeymapReSync(void);
+void
+XtoQKeymapReSync(void);
#endif /* XTOQ_KEYBOARD_H */
diff --git a/src/xtoq/keysym2ucs.c b/src/xtoq/keysym2ucs.c
index 8626ebc..934b577 100644
--- a/src/xtoq/keysym2ucs.c
+++ b/src/xtoq/keysym2ucs.c
@@ -1,4 +1,4 @@
-/*
+/*
*
* This module converts keysym values into the corresponding ISO 10646
* (UCS, Unicode) values.
@@ -40,795 +40,796 @@
#include <string.h>
struct codepair {
- unsigned short keysym;
- unsigned short ucs;
+ unsigned short keysym;
+ unsigned short ucs;
};
const static struct codepair keysymtab[] = {
- { 0x01a1, 0x0104 },
- { 0x01a2, 0x02d8 },
- { 0x01a3, 0x0141 },
- { 0x01a5, 0x013d },
- { 0x01a6, 0x015a },
- { 0x01a9, 0x0160 },
- { 0x01aa, 0x015e },
- { 0x01ab, 0x0164 },
- { 0x01ac, 0x0179 },
- { 0x01ae, 0x017d },
- { 0x01af, 0x017b },
- { 0x01b1, 0x0105 },
- { 0x01b2, 0x02db },
- { 0x01b3, 0x0142 },
- { 0x01b5, 0x013e },
- { 0x01b6, 0x015b },
- { 0x01b7, 0x02c7 },
- { 0x01b9, 0x0161 },
- { 0x01ba, 0x015f },
- { 0x01bb, 0x0165 },
- { 0x01bc, 0x017a },
- { 0x01bd, 0x02dd },
- { 0x01be, 0x017e },
- { 0x01bf, 0x017c },
- { 0x01c0, 0x0154 },
- { 0x01c3, 0x0102 },
- { 0x01c5, 0x0139 },
- { 0x01c6, 0x0106 },
- { 0x01c8, 0x010c },
- { 0x01ca, 0x0118 },
- { 0x01cc, 0x011a },
- { 0x01cf, 0x010e },
- { 0x01d0, 0x0110 },
- { 0x01d1, 0x0143 },
- { 0x01d2, 0x0147 },
- { 0x01d5, 0x0150 },
- { 0x01d8, 0x0158 },
- { 0x01d9, 0x016e },
- { 0x01db, 0x0170 },
- { 0x01de, 0x0162 },
- { 0x01e0, 0x0155 },
- { 0x01e3, 0x0103 },
- { 0x01e5, 0x013a },
- { 0x01e6, 0x0107 },
- { 0x01e8, 0x010d },
- { 0x01ea, 0x0119 },
- { 0x01ec, 0x011b },
- { 0x01ef, 0x010f },
- { 0x01f0, 0x0111 },
- { 0x01f1, 0x0144 },
- { 0x01f2, 0x0148 },
- { 0x01f5, 0x0151 },
- { 0x01f8, 0x0159 },
- { 0x01f9, 0x016f },
- { 0x01fb, 0x0171 },
- { 0x01fe, 0x0163 },
- { 0x01ff, 0x02d9 },
- { 0x02a1, 0x0126 },
- { 0x02a6, 0x0124 },
- { 0x02a9, 0x0130 },
- { 0x02ab, 0x011e },
- { 0x02ac, 0x0134 },
- { 0x02b1, 0x0127 },
- { 0x02b6, 0x0125 },
- { 0x02b9, 0x0131 },
- { 0x02bb, 0x011f },
- { 0x02bc, 0x0135 },
- { 0x02c5, 0x010a },
- { 0x02c6, 0x0108 },
- { 0x02d5, 0x0120 },
- { 0x02d8, 0x011c },
- { 0x02dd, 0x016c },
- { 0x02de, 0x015c },
- { 0x02e5, 0x010b },
- { 0x02e6, 0x0109 },
- { 0x02f5, 0x0121 },
- { 0x02f8, 0x011d },
- { 0x02fd, 0x016d },
- { 0x02fe, 0x015d },
- { 0x03a2, 0x0138 },
- { 0x03a3, 0x0156 },
- { 0x03a5, 0x0128 },
- { 0x03a6, 0x013b },
- { 0x03aa, 0x0112 },
- { 0x03ab, 0x0122 },
- { 0x03ac, 0x0166 },
- { 0x03b3, 0x0157 },
- { 0x03b5, 0x0129 },
- { 0x03b6, 0x013c },
- { 0x03ba, 0x0113 },
- { 0x03bb, 0x0123 },
- { 0x03bc, 0x0167 },
- { 0x03bd, 0x014a },
- { 0x03bf, 0x014b },
- { 0x03c0, 0x0100 },
- { 0x03c7, 0x012e },
- { 0x03cc, 0x0116 },
- { 0x03cf, 0x012a },
- { 0x03d1, 0x0145 },
- { 0x03d2, 0x014c },
- { 0x03d3, 0x0136 },
- { 0x03d9, 0x0172 },
- { 0x03dd, 0x0168 },
- { 0x03de, 0x016a },
- { 0x03e0, 0x0101 },
- { 0x03e7, 0x012f },
- { 0x03ec, 0x0117 },
- { 0x03ef, 0x012b },
- { 0x03f1, 0x0146 },
- { 0x03f2, 0x014d },
- { 0x03f3, 0x0137 },
- { 0x03f9, 0x0173 },
- { 0x03fd, 0x0169 },
- { 0x03fe, 0x016b },
- { 0x047e, 0x203e },
- { 0x04a1, 0x3002 },
- { 0x04a2, 0x300c },
- { 0x04a3, 0x300d },
- { 0x04a4, 0x3001 },
- { 0x04a5, 0x30fb },
- { 0x04a6, 0x30f2 },
- { 0x04a7, 0x30a1 },
- { 0x04a8, 0x30a3 },
- { 0x04a9, 0x30a5 },
- { 0x04aa, 0x30a7 },
- { 0x04ab, 0x30a9 },
- { 0x04ac, 0x30e3 },
- { 0x04ad, 0x30e5 },
- { 0x04ae, 0x30e7 },
- { 0x04af, 0x30c3 },
- { 0x04b0, 0x30fc },
- { 0x04b1, 0x30a2 },
- { 0x04b2, 0x30a4 },
- { 0x04b3, 0x30a6 },
- { 0x04b4, 0x30a8 },
- { 0x04b5, 0x30aa },
- { 0x04b6, 0x30ab },
- { 0x04b7, 0x30ad },
- { 0x04b8, 0x30af },
- { 0x04b9, 0x30b1 },
- { 0x04ba, 0x30b3 },
- { 0x04bb, 0x30b5 },
- { 0x04bc, 0x30b7 },
- { 0x04bd, 0x30b9 },
- { 0x04be, 0x30bb },
- { 0x04bf, 0x30bd },
- { 0x04c0, 0x30bf },
- { 0x04c1, 0x30c1 },
- { 0x04c2, 0x30c4 },
- { 0x04c3, 0x30c6 },
- { 0x04c4, 0x30c8 },
- { 0x04c5, 0x30ca },
- { 0x04c6, 0x30cb },
- { 0x04c7, 0x30cc },
- { 0x04c8, 0x30cd },
- { 0x04c9, 0x30ce },
- { 0x04ca, 0x30cf },
- { 0x04cb, 0x30d2 },
- { 0x04cc, 0x30d5 },
- { 0x04cd, 0x30d8 },
- { 0x04ce, 0x30db },
- { 0x04cf, 0x30de },
- { 0x04d0, 0x30df },
- { 0x04d1, 0x30e0 },
- { 0x04d2, 0x30e1 },
- { 0x04d3, 0x30e2 },
- { 0x04d4, 0x30e4 },
- { 0x04d5, 0x30e6 },
- { 0x04d6, 0x30e8 },
- { 0x04d7, 0x30e9 },
- { 0x04d8, 0x30ea },
- { 0x04d9, 0x30eb },
- { 0x04da, 0x30ec },
- { 0x04db, 0x30ed },
- { 0x04dc, 0x30ef },
- { 0x04dd, 0x30f3 },
- { 0x04de, 0x309b },
- { 0x04df, 0x309c },
- { 0x05ac, 0x060c },
- { 0x05bb, 0x061b },
- { 0x05bf, 0x061f },
- { 0x05c1, 0x0621 },
- { 0x05c2, 0x0622 },
- { 0x05c3, 0x0623 },
- { 0x05c4, 0x0624 },
- { 0x05c5, 0x0625 },
- { 0x05c6, 0x0626 },
- { 0x05c7, 0x0627 },
- { 0x05c8, 0x0628 },
- { 0x05c9, 0x0629 },
- { 0x05ca, 0x062a },
- { 0x05cb, 0x062b },
- { 0x05cc, 0x062c },
- { 0x05cd, 0x062d },
- { 0x05ce, 0x062e },
- { 0x05cf, 0x062f },
- { 0x05d0, 0x0630 },
- { 0x05d1, 0x0631 },
- { 0x05d2, 0x0632 },
- { 0x05d3, 0x0633 },
- { 0x05d4, 0x0634 },
- { 0x05d5, 0x0635 },
- { 0x05d6, 0x0636 },
- { 0x05d7, 0x0637 },
- { 0x05d8, 0x0638 },
- { 0x05d9, 0x0639 },
- { 0x05da, 0x063a },
- { 0x05e0, 0x0640 },
- { 0x05e1, 0x0641 },
- { 0x05e2, 0x0642 },
- { 0x05e3, 0x0643 },
- { 0x05e4, 0x0644 },
- { 0x05e5, 0x0645 },
- { 0x05e6, 0x0646 },
- { 0x05e7, 0x0647 },
- { 0x05e8, 0x0648 },
- { 0x05e9, 0x0649 },
- { 0x05ea, 0x064a },
- { 0x05eb, 0x064b },
- { 0x05ec, 0x064c },
- { 0x05ed, 0x064d },
- { 0x05ee, 0x064e },
- { 0x05ef, 0x064f },
- { 0x05f0, 0x0650 },
- { 0x05f1, 0x0651 },
- { 0x05f2, 0x0652 },
- { 0x06a1, 0x0452 },
- { 0x06a2, 0x0453 },
- { 0x06a3, 0x0451 },
- { 0x06a4, 0x0454 },
- { 0x06a5, 0x0455 },
- { 0x06a6, 0x0456 },
- { 0x06a7, 0x0457 },
- { 0x06a8, 0x0458 },
- { 0x06a9, 0x0459 },
- { 0x06aa, 0x045a },
- { 0x06ab, 0x045b },
- { 0x06ac, 0x045c },
- { 0x06ae, 0x045e },
- { 0x06af, 0x045f },
- { 0x06b0, 0x2116 },
- { 0x06b1, 0x0402 },
- { 0x06b2, 0x0403 },
- { 0x06b3, 0x0401 },
- { 0x06b4, 0x0404 },
- { 0x06b5, 0x0405 },
- { 0x06b6, 0x0406 },
- { 0x06b7, 0x0407 },
- { 0x06b8, 0x0408 },
- { 0x06b9, 0x0409 },
- { 0x06ba, 0x040a },
- { 0x06bb, 0x040b },
- { 0x06bc, 0x040c },
- { 0x06be, 0x040e },
- { 0x06bf, 0x040f },
- { 0x06c0, 0x044e },
- { 0x06c1, 0x0430 },
- { 0x06c2, 0x0431 },
- { 0x06c3, 0x0446 },
- { 0x06c4, 0x0434 },
- { 0x06c5, 0x0435 },
- { 0x06c6, 0x0444 },
- { 0x06c7, 0x0433 },
- { 0x06c8, 0x0445 },
- { 0x06c9, 0x0438 },
- { 0x06ca, 0x0439 },
- { 0x06cb, 0x043a },
- { 0x06cc, 0x043b },
- { 0x06cd, 0x043c },
- { 0x06ce, 0x043d },
- { 0x06cf, 0x043e },
- { 0x06d0, 0x043f },
- { 0x06d1, 0x044f },
- { 0x06d2, 0x0440 },
- { 0x06d3, 0x0441 },
- { 0x06d4, 0x0442 },
- { 0x06d5, 0x0443 },
- { 0x06d6, 0x0436 },
- { 0x06d7, 0x0432 },
- { 0x06d8, 0x044c },
- { 0x06d9, 0x044b },
- { 0x06da, 0x0437 },
- { 0x06db, 0x0448 },
- { 0x06dc, 0x044d },
- { 0x06dd, 0x0449 },
- { 0x06de, 0x0447 },
- { 0x06df, 0x044a },
- { 0x06e0, 0x042e },
- { 0x06e1, 0x0410 },
- { 0x06e2, 0x0411 },
- { 0x06e3, 0x0426 },
- { 0x06e4, 0x0414 },
- { 0x06e5, 0x0415 },
- { 0x06e6, 0x0424 },
- { 0x06e7, 0x0413 },
- { 0x06e8, 0x0425 },
- { 0x06e9, 0x0418 },
- { 0x06ea, 0x0419 },
- { 0x06eb, 0x041a },
- { 0x06ec, 0x041b },
- { 0x06ed, 0x041c },
- { 0x06ee, 0x041d },
- { 0x06ef, 0x041e },
- { 0x06f0, 0x041f },
- { 0x06f1, 0x042f },
- { 0x06f2, 0x0420 },
- { 0x06f3, 0x0421 },
- { 0x06f4, 0x0422 },
- { 0x06f5, 0x0423 },
- { 0x06f6, 0x0416 },
- { 0x06f7, 0x0412 },
- { 0x06f8, 0x042c },
- { 0x06f9, 0x042b },
- { 0x06fa, 0x0417 },
- { 0x06fb, 0x0428 },
- { 0x06fc, 0x042d },
- { 0x06fd, 0x0429 },
- { 0x06fe, 0x0427 },
- { 0x06ff, 0x042a },
- { 0x07a1, 0x0386 },
- { 0x07a2, 0x0388 },
- { 0x07a3, 0x0389 },
- { 0x07a4, 0x038a },
- { 0x07a5, 0x03aa },
- { 0x07a7, 0x038c },
- { 0x07a8, 0x038e },
- { 0x07a9, 0x03ab },
- { 0x07ab, 0x038f },
- { 0x07ae, 0x0385 },
- { 0x07af, 0x2015 },
- { 0x07b1, 0x03ac },
- { 0x07b2, 0x03ad },
- { 0x07b3, 0x03ae },
- { 0x07b4, 0x03af },
- { 0x07b5, 0x03ca },
- { 0x07b6, 0x0390 },
- { 0x07b7, 0x03cc },
- { 0x07b8, 0x03cd },
- { 0x07b9, 0x03cb },
- { 0x07ba, 0x03b0 },
- { 0x07bb, 0x03ce },
- { 0x07c1, 0x0391 },
- { 0x07c2, 0x0392 },
- { 0x07c3, 0x0393 },
- { 0x07c4, 0x0394 },
- { 0x07c5, 0x0395 },
- { 0x07c6, 0x0396 },
- { 0x07c7, 0x0397 },
- { 0x07c8, 0x0398 },
- { 0x07c9, 0x0399 },
- { 0x07ca, 0x039a },
- { 0x07cb, 0x039b },
- { 0x07cc, 0x039c },
- { 0x07cd, 0x039d },
- { 0x07ce, 0x039e },
- { 0x07cf, 0x039f },
- { 0x07d0, 0x03a0 },
- { 0x07d1, 0x03a1 },
- { 0x07d2, 0x03a3 },
- { 0x07d4, 0x03a4 },
- { 0x07d5, 0x03a5 },
- { 0x07d6, 0x03a6 },
- { 0x07d7, 0x03a7 },
- { 0x07d8, 0x03a8 },
- { 0x07d9, 0x03a9 },
- { 0x07e1, 0x03b1 },
- { 0x07e2, 0x03b2 },
- { 0x07e3, 0x03b3 },
- { 0x07e4, 0x03b4 },
- { 0x07e5, 0x03b5 },
- { 0x07e6, 0x03b6 },
- { 0x07e7, 0x03b7 },
- { 0x07e8, 0x03b8 },
- { 0x07e9, 0x03b9 },
- { 0x07ea, 0x03ba },
- { 0x07eb, 0x03bb },
- { 0x07ec, 0x03bc },
- { 0x07ed, 0x03bd },
- { 0x07ee, 0x03be },
- { 0x07ef, 0x03bf },
- { 0x07f0, 0x03c0 },
- { 0x07f1, 0x03c1 },
- { 0x07f2, 0x03c3 },
- { 0x07f3, 0x03c2 },
- { 0x07f4, 0x03c4 },
- { 0x07f5, 0x03c5 },
- { 0x07f6, 0x03c6 },
- { 0x07f7, 0x03c7 },
- { 0x07f8, 0x03c8 },
- { 0x07f9, 0x03c9 },
- { 0x08a1, 0x23b7 },
- { 0x08a2, 0x250c },
- { 0x08a3, 0x2500 },
- { 0x08a4, 0x2320 },
- { 0x08a5, 0x2321 },
- { 0x08a6, 0x2502 },
- { 0x08a7, 0x23a1 },
- { 0x08a8, 0x23a3 },
- { 0x08a9, 0x23a4 },
- { 0x08aa, 0x23a6 },
- { 0x08ab, 0x239b },
- { 0x08ac, 0x239d },
- { 0x08ad, 0x239e },
- { 0x08ae, 0x23a0 },
- { 0x08af, 0x23a8 },
- { 0x08b0, 0x23ac },
- { 0x08bc, 0x2264 },
- { 0x08bd, 0x2260 },
- { 0x08be, 0x2265 },
- { 0x08bf, 0x222b },
- { 0x08c0, 0x2234 },
- { 0x08c1, 0x221d },
- { 0x08c2, 0x221e },
- { 0x08c5, 0x2207 },
- { 0x08c8, 0x223c },
- { 0x08c9, 0x2243 },
- { 0x08cd, 0x21d4 },
- { 0x08ce, 0x21d2 },
- { 0x08cf, 0x2261 },
- { 0x08d6, 0x221a },
- { 0x08da, 0x2282 },
- { 0x08db, 0x2283 },
- { 0x08dc, 0x2229 },
- { 0x08dd, 0x222a },
- { 0x08de, 0x2227 },
- { 0x08df, 0x2228 },
- { 0x08ef, 0x2202 },
- { 0x08f6, 0x0192 },
- { 0x08fb, 0x2190 },
- { 0x08fc, 0x2191 },
- { 0x08fd, 0x2192 },
- { 0x08fe, 0x2193 },
- { 0x09e0, 0x25c6 },
- { 0x09e1, 0x2592 },
- { 0x09e2, 0x2409 },
- { 0x09e3, 0x240c },
- { 0x09e4, 0x240d },
- { 0x09e5, 0x240a },
- { 0x09e8, 0x2424 },
- { 0x09e9, 0x240b },
- { 0x09ea, 0x2518 },
- { 0x09eb, 0x2510 },
- { 0x09ec, 0x250c },
- { 0x09ed, 0x2514 },
- { 0x09ee, 0x253c },
- { 0x09ef, 0x23ba },
- { 0x09f0, 0x23bb },
- { 0x09f1, 0x2500 },
- { 0x09f2, 0x23bc },
- { 0x09f3, 0x23bd },
- { 0x09f4, 0x251c },
- { 0x09f5, 0x2524 },
- { 0x09f6, 0x2534 },
- { 0x09f7, 0x252c },
- { 0x09f8, 0x2502 },
- { 0x0aa1, 0x2003 },
- { 0x0aa2, 0x2002 },
- { 0x0aa3, 0x2004 },
- { 0x0aa4, 0x2005 },
- { 0x0aa5, 0x2007 },
- { 0x0aa6, 0x2008 },
- { 0x0aa7, 0x2009 },
- { 0x0aa8, 0x200a },
- { 0x0aa9, 0x2014 },
- { 0x0aaa, 0x2013 },
- { 0x0aae, 0x2026 },
- { 0x0aaf, 0x2025 },
- { 0x0ab0, 0x2153 },
- { 0x0ab1, 0x2154 },
- { 0x0ab2, 0x2155 },
- { 0x0ab3, 0x2156 },
- { 0x0ab4, 0x2157 },
- { 0x0ab5, 0x2158 },
- { 0x0ab6, 0x2159 },
- { 0x0ab7, 0x215a },
- { 0x0ab8, 0x2105 },
- { 0x0abb, 0x2012 },
- { 0x0abc, 0x2329 },
- { 0x0abe, 0x232a },
- { 0x0ac3, 0x215b },
- { 0x0ac4, 0x215c },
- { 0x0ac5, 0x215d },
- { 0x0ac6, 0x215e },
- { 0x0ac9, 0x2122 },
- { 0x0aca, 0x2613 },
- { 0x0acc, 0x25c1 },
- { 0x0acd, 0x25b7 },
- { 0x0ace, 0x25cb },
- { 0x0acf, 0x25af },
- { 0x0ad0, 0x2018 },
- { 0x0ad1, 0x2019 },
- { 0x0ad2, 0x201c },
- { 0x0ad3, 0x201d },
- { 0x0ad4, 0x211e },
- { 0x0ad6, 0x2032 },
- { 0x0ad7, 0x2033 },
- { 0x0ad9, 0x271d },
- { 0x0adb, 0x25ac },
- { 0x0adc, 0x25c0 },
- { 0x0add, 0x25b6 },
- { 0x0ade, 0x25cf },
- { 0x0adf, 0x25ae },
- { 0x0ae0, 0x25e6 },
- { 0x0ae1, 0x25ab },
- { 0x0ae2, 0x25ad },
- { 0x0ae3, 0x25b3 },
- { 0x0ae4, 0x25bd },
- { 0x0ae5, 0x2606 },
- { 0x0ae6, 0x2022 },
- { 0x0ae7, 0x25aa },
- { 0x0ae8, 0x25b2 },
- { 0x0ae9, 0x25bc },
- { 0x0aea, 0x261c },
- { 0x0aeb, 0x261e },
- { 0x0aec, 0x2663 },
- { 0x0aed, 0x2666 },
- { 0x0aee, 0x2665 },
- { 0x0af0, 0x2720 },
- { 0x0af1, 0x2020 },
- { 0x0af2, 0x2021 },
- { 0x0af3, 0x2713 },
- { 0x0af4, 0x2717 },
- { 0x0af5, 0x266f },
- { 0x0af6, 0x266d },
- { 0x0af7, 0x2642 },
- { 0x0af8, 0x2640 },
- { 0x0af9, 0x260e },
- { 0x0afa, 0x2315 },
- { 0x0afb, 0x2117 },
- { 0x0afc, 0x2038 },
- { 0x0afd, 0x201a },
- { 0x0afe, 0x201e },
- { 0x0ba3, 0x003c },
- { 0x0ba6, 0x003e },
- { 0x0ba8, 0x2228 },
- { 0x0ba9, 0x2227 },
- { 0x0bc0, 0x00af },
- { 0x0bc2, 0x22a5 },
- { 0x0bc3, 0x2229 },
- { 0x0bc4, 0x230a },
- { 0x0bc6, 0x005f },
- { 0x0bca, 0x2218 },
- { 0x0bcc, 0x2395 },
- { 0x0bce, 0x22a4 },
- { 0x0bcf, 0x25cb },
- { 0x0bd3, 0x2308 },
- { 0x0bd6, 0x222a },
- { 0x0bd8, 0x2283 },
- { 0x0bda, 0x2282 },
- { 0x0bdc, 0x22a2 },
- { 0x0bfc, 0x22a3 },
- { 0x0cdf, 0x2017 },
- { 0x0ce0, 0x05d0 },
- { 0x0ce1, 0x05d1 },
- { 0x0ce2, 0x05d2 },
- { 0x0ce3, 0x05d3 },
- { 0x0ce4, 0x05d4 },
- { 0x0ce5, 0x05d5 },
- { 0x0ce6, 0x05d6 },
- { 0x0ce7, 0x05d7 },
- { 0x0ce8, 0x05d8 },
- { 0x0ce9, 0x05d9 },
- { 0x0cea, 0x05da },
- { 0x0ceb, 0x05db },
- { 0x0cec, 0x05dc },
- { 0x0ced, 0x05dd },
- { 0x0cee, 0x05de },
- { 0x0cef, 0x05df },
- { 0x0cf0, 0x05e0 },
- { 0x0cf1, 0x05e1 },
- { 0x0cf2, 0x05e2 },
- { 0x0cf3, 0x05e3 },
- { 0x0cf4, 0x05e4 },
- { 0x0cf5, 0x05e5 },
- { 0x0cf6, 0x05e6 },
- { 0x0cf7, 0x05e7 },
- { 0x0cf8, 0x05e8 },
- { 0x0cf9, 0x05e9 },
- { 0x0cfa, 0x05ea },
- { 0x0da1, 0x0e01 },
- { 0x0da2, 0x0e02 },
- { 0x0da3, 0x0e03 },
- { 0x0da4, 0x0e04 },
- { 0x0da5, 0x0e05 },
- { 0x0da6, 0x0e06 },
- { 0x0da7, 0x0e07 },
- { 0x0da8, 0x0e08 },
- { 0x0da9, 0x0e09 },
- { 0x0daa, 0x0e0a },
- { 0x0dab, 0x0e0b },
- { 0x0dac, 0x0e0c },
- { 0x0dad, 0x0e0d },
- { 0x0dae, 0x0e0e },
- { 0x0daf, 0x0e0f },
- { 0x0db0, 0x0e10 },
- { 0x0db1, 0x0e11 },
- { 0x0db2, 0x0e12 },
- { 0x0db3, 0x0e13 },
- { 0x0db4, 0x0e14 },
- { 0x0db5, 0x0e15 },
- { 0x0db6, 0x0e16 },
- { 0x0db7, 0x0e17 },
- { 0x0db8, 0x0e18 },
- { 0x0db9, 0x0e19 },
- { 0x0dba, 0x0e1a },
- { 0x0dbb, 0x0e1b },
- { 0x0dbc, 0x0e1c },
- { 0x0dbd, 0x0e1d },
- { 0x0dbe, 0x0e1e },
- { 0x0dbf, 0x0e1f },
- { 0x0dc0, 0x0e20 },
- { 0x0dc1, 0x0e21 },
- { 0x0dc2, 0x0e22 },
- { 0x0dc3, 0x0e23 },
- { 0x0dc4, 0x0e24 },
- { 0x0dc5, 0x0e25 },
- { 0x0dc6, 0x0e26 },
- { 0x0dc7, 0x0e27 },
- { 0x0dc8, 0x0e28 },
- { 0x0dc9, 0x0e29 },
- { 0x0dca, 0x0e2a },
- { 0x0dcb, 0x0e2b },
- { 0x0dcc, 0x0e2c },
- { 0x0dcd, 0x0e2d },
- { 0x0dce, 0x0e2e },
- { 0x0dcf, 0x0e2f },
- { 0x0dd0, 0x0e30 },
- { 0x0dd1, 0x0e31 },
- { 0x0dd2, 0x0e32 },
- { 0x0dd3, 0x0e33 },
- { 0x0dd4, 0x0e34 },
- { 0x0dd5, 0x0e35 },
- { 0x0dd6, 0x0e36 },
- { 0x0dd7, 0x0e37 },
- { 0x0dd8, 0x0e38 },
- { 0x0dd9, 0x0e39 },
- { 0x0dda, 0x0e3a },
- { 0x0ddf, 0x0e3f },
- { 0x0de0, 0x0e40 },
- { 0x0de1, 0x0e41 },
- { 0x0de2, 0x0e42 },
- { 0x0de3, 0x0e43 },
- { 0x0de4, 0x0e44 },
- { 0x0de5, 0x0e45 },
- { 0x0de6, 0x0e46 },
- { 0x0de7, 0x0e47 },
- { 0x0de8, 0x0e48 },
- { 0x0de9, 0x0e49 },
- { 0x0dea, 0x0e4a },
- { 0x0deb, 0x0e4b },
- { 0x0dec, 0x0e4c },
- { 0x0ded, 0x0e4d },
- { 0x0df0, 0x0e50 },
- { 0x0df1, 0x0e51 },
- { 0x0df2, 0x0e52 },
- { 0x0df3, 0x0e53 },
- { 0x0df4, 0x0e54 },
- { 0x0df5, 0x0e55 },
- { 0x0df6, 0x0e56 },
- { 0x0df7, 0x0e57 },
- { 0x0df8, 0x0e58 },
- { 0x0df9, 0x0e59 },
- { 0x0ea1, 0x3131 },
- { 0x0ea2, 0x3132 },
- { 0x0ea3, 0x3133 },
- { 0x0ea4, 0x3134 },
- { 0x0ea5, 0x3135 },
- { 0x0ea6, 0x3136 },
- { 0x0ea7, 0x3137 },
- { 0x0ea8, 0x3138 },
- { 0x0ea9, 0x3139 },
- { 0x0eaa, 0x313a },
- { 0x0eab, 0x313b },
- { 0x0eac, 0x313c },
- { 0x0ead, 0x313d },
- { 0x0eae, 0x313e },
- { 0x0eaf, 0x313f },
- { 0x0eb0, 0x3140 },
- { 0x0eb1, 0x3141 },
- { 0x0eb2, 0x3142 },
- { 0x0eb3, 0x3143 },
- { 0x0eb4, 0x3144 },
- { 0x0eb5, 0x3145 },
- { 0x0eb6, 0x3146 },
- { 0x0eb7, 0x3147 },
- { 0x0eb8, 0x3148 },
- { 0x0eb9, 0x3149 },
- { 0x0eba, 0x314a },
- { 0x0ebb, 0x314b },
- { 0x0ebc, 0x314c },
- { 0x0ebd, 0x314d },
- { 0x0ebe, 0x314e },
- { 0x0ebf, 0x314f },
- { 0x0ec0, 0x3150 },
- { 0x0ec1, 0x3151 },
- { 0x0ec2, 0x3152 },
- { 0x0ec3, 0x3153 },
- { 0x0ec4, 0x3154 },
- { 0x0ec5, 0x3155 },
- { 0x0ec6, 0x3156 },
- { 0x0ec7, 0x3157 },
- { 0x0ec8, 0x3158 },
- { 0x0ec9, 0x3159 },
- { 0x0eca, 0x315a },
- { 0x0ecb, 0x315b },
- { 0x0ecc, 0x315c },
- { 0x0ecd, 0x315d },
- { 0x0ece, 0x315e },
- { 0x0ecf, 0x315f },
- { 0x0ed0, 0x3160 },
- { 0x0ed1, 0x3161 },
- { 0x0ed2, 0x3162 },
- { 0x0ed3, 0x3163 },
- { 0x0ed4, 0x11a8 },
- { 0x0ed5, 0x11a9 },
- { 0x0ed6, 0x11aa },
- { 0x0ed7, 0x11ab },
- { 0x0ed8, 0x11ac },
- { 0x0ed9, 0x11ad },
- { 0x0eda, 0x11ae },
- { 0x0edb, 0x11af },
- { 0x0edc, 0x11b0 },
- { 0x0edd, 0x11b1 },
- { 0x0ede, 0x11b2 },
- { 0x0edf, 0x11b3 },
- { 0x0ee0, 0x11b4 },
- { 0x0ee1, 0x11b5 },
- { 0x0ee2, 0x11b6 },
- { 0x0ee3, 0x11b7 },
- { 0x0ee4, 0x11b8 },
- { 0x0ee5, 0x11b9 },
- { 0x0ee6, 0x11ba },
- { 0x0ee7, 0x11bb },
- { 0x0ee8, 0x11bc },
- { 0x0ee9, 0x11bd },
- { 0x0eea, 0x11be },
- { 0x0eeb, 0x11bf },
- { 0x0eec, 0x11c0 },
- { 0x0eed, 0x11c1 },
- { 0x0eee, 0x11c2 },
- { 0x0eef, 0x316d },
- { 0x0ef0, 0x3171 },
- { 0x0ef1, 0x3178 },
- { 0x0ef2, 0x317f },
- { 0x0ef3, 0x3181 },
- { 0x0ef4, 0x3184 },
- { 0x0ef5, 0x3186 },
- { 0x0ef6, 0x318d },
- { 0x0ef7, 0x318e },
- { 0x0ef8, 0x11eb },
- { 0x0ef9, 0x11f0 },
- { 0x0efa, 0x11f9 },
- { 0x0eff, 0x20a9 },
+ { 0x01a1, 0x0104 },
+ { 0x01a2, 0x02d8 },
+ { 0x01a3, 0x0141 },
+ { 0x01a5, 0x013d },
+ { 0x01a6, 0x015a },
+ { 0x01a9, 0x0160 },
+ { 0x01aa, 0x015e },
+ { 0x01ab, 0x0164 },
+ { 0x01ac, 0x0179 },
+ { 0x01ae, 0x017d },
+ { 0x01af, 0x017b },
+ { 0x01b1, 0x0105 },
+ { 0x01b2, 0x02db },
+ { 0x01b3, 0x0142 },
+ { 0x01b5, 0x013e },
+ { 0x01b6, 0x015b },
+ { 0x01b7, 0x02c7 },
+ { 0x01b9, 0x0161 },
+ { 0x01ba, 0x015f },
+ { 0x01bb, 0x0165 },
+ { 0x01bc, 0x017a },
+ { 0x01bd, 0x02dd },
+ { 0x01be, 0x017e },
+ { 0x01bf, 0x017c },
+ { 0x01c0, 0x0154 },
+ { 0x01c3, 0x0102 },
+ { 0x01c5, 0x0139 },
+ { 0x01c6, 0x0106 },
+ { 0x01c8, 0x010c },
+ { 0x01ca, 0x0118 },
+ { 0x01cc, 0x011a },
+ { 0x01cf, 0x010e },
+ { 0x01d0, 0x0110 },
+ { 0x01d1, 0x0143 },
+ { 0x01d2, 0x0147 },
+ { 0x01d5, 0x0150 },
+ { 0x01d8, 0x0158 },
+ { 0x01d9, 0x016e },
+ { 0x01db, 0x0170 },
+ { 0x01de, 0x0162 },
+ { 0x01e0, 0x0155 },
+ { 0x01e3, 0x0103 },
+ { 0x01e5, 0x013a },
+ { 0x01e6, 0x0107 },
+ { 0x01e8, 0x010d },
+ { 0x01ea, 0x0119 },
+ { 0x01ec, 0x011b },
+ { 0x01ef, 0x010f },
+ { 0x01f0, 0x0111 },
+ { 0x01f1, 0x0144 },
+ { 0x01f2, 0x0148 },
+ { 0x01f5, 0x0151 },
+ { 0x01f8, 0x0159 },
+ { 0x01f9, 0x016f },
+ { 0x01fb, 0x0171 },
+ { 0x01fe, 0x0163 },
+ { 0x01ff, 0x02d9 },
+ { 0x02a1, 0x0126 },
+ { 0x02a6, 0x0124 },
+ { 0x02a9, 0x0130 },
+ { 0x02ab, 0x011e },
+ { 0x02ac, 0x0134 },
+ { 0x02b1, 0x0127 },
+ { 0x02b6, 0x0125 },
+ { 0x02b9, 0x0131 },
+ { 0x02bb, 0x011f },
+ { 0x02bc, 0x0135 },
+ { 0x02c5, 0x010a },
+ { 0x02c6, 0x0108 },
+ { 0x02d5, 0x0120 },
+ { 0x02d8, 0x011c },
+ { 0x02dd, 0x016c },
+ { 0x02de, 0x015c },
+ { 0x02e5, 0x010b },
+ { 0x02e6, 0x0109 },
+ { 0x02f5, 0x0121 },
+ { 0x02f8, 0x011d },
+ { 0x02fd, 0x016d },
+ { 0x02fe, 0x015d },
+ { 0x03a2, 0x0138 },
+ { 0x03a3, 0x0156 },
+ { 0x03a5, 0x0128 },
+ { 0x03a6, 0x013b },
+ { 0x03aa, 0x0112 },
+ { 0x03ab, 0x0122 },
+ { 0x03ac, 0x0166 },
+ { 0x03b3, 0x0157 },
+ { 0x03b5, 0x0129 },
+ { 0x03b6, 0x013c },
+ { 0x03ba, 0x0113 },
+ { 0x03bb, 0x0123 },
+ { 0x03bc, 0x0167 },
+ { 0x03bd, 0x014a },
+ { 0x03bf, 0x014b },
+ { 0x03c0, 0x0100 },
+ { 0x03c7, 0x012e },
+ { 0x03cc, 0x0116 },
+ { 0x03cf, 0x012a },
+ { 0x03d1, 0x0145 },
+ { 0x03d2, 0x014c },
+ { 0x03d3, 0x0136 },
+ { 0x03d9, 0x0172 },
+ { 0x03dd, 0x0168 },
+ { 0x03de, 0x016a },
+ { 0x03e0, 0x0101 },
+ { 0x03e7, 0x012f },
+ { 0x03ec, 0x0117 },
+ { 0x03ef, 0x012b },
+ { 0x03f1, 0x0146 },
+ { 0x03f2, 0x014d },
+ { 0x03f3, 0x0137 },
+ { 0x03f9, 0x0173 },
+ { 0x03fd, 0x0169 },
+ { 0x03fe, 0x016b },
+ { 0x047e, 0x203e },
+ { 0x04a1, 0x3002 },
+ { 0x04a2, 0x300c },
+ { 0x04a3, 0x300d },
+ { 0x04a4, 0x3001 },
+ { 0x04a5, 0x30fb },
+ { 0x04a6, 0x30f2 },
+ { 0x04a7, 0x30a1 },
+ { 0x04a8, 0x30a3 },
+ { 0x04a9, 0x30a5 },
+ { 0x04aa, 0x30a7 },
+ { 0x04ab, 0x30a9 },
+ { 0x04ac, 0x30e3 },
+ { 0x04ad, 0x30e5 },
+ { 0x04ae, 0x30e7 },
+ { 0x04af, 0x30c3 },
+ { 0x04b0, 0x30fc },
+ { 0x04b1, 0x30a2 },
+ { 0x04b2, 0x30a4 },
+ { 0x04b3, 0x30a6 },
+ { 0x04b4, 0x30a8 },
+ { 0x04b5, 0x30aa },
+ { 0x04b6, 0x30ab },
+ { 0x04b7, 0x30ad },
+ { 0x04b8, 0x30af },
+ { 0x04b9, 0x30b1 },
+ { 0x04ba, 0x30b3 },
+ { 0x04bb, 0x30b5 },
+ { 0x04bc, 0x30b7 },
+ { 0x04bd, 0x30b9 },
+ { 0x04be, 0x30bb },
+ { 0x04bf, 0x30bd },
+ { 0x04c0, 0x30bf },
+ { 0x04c1, 0x30c1 },
+ { 0x04c2, 0x30c4 },
+ { 0x04c3, 0x30c6 },
+ { 0x04c4, 0x30c8 },
+ { 0x04c5, 0x30ca },
+ { 0x04c6, 0x30cb },
+ { 0x04c7, 0x30cc },
+ { 0x04c8, 0x30cd },
+ { 0x04c9, 0x30ce },
+ { 0x04ca, 0x30cf },
+ { 0x04cb, 0x30d2 },
+ { 0x04cc, 0x30d5 },
+ { 0x04cd, 0x30d8 },
+ { 0x04ce, 0x30db },
+ { 0x04cf, 0x30de },
+ { 0x04d0, 0x30df },
+ { 0x04d1, 0x30e0 },
+ { 0x04d2, 0x30e1 },
+ { 0x04d3, 0x30e2 },
+ { 0x04d4, 0x30e4 },
+ { 0x04d5, 0x30e6 },
+ { 0x04d6, 0x30e8 },
+ { 0x04d7, 0x30e9 },
+ { 0x04d8, 0x30ea },
+ { 0x04d9, 0x30eb },
+ { 0x04da, 0x30ec },
+ { 0x04db, 0x30ed },
+ { 0x04dc, 0x30ef },
+ { 0x04dd, 0x30f3 },
+ { 0x04de, 0x309b },
+ { 0x04df, 0x309c },
+ { 0x05ac, 0x060c },
+ { 0x05bb, 0x061b },
+ { 0x05bf, 0x061f },
+ { 0x05c1, 0x0621 },
+ { 0x05c2, 0x0622 },
+ { 0x05c3, 0x0623 },
+ { 0x05c4, 0x0624 },
+ { 0x05c5, 0x0625 },
+ { 0x05c6, 0x0626 },
+ { 0x05c7, 0x0627 },
+ { 0x05c8, 0x0628 },
+ { 0x05c9, 0x0629 },
+ { 0x05ca, 0x062a },
+ { 0x05cb, 0x062b },
+ { 0x05cc, 0x062c },
+ { 0x05cd, 0x062d },
+ { 0x05ce, 0x062e },
+ { 0x05cf, 0x062f },
+ { 0x05d0, 0x0630 },
+ { 0x05d1, 0x0631 },
+ { 0x05d2, 0x0632 },
+ { 0x05d3, 0x0633 },
+ { 0x05d4, 0x0634 },
+ { 0x05d5, 0x0635 },
+ { 0x05d6, 0x0636 },
+ { 0x05d7, 0x0637 },
+ { 0x05d8, 0x0638 },
+ { 0x05d9, 0x0639 },
+ { 0x05da, 0x063a },
+ { 0x05e0, 0x0640 },
+ { 0x05e1, 0x0641 },
+ { 0x05e2, 0x0642 },
+ { 0x05e3, 0x0643 },
+ { 0x05e4, 0x0644 },
+ { 0x05e5, 0x0645 },
+ { 0x05e6, 0x0646 },
+ { 0x05e7, 0x0647 },
+ { 0x05e8, 0x0648 },
+ { 0x05e9, 0x0649 },
+ { 0x05ea, 0x064a },
+ { 0x05eb, 0x064b },
+ { 0x05ec, 0x064c },
+ { 0x05ed, 0x064d },
+ { 0x05ee, 0x064e },
+ { 0x05ef, 0x064f },
+ { 0x05f0, 0x0650 },
+ { 0x05f1, 0x0651 },
+ { 0x05f2, 0x0652 },
+ { 0x06a1, 0x0452 },
+ { 0x06a2, 0x0453 },
+ { 0x06a3, 0x0451 },
+ { 0x06a4, 0x0454 },
+ { 0x06a5, 0x0455 },
+ { 0x06a6, 0x0456 },
+ { 0x06a7, 0x0457 },
+ { 0x06a8, 0x0458 },
+ { 0x06a9, 0x0459 },
+ { 0x06aa, 0x045a },
+ { 0x06ab, 0x045b },
+ { 0x06ac, 0x045c },
+ { 0x06ae, 0x045e },
+ { 0x06af, 0x045f },
+ { 0x06b0, 0x2116 },
+ { 0x06b1, 0x0402 },
+ { 0x06b2, 0x0403 },
+ { 0x06b3, 0x0401 },
+ { 0x06b4, 0x0404 },
+ { 0x06b5, 0x0405 },
+ { 0x06b6, 0x0406 },
+ { 0x06b7, 0x0407 },
+ { 0x06b8, 0x0408 },
+ { 0x06b9, 0x0409 },
+ { 0x06ba, 0x040a },
+ { 0x06bb, 0x040b },
+ { 0x06bc, 0x040c },
+ { 0x06be, 0x040e },
+ { 0x06bf, 0x040f },
+ { 0x06c0, 0x044e },
+ { 0x06c1, 0x0430 },
+ { 0x06c2, 0x0431 },
+ { 0x06c3, 0x0446 },
+ { 0x06c4, 0x0434 },
+ { 0x06c5, 0x0435 },
+ { 0x06c6, 0x0444 },
+ { 0x06c7, 0x0433 },
+ { 0x06c8, 0x0445 },
+ { 0x06c9, 0x0438 },
+ { 0x06ca, 0x0439 },
+ { 0x06cb, 0x043a },
+ { 0x06cc, 0x043b },
+ { 0x06cd, 0x043c },
+ { 0x06ce, 0x043d },
+ { 0x06cf, 0x043e },
+ { 0x06d0, 0x043f },
+ { 0x06d1, 0x044f },
+ { 0x06d2, 0x0440 },
+ { 0x06d3, 0x0441 },
+ { 0x06d4, 0x0442 },
+ { 0x06d5, 0x0443 },
+ { 0x06d6, 0x0436 },
+ { 0x06d7, 0x0432 },
+ { 0x06d8, 0x044c },
+ { 0x06d9, 0x044b },
+ { 0x06da, 0x0437 },
+ { 0x06db, 0x0448 },
+ { 0x06dc, 0x044d },
+ { 0x06dd, 0x0449 },
+ { 0x06de, 0x0447 },
+ { 0x06df, 0x044a },
+ { 0x06e0, 0x042e },
+ { 0x06e1, 0x0410 },
+ { 0x06e2, 0x0411 },
+ { 0x06e3, 0x0426 },
+ { 0x06e4, 0x0414 },
+ { 0x06e5, 0x0415 },
+ { 0x06e6, 0x0424 },
+ { 0x06e7, 0x0413 },
+ { 0x06e8, 0x0425 },
+ { 0x06e9, 0x0418 },
+ { 0x06ea, 0x0419 },
+ { 0x06eb, 0x041a },
+ { 0x06ec, 0x041b },
+ { 0x06ed, 0x041c },
+ { 0x06ee, 0x041d },
+ { 0x06ef, 0x041e },
+ { 0x06f0, 0x041f },
+ { 0x06f1, 0x042f },
+ { 0x06f2, 0x0420 },
+ { 0x06f3, 0x0421 },
+ { 0x06f4, 0x0422 },
+ { 0x06f5, 0x0423 },
+ { 0x06f6, 0x0416 },
+ { 0x06f7, 0x0412 },
+ { 0x06f8, 0x042c },
+ { 0x06f9, 0x042b },
+ { 0x06fa, 0x0417 },
+ { 0x06fb, 0x0428 },
+ { 0x06fc, 0x042d },
+ { 0x06fd, 0x0429 },
+ { 0x06fe, 0x0427 },
+ { 0x06ff, 0x042a },
+ { 0x07a1, 0x0386 },
+ { 0x07a2, 0x0388 },
+ { 0x07a3, 0x0389 },
+ { 0x07a4, 0x038a },
+ { 0x07a5, 0x03aa },
+ { 0x07a7, 0x038c },
+ { 0x07a8, 0x038e },
+ { 0x07a9, 0x03ab },
+ { 0x07ab, 0x038f },
+ { 0x07ae, 0x0385 },
+ { 0x07af, 0x2015 },
+ { 0x07b1, 0x03ac },
+ { 0x07b2, 0x03ad },
+ { 0x07b3, 0x03ae },
+ { 0x07b4, 0x03af },
+ { 0x07b5, 0x03ca },
+ { 0x07b6, 0x0390 },
+ { 0x07b7, 0x03cc },
+ { 0x07b8, 0x03cd },
+ { 0x07b9, 0x03cb },
+ { 0x07ba, 0x03b0 },
+ { 0x07bb, 0x03ce },
+ { 0x07c1, 0x0391 },
+ { 0x07c2, 0x0392 },
+ { 0x07c3, 0x0393 },
+ { 0x07c4, 0x0394 },
+ { 0x07c5, 0x0395 },
+ { 0x07c6, 0x0396 },
+ { 0x07c7, 0x0397 },
+ { 0x07c8, 0x0398 },
+ { 0x07c9, 0x0399 },
+ { 0x07ca, 0x039a },
+ { 0x07cb, 0x039b },
+ { 0x07cc, 0x039c },
+ { 0x07cd, 0x039d },
+ { 0x07ce, 0x039e },
+ { 0x07cf, 0x039f },
+ { 0x07d0, 0x03a0 },
+ { 0x07d1, 0x03a1 },
+ { 0x07d2, 0x03a3 },
+ { 0x07d4, 0x03a4 },
+ { 0x07d5, 0x03a5 },
+ { 0x07d6, 0x03a6 },
+ { 0x07d7, 0x03a7 },
+ { 0x07d8, 0x03a8 },
+ { 0x07d9, 0x03a9 },
+ { 0x07e1, 0x03b1 },
+ { 0x07e2, 0x03b2 },
+ { 0x07e3, 0x03b3 },
+ { 0x07e4, 0x03b4 },
+ { 0x07e5, 0x03b5 },
+ { 0x07e6, 0x03b6 },
+ { 0x07e7, 0x03b7 },
+ { 0x07e8, 0x03b8 },
+ { 0x07e9, 0x03b9 },
+ { 0x07ea, 0x03ba },
+ { 0x07eb, 0x03bb },
+ { 0x07ec, 0x03bc },
+ { 0x07ed, 0x03bd },
+ { 0x07ee, 0x03be },
+ { 0x07ef, 0x03bf },
+ { 0x07f0, 0x03c0 },
+ { 0x07f1, 0x03c1 },
+ { 0x07f2, 0x03c3 },
+ { 0x07f3, 0x03c2 },
+ { 0x07f4, 0x03c4 },
+ { 0x07f5, 0x03c5 },
+ { 0x07f6, 0x03c6 },
+ { 0x07f7, 0x03c7 },
+ { 0x07f8, 0x03c8 },
+ { 0x07f9, 0x03c9 },
+ { 0x08a1, 0x23b7 },
+ { 0x08a2, 0x250c },
+ { 0x08a3, 0x2500 },
+ { 0x08a4, 0x2320 },
+ { 0x08a5, 0x2321 },
+ { 0x08a6, 0x2502 },
+ { 0x08a7, 0x23a1 },
+ { 0x08a8, 0x23a3 },
+ { 0x08a9, 0x23a4 },
+ { 0x08aa, 0x23a6 },
+ { 0x08ab, 0x239b },
+ { 0x08ac, 0x239d },
+ { 0x08ad, 0x239e },
+ { 0x08ae, 0x23a0 },
+ { 0x08af, 0x23a8 },
+ { 0x08b0, 0x23ac },
+ { 0x08bc, 0x2264 },
+ { 0x08bd, 0x2260 },
+ { 0x08be, 0x2265 },
+ { 0x08bf, 0x222b },
+ { 0x08c0, 0x2234 },
+ { 0x08c1, 0x221d },
+ { 0x08c2, 0x221e },
+ { 0x08c5, 0x2207 },
+ { 0x08c8, 0x223c },
+ { 0x08c9, 0x2243 },
+ { 0x08cd, 0x21d4 },
+ { 0x08ce, 0x21d2 },
+ { 0x08cf, 0x2261 },
+ { 0x08d6, 0x221a },
+ { 0x08da, 0x2282 },
+ { 0x08db, 0x2283 },
+ { 0x08dc, 0x2229 },
+ { 0x08dd, 0x222a },
+ { 0x08de, 0x2227 },
+ { 0x08df, 0x2228 },
+ { 0x08ef, 0x2202 },
+ { 0x08f6, 0x0192 },
+ { 0x08fb, 0x2190 },
+ { 0x08fc, 0x2191 },
+ { 0x08fd, 0x2192 },
+ { 0x08fe, 0x2193 },
+ { 0x09e0, 0x25c6 },
+ { 0x09e1, 0x2592 },
+ { 0x09e2, 0x2409 },
+ { 0x09e3, 0x240c },
+ { 0x09e4, 0x240d },
+ { 0x09e5, 0x240a },
+ { 0x09e8, 0x2424 },
+ { 0x09e9, 0x240b },
+ { 0x09ea, 0x2518 },
+ { 0x09eb, 0x2510 },
+ { 0x09ec, 0x250c },
+ { 0x09ed, 0x2514 },
+ { 0x09ee, 0x253c },
+ { 0x09ef, 0x23ba },
+ { 0x09f0, 0x23bb },
+ { 0x09f1, 0x2500 },
+ { 0x09f2, 0x23bc },
+ { 0x09f3, 0x23bd },
+ { 0x09f4, 0x251c },
+ { 0x09f5, 0x2524 },
+ { 0x09f6, 0x2534 },
+ { 0x09f7, 0x252c },
+ { 0x09f8, 0x2502 },
+ { 0x0aa1, 0x2003 },
+ { 0x0aa2, 0x2002 },
+ { 0x0aa3, 0x2004 },
+ { 0x0aa4, 0x2005 },
+ { 0x0aa5, 0x2007 },
+ { 0x0aa6, 0x2008 },
+ { 0x0aa7, 0x2009 },
+ { 0x0aa8, 0x200a },
+ { 0x0aa9, 0x2014 },
+ { 0x0aaa, 0x2013 },
+ { 0x0aae, 0x2026 },
+ { 0x0aaf, 0x2025 },
+ { 0x0ab0, 0x2153 },
+ { 0x0ab1, 0x2154 },
+ { 0x0ab2, 0x2155 },
+ { 0x0ab3, 0x2156 },
+ { 0x0ab4, 0x2157 },
+ { 0x0ab5, 0x2158 },
+ { 0x0ab6, 0x2159 },
+ { 0x0ab7, 0x215a },
+ { 0x0ab8, 0x2105 },
+ { 0x0abb, 0x2012 },
+ { 0x0abc, 0x2329 },
+ { 0x0abe, 0x232a },
+ { 0x0ac3, 0x215b },
+ { 0x0ac4, 0x215c },
+ { 0x0ac5, 0x215d },
+ { 0x0ac6, 0x215e },
+ { 0x0ac9, 0x2122 },
+ { 0x0aca, 0x2613 },
+ { 0x0acc, 0x25c1 },
+ { 0x0acd, 0x25b7 },
+ { 0x0ace, 0x25cb },
+ { 0x0acf, 0x25af },
+ { 0x0ad0, 0x2018 },
+ { 0x0ad1, 0x2019 },
+ { 0x0ad2, 0x201c },
+ { 0x0ad3, 0x201d },
+ { 0x0ad4, 0x211e },
+ { 0x0ad6, 0x2032 },
+ { 0x0ad7, 0x2033 },
+ { 0x0ad9, 0x271d },
+ { 0x0adb, 0x25ac },
+ { 0x0adc, 0x25c0 },
+ { 0x0add, 0x25b6 },
+ { 0x0ade, 0x25cf },
+ { 0x0adf, 0x25ae },
+ { 0x0ae0, 0x25e6 },
+ { 0x0ae1, 0x25ab },
+ { 0x0ae2, 0x25ad },
+ { 0x0ae3, 0x25b3 },
+ { 0x0ae4, 0x25bd },
+ { 0x0ae5, 0x2606 },
+ { 0x0ae6, 0x2022 },
+ { 0x0ae7, 0x25aa },
+ { 0x0ae8, 0x25b2 },
+ { 0x0ae9, 0x25bc },
+ { 0x0aea, 0x261c },
+ { 0x0aeb, 0x261e },
+ { 0x0aec, 0x2663 },
+ { 0x0aed, 0x2666 },
+ { 0x0aee, 0x2665 },
+ { 0x0af0, 0x2720 },
+ { 0x0af1, 0x2020 },
+ { 0x0af2, 0x2021 },
+ { 0x0af3, 0x2713 },
+ { 0x0af4, 0x2717 },
+ { 0x0af5, 0x266f },
+ { 0x0af6, 0x266d },
+ { 0x0af7, 0x2642 },
+ { 0x0af8, 0x2640 },
+ { 0x0af9, 0x260e },
+ { 0x0afa, 0x2315 },
+ { 0x0afb, 0x2117 },
+ { 0x0afc, 0x2038 },
+ { 0x0afd, 0x201a },
+ { 0x0afe, 0x201e },
+ { 0x0ba3, 0x003c },
+ { 0x0ba6, 0x003e },
+ { 0x0ba8, 0x2228 },
+ { 0x0ba9, 0x2227 },
+ { 0x0bc0, 0x00af },
+ { 0x0bc2, 0x22a5 },
+ { 0x0bc3, 0x2229 },
+ { 0x0bc4, 0x230a },
+ { 0x0bc6, 0x005f },
+ { 0x0bca, 0x2218 },
+ { 0x0bcc, 0x2395 },
+ { 0x0bce, 0x22a4 },
+ { 0x0bcf, 0x25cb },
+ { 0x0bd3, 0x2308 },
+ { 0x0bd6, 0x222a },
+ { 0x0bd8, 0x2283 },
+ { 0x0bda, 0x2282 },
+ { 0x0bdc, 0x22a2 },
+ { 0x0bfc, 0x22a3 },
+ { 0x0cdf, 0x2017 },
+ { 0x0ce0, 0x05d0 },
+ { 0x0ce1, 0x05d1 },
+ { 0x0ce2, 0x05d2 },
+ { 0x0ce3, 0x05d3 },
+ { 0x0ce4, 0x05d4 },
+ { 0x0ce5, 0x05d5 },
+ { 0x0ce6, 0x05d6 },
+ { 0x0ce7, 0x05d7 },
+ { 0x0ce8, 0x05d8 },
+ { 0x0ce9, 0x05d9 },
+ { 0x0cea, 0x05da },
+ { 0x0ceb, 0x05db },
+ { 0x0cec, 0x05dc },
+ { 0x0ced, 0x05dd },
+ { 0x0cee, 0x05de },
+ { 0x0cef, 0x05df },
+ { 0x0cf0, 0x05e0 },
+ { 0x0cf1, 0x05e1 },
+ { 0x0cf2, 0x05e2 },
+ { 0x0cf3, 0x05e3 },
+ { 0x0cf4, 0x05e4 },
+ { 0x0cf5, 0x05e5 },
+ { 0x0cf6, 0x05e6 },
+ { 0x0cf7, 0x05e7 },
+ { 0x0cf8, 0x05e8 },
+ { 0x0cf9, 0x05e9 },
+ { 0x0cfa, 0x05ea },
+ { 0x0da1, 0x0e01 },
+ { 0x0da2, 0x0e02 },
+ { 0x0da3, 0x0e03 },
+ { 0x0da4, 0x0e04 },
+ { 0x0da5, 0x0e05 },
+ { 0x0da6, 0x0e06 },
+ { 0x0da7, 0x0e07 },
+ { 0x0da8, 0x0e08 },
+ { 0x0da9, 0x0e09 },
+ { 0x0daa, 0x0e0a },
+ { 0x0dab, 0x0e0b },
+ { 0x0dac, 0x0e0c },
+ { 0x0dad, 0x0e0d },
+ { 0x0dae, 0x0e0e },
+ { 0x0daf, 0x0e0f },
+ { 0x0db0, 0x0e10 },
+ { 0x0db1, 0x0e11 },
+ { 0x0db2, 0x0e12 },
+ { 0x0db3, 0x0e13 },
+ { 0x0db4, 0x0e14 },
+ { 0x0db5, 0x0e15 },
+ { 0x0db6, 0x0e16 },
+ { 0x0db7, 0x0e17 },
+ { 0x0db8, 0x0e18 },
+ { 0x0db9, 0x0e19 },
+ { 0x0dba, 0x0e1a },
+ { 0x0dbb, 0x0e1b },
+ { 0x0dbc, 0x0e1c },
+ { 0x0dbd, 0x0e1d },
+ { 0x0dbe, 0x0e1e },
+ { 0x0dbf, 0x0e1f },
+ { 0x0dc0, 0x0e20 },
+ { 0x0dc1, 0x0e21 },
+ { 0x0dc2, 0x0e22 },
+ { 0x0dc3, 0x0e23 },
+ { 0x0dc4, 0x0e24 },
+ { 0x0dc5, 0x0e25 },
+ { 0x0dc6, 0x0e26 },
+ { 0x0dc7, 0x0e27 },
+ { 0x0dc8, 0x0e28 },
+ { 0x0dc9, 0x0e29 },
+ { 0x0dca, 0x0e2a },
+ { 0x0dcb, 0x0e2b },
+ { 0x0dcc, 0x0e2c },
+ { 0x0dcd, 0x0e2d },
+ { 0x0dce, 0x0e2e },
+ { 0x0dcf, 0x0e2f },
+ { 0x0dd0, 0x0e30 },
+ { 0x0dd1, 0x0e31 },
+ { 0x0dd2, 0x0e32 },
+ { 0x0dd3, 0x0e33 },
+ { 0x0dd4, 0x0e34 },
+ { 0x0dd5, 0x0e35 },
+ { 0x0dd6, 0x0e36 },
+ { 0x0dd7, 0x0e37 },
+ { 0x0dd8, 0x0e38 },
+ { 0x0dd9, 0x0e39 },
+ { 0x0dda, 0x0e3a },
+ { 0x0ddf, 0x0e3f },
+ { 0x0de0, 0x0e40 },
+ { 0x0de1, 0x0e41 },
+ { 0x0de2, 0x0e42 },
+ { 0x0de3, 0x0e43 },
+ { 0x0de4, 0x0e44 },
+ { 0x0de5, 0x0e45 },
+ { 0x0de6, 0x0e46 },
+ { 0x0de7, 0x0e47 },
+ { 0x0de8, 0x0e48 },
+ { 0x0de9, 0x0e49 },
+ { 0x0dea, 0x0e4a },
+ { 0x0deb, 0x0e4b },
+ { 0x0dec, 0x0e4c },
+ { 0x0ded, 0x0e4d },
+ { 0x0df0, 0x0e50 },
+ { 0x0df1, 0x0e51 },
+ { 0x0df2, 0x0e52 },
+ { 0x0df3, 0x0e53 },
+ { 0x0df4, 0x0e54 },
+ { 0x0df5, 0x0e55 },
+ { 0x0df6, 0x0e56 },
+ { 0x0df7, 0x0e57 },
+ { 0x0df8, 0x0e58 },
+ { 0x0df9, 0x0e59 },
+ { 0x0ea1, 0x3131 },
+ { 0x0ea2, 0x3132 },
+ { 0x0ea3, 0x3133 },
+ { 0x0ea4, 0x3134 },
+ { 0x0ea5, 0x3135 },
+ { 0x0ea6, 0x3136 },
+ { 0x0ea7, 0x3137 },
+ { 0x0ea8, 0x3138 },
+ { 0x0ea9, 0x3139 },
+ { 0x0eaa, 0x313a },
+ { 0x0eab, 0x313b },
+ { 0x0eac, 0x313c },
+ { 0x0ead, 0x313d },
+ { 0x0eae, 0x313e },
+ { 0x0eaf, 0x313f },
+ { 0x0eb0, 0x3140 },
+ { 0x0eb1, 0x3141 },
+ { 0x0eb2, 0x3142 },
+ { 0x0eb3, 0x3143 },
+ { 0x0eb4, 0x3144 },
+ { 0x0eb5, 0x3145 },
+ { 0x0eb6, 0x3146 },
+ { 0x0eb7, 0x3147 },
+ { 0x0eb8, 0x3148 },
+ { 0x0eb9, 0x3149 },
+ { 0x0eba, 0x314a },
+ { 0x0ebb, 0x314b },
+ { 0x0ebc, 0x314c },
+ { 0x0ebd, 0x314d },
+ { 0x0ebe, 0x314e },
+ { 0x0ebf, 0x314f },
+ { 0x0ec0, 0x3150 },
+ { 0x0ec1, 0x3151 },
+ { 0x0ec2, 0x3152 },
+ { 0x0ec3, 0x3153 },
+ { 0x0ec4, 0x3154 },
+ { 0x0ec5, 0x3155 },
+ { 0x0ec6, 0x3156 },
+ { 0x0ec7, 0x3157 },
+ { 0x0ec8, 0x3158 },
+ { 0x0ec9, 0x3159 },
+ { 0x0eca, 0x315a },
+ { 0x0ecb, 0x315b },
+ { 0x0ecc, 0x315c },
+ { 0x0ecd, 0x315d },
+ { 0x0ece, 0x315e },
+ { 0x0ecf, 0x315f },
+ { 0x0ed0, 0x3160 },
+ { 0x0ed1, 0x3161 },
+ { 0x0ed2, 0x3162 },
+ { 0x0ed3, 0x3163 },
+ { 0x0ed4, 0x11a8 },
+ { 0x0ed5, 0x11a9 },
+ { 0x0ed6, 0x11aa },
+ { 0x0ed7, 0x11ab },
+ { 0x0ed8, 0x11ac },
+ { 0x0ed9, 0x11ad },
+ { 0x0eda, 0x11ae },
+ { 0x0edb, 0x11af },
+ { 0x0edc, 0x11b0 },
+ { 0x0edd, 0x11b1 },
+ { 0x0ede, 0x11b2 },
+ { 0x0edf, 0x11b3 },
+ { 0x0ee0, 0x11b4 },
+ { 0x0ee1, 0x11b5 },
+ { 0x0ee2, 0x11b6 },
+ { 0x0ee3, 0x11b7 },
+ { 0x0ee4, 0x11b8 },
+ { 0x0ee5, 0x11b9 },
+ { 0x0ee6, 0x11ba },
+ { 0x0ee7, 0x11bb },
+ { 0x0ee8, 0x11bc },
+ { 0x0ee9, 0x11bd },
+ { 0x0eea, 0x11be },
+ { 0x0eeb, 0x11bf },
+ { 0x0eec, 0x11c0 },
+ { 0x0eed, 0x11c1 },
+ { 0x0eee, 0x11c2 },
+ { 0x0eef, 0x316d },
+ { 0x0ef0, 0x3171 },
+ { 0x0ef1, 0x3178 },
+ { 0x0ef2, 0x317f },
+ { 0x0ef3, 0x3181 },
+ { 0x0ef4, 0x3184 },
+ { 0x0ef5, 0x3186 },
+ { 0x0ef6, 0x318d },
+ { 0x0ef7, 0x318e },
+ { 0x0ef8, 0x11eb },
+ { 0x0ef9, 0x11f0 },
+ { 0x0efa, 0x11f9 },
+ { 0x0eff, 0x20a9 },
#if 0
- /* FIXME: there is no keysym 0x13a4? But 0x20ac is EuroSign in both
- keysym and Unicode */
- { 0x13a4, 0x20ac },
+ /* FIXME: there is no keysym 0x13a4? But 0x20ac is EuroSign in both
+ keysym and Unicode */
+ { 0x13a4, 0x20ac },
#endif
- { 0x13bc, 0x0152 },
- { 0x13bd, 0x0153 },
- { 0x13be, 0x0178 },
- { 0x20ac, 0x20ac },
+ { 0x13bc, 0x0152 },
+ { 0x13bd, 0x0153 },
+ { 0x13be, 0x0178 },
+ { 0x20ac, 0x20ac },
- /* Special function keys. */
+ /* Special function keys. */
- { 0xff08, 0x0008 }, /* XK_BackSpace */
- { 0xff09, 0x0009 }, /* XK_Tab */
- { 0xff0a, 0x000a }, /* XK_Linefeed */
- { 0xff0d, 0x000d }, /* XK_Return */
- { 0xff13, 0x0013 }, /* XK_Pause */
- { 0xff1b, 0x001b }, /* XK_Escape */
- { 0xff50, 0x0001 }, /* XK_Home */
- { 0xff51, 0x001c }, /* XK_Left */
- { 0xff52, 0x001e }, /* XK_Up */
- { 0xff53, 0x001d }, /* XK_Right */
- { 0xff54, 0x001f }, /* XK_Down */
- { 0xff55, 0x000b }, /* XK_Prior */
- { 0xff56, 0x000c }, /* XK_Next */
- { 0xff57, 0x0004 }, /* XK_End */
- { 0xff6a, 0x0005 }, /* XK_Help */
- { 0xffff, 0x007f }, /* XK_Delete */
+ { 0xff08, 0x0008 }, /* XK_BackSpace */
+ { 0xff09, 0x0009 }, /* XK_Tab */
+ { 0xff0a, 0x000a }, /* XK_Linefeed */
+ { 0xff0d, 0x000d }, /* XK_Return */
+ { 0xff13, 0x0013 }, /* XK_Pause */
+ { 0xff1b, 0x001b }, /* XK_Escape */
+ { 0xff50, 0x0001 }, /* XK_Home */
+ { 0xff51, 0x001c }, /* XK_Left */
+ { 0xff52, 0x001e }, /* XK_Up */
+ { 0xff53, 0x001d }, /* XK_Right */
+ { 0xff54, 0x001f }, /* XK_Down */
+ { 0xff55, 0x000b }, /* XK_Prior */
+ { 0xff56, 0x000c }, /* XK_Next */
+ { 0xff57, 0x0004 }, /* XK_End */
+ { 0xff6a, 0x0005 }, /* XK_Help */
+ { 0xffff, 0x007f }, /* XK_Delete */
};
-long keysym2ucs(int keysym)
+long
+keysym2ucs(int keysym)
{
int min = 0;
int max = sizeof(keysymtab) / sizeof(struct codepair) - 1;
@@ -841,33 +842,35 @@ long keysym2ucs(int keysym)
/* also check for directly encoded 24-bit UCS characters */
if ((keysym & 0xff000000) == 0x01000000)
- return keysym & 0x00ffffff;
+ return keysym & 0x00ffffff;
/* binary search in table */
while (max >= min) {
- mid = (min + max) / 2;
- if (keysymtab[mid].keysym < keysym)
- min = mid + 1;
- else if (keysymtab[mid].keysym > keysym)
- max = mid - 1;
- else {
- /* found it */
- return keysymtab[mid].ucs;
- }
+ mid = (min + max) / 2;
+ if (keysymtab[mid].keysym < keysym)
+ min = mid + 1;
+ else if (keysymtab[mid].keysym > keysym)
+ max = mid - 1;
+ else {
+ /* found it */
+ return keysymtab[mid].ucs;
+ }
}
/* no matching Unicode value found */
return -1;
}
-static int reverse_compare (const void *a, const void *b)
+static int
+reverse_compare(const void *a, const void *b)
{
const struct codepair *ca = a, *cb = b;
return ca->ucs - cb->ucs;
}
-int ucs2keysym(long ucs)
+int
+ucs2keysym(long ucs)
{
static struct codepair *reverse_keysymtab;
@@ -875,15 +878,14 @@ int ucs2keysym(long ucs)
int max = sizeof(keysymtab) / sizeof(struct codepair) - 1;
int mid;
- if (reverse_keysymtab == NULL)
- {
- reverse_keysymtab = malloc (sizeof (keysymtab));
- memcpy (reverse_keysymtab, keysymtab, sizeof (keysymtab));
+ if (reverse_keysymtab == NULL) {
+ reverse_keysymtab = malloc(sizeof(keysymtab));
+ memcpy(reverse_keysymtab, keysymtab, sizeof(keysymtab));
- qsort (reverse_keysymtab,
- sizeof (keysymtab) / sizeof (struct codepair),
- sizeof (struct codepair),
- reverse_compare);
+ qsort(reverse_keysymtab,
+ sizeof(keysymtab) / sizeof(struct codepair),
+ sizeof(struct codepair),
+ reverse_compare);
}
/* first check for Latin-1 characters (1:1 mapping) */
@@ -893,15 +895,15 @@ int ucs2keysym(long ucs)
/* binary search in table */
while (max >= min) {
- mid = (min + max) / 2;
- if (reverse_keysymtab[mid].ucs < ucs)
- min = mid + 1;
- else if (reverse_keysymtab[mid].ucs > ucs)
- max = mid - 1;
- else {
- /* found it */
- return reverse_keysymtab[mid].keysym;
- }
+ mid = (min + max) / 2;
+ if (reverse_keysymtab[mid].ucs < ucs)
+ min = mid + 1;
+ else if (reverse_keysymtab[mid].ucs > ucs)
+ max = mid - 1;
+ else {
+ /* found it */
+ return reverse_keysymtab[mid].keysym;
+ }
}
/* finally, assume a directly encoded 24-bit UCS character */
diff --git a/src/xtoq/keysym2ucs.h b/src/xtoq/keysym2ucs.h
index f5b7a18..01af037 100644
--- a/src/xtoq/keysym2ucs.h
+++ b/src/xtoq/keysym2ucs.h
@@ -30,7 +30,9 @@
#ifndef KEYSYM2UCS_H
#define KEYSYM2UCS_H 1
-extern long keysym2ucs(int keysym);
-extern int ucs2keysym(long ucs);
+extern long
+keysym2ucs(int keysym);
+extern int
+ucs2keysym(long ucs);
#endif /* KEYSYM2UCS_H */
diff --git a/src/xtoq/main.m b/src/xtoq/main.m
index e84f54f..29d6e93 100644
--- a/src/xtoq/main.m
+++ b/src/xtoq/main.m
@@ -31,7 +31,8 @@
#import <Cocoa/Cocoa.h>
#import "XtoqApplication.h"
-int main(int argc, char *argv[])
+int
+main(int argc, char *argv[])
{
// Xcode provided code
return XtoqApplicationMain(argc, argv);