分类: Android平台
2013-02-02 17:48:04
里程碑4键盘很爽比2爽,但是用connectbot的时候有大问题
shift+123456被映射成f1f2f3....了,之前我一直还以为connectbot加载键盘出了问题导致shift+1234打印不出字符,用vim的时候才发现被映射成功能键了
后来翻google和help的物理键盘文档里才发现
Function keys (F1 through F10)
Hold down the shift key and press numbers 1
through 10 to send F1 through F10 respectively
坑爹!!!!
查了下源代码
if ((hardKeyboard && !hardKeyboardHidden) && (curMetaState & KeyEvent.META_SHIFT_ON) != 0 && sendFunctionKey(keyCode)) return true;
就是这里映射了!ok,反编译connectbot修改smali文件这里对应的内容——当然水平烂改了以后编译不回去了
没办法只能自己搭个安卓环境把源代码重新编译一边了0 0
http://blog.chinaunix.net/uid-23504396-id-3485978.html
按照上面搭建个安卓环境(虽然我讨厌java及其编辑器!!但是myeclipse 有时候还是挺好用的...!!再说一次学java打断腿!!)
用代理去
点zip那下载connectbot源代码
在myeclipse新建android project(其实建什么都可以)
然后关掉myeclipse,进入到你新建的project目录,删除掉里面所有内容,把connectbot解压进去重新打开myeclipse,然后刷新下,再用android tools ——clean lint markers。(有小报错自己google解决下)
编辑org.connectbot.service.TerminalKeyListener
注释掉我之前说的那部分代码,这样里4键盘上的!@#$就能回来了!
改完了就想用类似方法解决另外一个里4键盘的大问题——没有alt键!
因为sym键在终端里呼不出符号界面而是直接打印一个框,加上没有alt....这样导致~|{}[]\打不出来!这个就是大问题了
最开始我是想改Generic.kl文件来改变物理键盘映射——把sym识别成alt,但是找半天没搞清楚sym的key值....
kl文件搞不定,我就想绕个路让connectbot认为按下的sym键是alt键,后来发现这条路对我来说也很难走...
回看了那个映射Function键盘的代码,最后想到的解决方法是把sym+1234567映射成~|{}[]\就可以了
不过可以这样改的关键在于sym键也是一种META键,可以通过event.getMetaState()获取到状态。
增加如下代码
#让按住sym键的时候不输出字符
if (keyCode == KeyEvent.KEYCODE_SYM){ uchar = 0x00; return false; }
在输出字符的判断中增加
点击(此处)折叠或打开
这样重新编译以后就ok啦!
导出的apk文件必须签名否则不能在手机上安装
导出直接用android tools——export singed那个就ok啦