mac_hid.c
来自「Linux Kernel 2.6.9 for OMAP1710」· C语言 代码 · 共 141 行
C
141 行
/* * drivers/macintosh/mac_hid.c * * HID support stuff for Macintosh computers. * * Copyright (C) 2000 Franz Sirl. * * This file will soon be removed in favor of an uinput userspace tool. */#include <linux/config.h>#include <linux/init.h>#include <linux/proc_fs.h>#include <linux/sysctl.h>#include <linux/input.h>#include <linux/module.h>static struct input_dev emumousebtn;static void emumousebtn_input_register(void);static int mouse_emulate_buttons = 0;static int mouse_button2_keycode = KEY_RIGHTCTRL; /* right control key */static int mouse_button3_keycode = KEY_RIGHTALT; /* right option key */static int mouse_last_keycode = 0;#if defined(CONFIG_SYSCTL)/* file(s) in /proc/sys/dev/mac_hid */ctl_table mac_hid_files[] = { { .ctl_name = DEV_MAC_HID_MOUSE_BUTTON_EMULATION, .procname = "mouse_button_emulation", .data = &mouse_emulate_buttons, .maxlen = sizeof(int), .mode = 0644, .proc_handler = &proc_dointvec, }, { .ctl_name = DEV_MAC_HID_MOUSE_BUTTON2_KEYCODE, .procname = "mouse_button2_keycode", .data = &mouse_button2_keycode, .maxlen = sizeof(int), .mode = 0644, .proc_handler = &proc_dointvec, }, { .ctl_name = DEV_MAC_HID_MOUSE_BUTTON3_KEYCODE, .procname = "mouse_button3_keycode", .data = &mouse_button3_keycode, .maxlen = sizeof(int), .mode = 0644, .proc_handler = &proc_dointvec, }, { .ctl_name = 0 }};/* dir in /proc/sys/dev */ctl_table mac_hid_dir[] = { { .ctl_name = DEV_MAC_HID, .procname = "mac_hid", .maxlen = 0, .mode = 0555, .child = mac_hid_files, }, { .ctl_name = 0 }};/* /proc/sys/dev itself, in case that is not there yet */ctl_table mac_hid_root_dir[] = { { .ctl_name = CTL_DEV, .procname = "dev", .maxlen = 0, .mode = 0555, .child = mac_hid_dir, }, { .ctl_name = 0 }};static struct ctl_table_header *mac_hid_sysctl_header;#endif /* endif CONFIG_SYSCTL */int mac_hid_mouse_emulate_buttons(int caller, unsigned int keycode, int down){ switch (caller) { case 1: /* Called from keyboard.c */ if (mouse_emulate_buttons && (keycode == mouse_button2_keycode || keycode == mouse_button3_keycode)) { if (mouse_emulate_buttons == 1) { input_report_key(&emumousebtn, keycode == mouse_button2_keycode ? BTN_MIDDLE : BTN_RIGHT, down); input_sync(&emumousebtn); return 1; } mouse_last_keycode = down ? keycode : 0; } break; } return 0;}EXPORT_SYMBOL(mac_hid_mouse_emulate_buttons);static void emumousebtn_input_register(void){ emumousebtn.name = "Macintosh mouse button emulation"; init_input_dev(&emumousebtn); emumousebtn.evbit[0] = BIT(EV_KEY) | BIT(EV_REL); emumousebtn.keybit[LONG(BTN_MOUSE)] = BIT(BTN_LEFT) | BIT(BTN_MIDDLE) | BIT(BTN_RIGHT); emumousebtn.relbit[0] = BIT(REL_X) | BIT(REL_Y); emumousebtn.id.bustype = BUS_ADB; emumousebtn.id.vendor = 0x0001; emumousebtn.id.product = 0x0001; emumousebtn.id.version = 0x0100; input_register_device(&emumousebtn); printk(KERN_INFO "input: Macintosh mouse button emulation\n");}int __init mac_hid_init(void){ emumousebtn_input_register();#if defined(CONFIG_SYSCTL) mac_hid_sysctl_header = register_sysctl_table(mac_hid_root_dir, 1);#endif /* CONFIG_SYSCTL */ return 0;}device_initcall(mac_hid_init);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?