易截截图软件、单文件、免安装、纯绿色、仅160KB

浅析linux下键盘设备工作和注册流程

浅析linux下键盘设备工作和注册流程
【浅析linux下鼠标驱动的实现】
 input_init()=>
=>
class_register(&input_class);注册input类
input_proc_init();创建proc下的目录和文件
register_chrdev(INPUT_MAJOR, "input", &input_fops);注册驱动程序到cdev_map上,以待驱动设备.
drivers\input\keyboard\pxa3xx_keypad.c为我们的keyboard设备,
pxa3xx_keypad_probe=>
request_irq(IRQ_ENHROT, &enhanced_rotary_interrupt,
            IRQF_DISABLED, "Enhanced Rotary", (void *)keypad);注册快捷键中断
request_irq(IRQ_KEYPAD, pxa3xx_keypad_interrupt, IRQF_DISABLED,pdev->name, keypad);注册中断
static irqreturn_t pxa3xx_keypad_interrupt(int irq, void *dev_id)
{
    struct pxa3xx_keypad *keypad = dev_id;
    uint32_t kpc = keypad_readl(KPC);
    if (kpc & KPC_MI)
        pxa3xx_keypad_scan_matrix(keypad);
    if (kpc & KPC_DI)
        pxa3xx_keypad_scan_direct(keypad);
    return IRQ_HANDLED;
}
在irq中如果读到了key,那么会直接调用
input_report_key(keypad->input_dev,lookup_matrix_keycode(keypad, row, col),
                new_state[col] & (1 << row));
static inline unsigned int lookup_matrix_keycode(
        struct pxa3xx_keypad *keypad, int row, int col)
{
    return keypad->matrix_keycodes[(row << 3) + col];
}
input_report_key(struct input_dev *dev, unsigned int code, int value)
dev为input_dev设备,我们的4*4键盘
code为标准PC键盘码值
value为按键动作,为1表示键盘按下,为0表示按键抬起
static inline void input_report_key(struct input_dev *dev, unsigned int code, int value)
{
    input_event(dev, EV_KEY, code, !!value);
}
void inp


相关文档:

linux内核模块和驱动程序的编写

linux中的大部分驱动程序,是以模块的形式编写的.这些驱动程序源码可以修改到内核中,也可以把他们编译成模块形势,在需要的时候动态加载.
一个典型的驱动程序,大体上可以分为这么几个部分:
1、注册设备
在系统初启,或者模块加载时候,必须将设备登记到相应的设备数组,并返回设备的主驱动号,例如:对快设备来说调用refister_b ......

应知应会:在linux/unix上分析程序日志的技巧

 
more :
    作用:该指令,可以将文件的内容,从前向后,每次一屏,打印到终端屏幕上。
    用法:
        more filename
        显示一屏信息后,' 空格' 向下翻一屏,' 回车' 向下翻一行,' q ' 退 ......

Linux文件内容查询命令(转)

grep、fgrep和egrep命令
这组命令以指定模式搜索文件,并通知用户在什么文件中搜索到与指定的模式匹配的字符串,并打印出所有包含该字符串的文本行,在该文本行的最前面是该行所在 的文件名。grep命令一次只能搜索一个指定的模式;egrep命令检索扩展的正则表达式(包括表达式组和可选项);fgrep命令检索固定字符串,它不 ......

linux下dd命令(转)

命令详解
dd 是 Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
dd 的主要选项:
指定数字的地方若以下列字符结尾乘以相应的数字:
b=512, c=1, k=1024, w=2, xm=number m
if=file
输入文件名,缺省为标准输入。
of=file
输出文件名,缺省为标准输出。
ibs ......

linux的ps命令(转)

linux的ps命令和top都是用来监视系统进程和资源使用情况的有用命令, ps命令更为常用, 所以掌握ps命令是很有必要的
ps命令如果有任何疑问,请在终端下输入 :# man ps
名称:ps
使用权限:所有使用者
使用方式:ps [options] [--help]
说明:显示瞬间行程 (process) 的动态
参数:
ps 的参数非常多, 在此仅列出几个常用 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号