浅析linux下键盘设备工作和注册流程
懒得写了, 转几篇过来:
原帖地址:
http://blog.chinaunix.net/u1/38994/showart_1130025.html
浅析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
相关文档:
最近在学习Linux系统。对于要想从事java开发方向的人士来说熟悉Linux系统是有必要的。
我来对自己学习Linux做些总结吧。
1.Linux里的常用指令要会用,比如vi指令,RPM指令,ifconfig指令,netconfig指令,>.<指令,wall指令,rm指令,mkdir,rmdir指令,useradd,userdel,groupadd,groupdel指令,more指令,chkco ......
装了一个VMWARE,其中运行的是LINUX-FC11。为了能够同Window Host共享文件,打算在Linux上装Samba服务。之前也试着用VMWARE Tools,不过没能成功。说我的FC11有问题。可能是编译环境或者版本的问题。于是用Samba。
用Samba的GUI界面设置了共享目录。可是Windows还是找不到我的共享目录。接着按网上的提示,打开了防火墙将S ......
用vsFTPd来架设FTP服务器,vsFTPd服务器是目前最好的FTP服务器软件,优点是体积小,可定制强,效率高,高安全性。
1。查看是否安装了vsFTPd软件
[root@linuxsir001 root]# rpm -qa | grep vsftpd
如果没有任何显示,说明没有把vsFTPd安装上,如果出现的是下面的这样的提示,就证明已经安装上了。
[root@linuxsir001 ro ......
刚下了雨林木风(ylmf)的iso盘,在自己的ubuntu9.10的系统上用virtualbox安装,现在安装过程如下。
1、启动光盘,看下启动画面:
2、选择第2选项,就进入一个ylmf的Logo:
3、安装还是ubuntu的画面,现在分区:
4、划分第一分区,可以看到界面稍有不同:
5、划分完分区:
6、进入安装画面:
安装还是挺快的,没有了 ......
经过一段时间的学习之后,也开发了一些小型的驱动,正如我之前一篇中写到得,现在我就来写一下在ARM嵌入式LINUX下如何设计驱动的框架。
在这里我用的板子是micro2440板子,板子上的linux版本是2.6.13。因为我在前一篇介绍了驱动编程的两种框架设计,所以现在我就来分别 ......