<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1946591117419939220</id><updated>2024-09-14T11:24:03.143-07:00</updated><category term="linux"/><category term="C programming"/><category term="android"/><category term="程式設計"/><category term="DIY"/><category term="linux kernel"/><category term="shell script"/><category term="android app"/><category term="windows"/><category term="FLASH"/><category term="RC"/><category term="BT"/><category term="TOOLS"/><category term="USB開機"/><category term="git"/><category term="windows7"/><category term="專有名詞"/><category term="腳踏車"/><title type='text'>CYL&#39;s BLOG</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://cyl-blog.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://cyl-blog.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>CYL</name><uri>http://www.blogger.com/profile/00715473123095660350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0R4PYFOo2XSKzQ2pCzsb33gG9nI8-JS-cURk98eWqM6iWxlBUuTMxAYhovvZFZmCkjhUbtIBTBGov1feeTOSedZNwXSQjQcN_YjW0nEYz7FOfBbqc0Gv22gHaOswDizg/s220/CIMG2441-1.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>78</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1946591117419939220.post-7135309470699860787</id><published>2014-12-14T21:18:00.002-08:00</published><updated>2014-12-14T21:39:05.080-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="USB開機"/><category scheme="http://www.blogger.com/atom/ns#" term="windows7"/><title type='text'>製作windows7 安裝隨身碟</title><content type='html'>&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;取得win7 ISO(win7 image 皆包含所有版本)&lt;/li&gt;
&lt;li&gt;下載&lt;span style=&quot;color: red;&quot;&gt;refus&lt;/span&gt;, 使用他將ISO檔製作開機USB 碟&lt;/li&gt;
&lt;li&gt;雖然win7 image 皆包含所有版本，但有的ISO 無法選擇版本&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;原因是版本已經寫死在source/ei.cfg，由於已經做成隨身碟，將這個檔案拿掉即可選擇&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://cyl-blog.blogspot.com/feeds/7135309470699860787/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1946591117419939220/7135309470699860787' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/7135309470699860787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/7135309470699860787'/><link rel='alternate' type='text/html' href='http://cyl-blog.blogspot.com/2014/12/windows7.html' title='製作windows7 安裝隨身碟'/><author><name>CYL</name><uri>http://www.blogger.com/profile/00715473123095660350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0R4PYFOo2XSKzQ2pCzsb33gG9nI8-JS-cURk98eWqM6iWxlBUuTMxAYhovvZFZmCkjhUbtIBTBGov1feeTOSedZNwXSQjQcN_YjW0nEYz7FOfBbqc0Gv22gHaOswDizg/s220/CIMG2441-1.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1946591117419939220.post-7016715773829621594</id><published>2011-06-16T01:27:00.000-07:00</published><updated>2011-06-16T01:27:05.621-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><title type='text'>android honeycomb SPP 連線第二次無法順利連上</title><content type='html'>遇到SPP連線disconnect之後第二次連接時會丟出exception:&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Calibri, sans-serif; font-size: 16px;&quot;&gt;Service discovery failed 的問題，&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Calibri, sans-serif;&quot;&gt;這是因為在BluetoothSocket中做connect時，rfcomm值小於1。&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Calibri, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Calibri, sans-serif;&quot;&gt;應該是framework內某些邏輯出了問題所導致，&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Calibri, sans-serif;&quot;&gt;在BluetoothService.java中&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Calibri, sans-serif; font-size: 16px;&quot;&gt;fetchRemoteUuids()內最後加上&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Calibri, sans-serif; font-size: 16px;&quot;&gt;updateDeviceServiceChannelCache()可以解決此問題。&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://cyl-blog.blogspot.com/feeds/7016715773829621594/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1946591117419939220/7016715773829621594' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/7016715773829621594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/7016715773829621594'/><link rel='alternate' type='text/html' href='http://cyl-blog.blogspot.com/2011/06/android-honeycomb-spp.html' title='android honeycomb SPP 連線第二次無法順利連上'/><author><name>CYL</name><uri>http://www.blogger.com/profile/00715473123095660350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0R4PYFOo2XSKzQ2pCzsb33gG9nI8-JS-cURk98eWqM6iWxlBUuTMxAYhovvZFZmCkjhUbtIBTBGov1feeTOSedZNwXSQjQcN_YjW0nEYz7FOfBbqc0Gv22gHaOswDizg/s220/CIMG2441-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1946591117419939220.post-5456519366481757132</id><published>2011-05-16T01:29:00.000-07:00</published><updated>2011-05-16T01:30:00.632-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><title type='text'>android repo 開發流程</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFgsswEWcLwA7P5H8Tz7T-CKJ2PiLF6Hv-_MgDXw-2gT_LvtKDOE7UhThmp0bOtds3IutaNU6oPYjhFw-byHJwGf3BPr_0ED7D79MHctw7K2UDS_tELGtcCzKArP-GoCX6SaGi8FTQYvE/s1600/2011-05-13_161112.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;504&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFgsswEWcLwA7P5H8Tz7T-CKJ2PiLF6Hv-_MgDXw-2gT_LvtKDOE7UhThmp0bOtds3IutaNU6oPYjhFw-byHJwGf3BPr_0ED7D79MHctw7K2UDS_tELGtcCzKArP-GoCX6SaGi8FTQYvE/s640/2011-05-13_161112.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cyl-blog.blogspot.com/feeds/5456519366481757132/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1946591117419939220/5456519366481757132' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/5456519366481757132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/5456519366481757132'/><link rel='alternate' type='text/html' href='http://cyl-blog.blogspot.com/2011/05/android-repo.html' title='android repo 開發流程'/><author><name>CYL</name><uri>http://www.blogger.com/profile/00715473123095660350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0R4PYFOo2XSKzQ2pCzsb33gG9nI8-JS-cURk98eWqM6iWxlBUuTMxAYhovvZFZmCkjhUbtIBTBGov1feeTOSedZNwXSQjQcN_YjW0nEYz7FOfBbqc0Gv22gHaOswDizg/s220/CIMG2441-1.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFgsswEWcLwA7P5H8Tz7T-CKJ2PiLF6Hv-_MgDXw-2gT_LvtKDOE7UhThmp0bOtds3IutaNU6oPYjhFw-byHJwGf3BPr_0ED7D79MHctw7K2UDS_tELGtcCzKArP-GoCX6SaGi8FTQYvE/s72-c/2011-05-13_161112.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1946591117419939220.post-7726671639130519201</id><published>2011-05-14T03:11:00.000-07:00</published><updated>2011-05-14T03:11:14.285-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="windows"/><title type='text'>分析window電源管理的狀況</title><content type='html'>使用系統管理員權限開啟 cmd.exe,&lt;br /&gt;
&lt;br /&gt;
執行powercfg /energy&lt;br /&gt;
&lt;br /&gt;
會產生一個report的網頁:&lt;br /&gt;
C:\Windows\system32\energy-report.html</content><link rel='replies' type='application/atom+xml' href='http://cyl-blog.blogspot.com/feeds/7726671639130519201/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1946591117419939220/7726671639130519201' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/7726671639130519201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/7726671639130519201'/><link rel='alternate' type='text/html' href='http://cyl-blog.blogspot.com/2011/05/window.html' title='分析window電源管理的狀況'/><author><name>CYL</name><uri>http://www.blogger.com/profile/00715473123095660350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0R4PYFOo2XSKzQ2pCzsb33gG9nI8-JS-cURk98eWqM6iWxlBUuTMxAYhovvZFZmCkjhUbtIBTBGov1feeTOSedZNwXSQjQcN_YjW0nEYz7FOfBbqc0Gv22gHaOswDizg/s220/CIMG2441-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1946591117419939220.post-2534779824409918461</id><published>2011-05-11T20:08:00.000-07:00</published><updated>2011-05-13T13:24:52.834-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="BT"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><title type='text'>bluetooth debug</title><content type='html'>可以使用hcidump擷取所有hci層的資料&lt;br /&gt;
&lt;br /&gt;
直接觀看:&lt;br /&gt;
hcidump -XVt&lt;br /&gt;
&lt;br /&gt;
存成binary，使用FTS4BT觀看&lt;br /&gt;
hcidump -B -w /tmp/XXX.cfa</content><link rel='replies' type='application/atom+xml' href='http://cyl-blog.blogspot.com/feeds/2534779824409918461/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1946591117419939220/2534779824409918461' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/2534779824409918461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/2534779824409918461'/><link rel='alternate' type='text/html' href='http://cyl-blog.blogspot.com/2011/05/bluetooth-debug.html' title='bluetooth debug'/><author><name>CYL</name><uri>http://www.blogger.com/profile/00715473123095660350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0R4PYFOo2XSKzQ2pCzsb33gG9nI8-JS-cURk98eWqM6iWxlBUuTMxAYhovvZFZmCkjhUbtIBTBGov1feeTOSedZNwXSQjQcN_YjW0nEYz7FOfBbqc0Gv22gHaOswDizg/s220/CIMG2441-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1946591117419939220.post-5166585073130310925</id><published>2011-04-20T18:30:00.000-07:00</published><updated>2011-04-20T18:30:24.516-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="android app"/><category scheme="http://www.blogger.com/atom/ns#" term="程式設計"/><title type='text'>android 使用標示為hide的API</title><content type='html'>framework中，有許多function上面使用@hide標示為隱藏，&lt;br /&gt;
&lt;br /&gt;
在eclipse上面使用也無法編譯&lt;br /&gt;
&lt;br /&gt;
不過可以使用下列方法解決:&lt;br /&gt;
&lt;a href=&quot;http://eeepage.info/java-hide-class/&quot;&gt;http://eeepage.info/java-hide-class/&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://java.sun.com/developer/technicalArticles/ALT/Reflection/&quot;&gt;http://java.sun.com/developer/technicalArticles/ALT/Reflection/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
舉例來說，開關softap使用wifiManager.setWifiApEnabled()，&lt;br /&gt;
但setWifiApEnabled()標示hide&lt;br /&gt;
&lt;br /&gt;
可以用下列方法直接呼叫:&lt;br /&gt;
Method mMethod = mWifiManager.getClass().getMethod(&quot;setWifiApEnabled&quot;, WifiConfiguration.class, boolean.class);&lt;br /&gt;
mMethod.invoke(mWifiManager, new Object[] { null, true });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class.getMethod()的第一個參數為method名稱(字串)，後面為這個method自己所需的參數(args)&lt;br /&gt;
method.invoke的第一個參數為執行這個method的class, 第二個參數為物件陣列，內容是要傳進此method的參數</content><link rel='replies' type='application/atom+xml' href='http://cyl-blog.blogspot.com/feeds/5166585073130310925/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1946591117419939220/5166585073130310925' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/5166585073130310925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/5166585073130310925'/><link rel='alternate' type='text/html' href='http://cyl-blog.blogspot.com/2011/04/android-hideapi.html' title='android 使用標示為hide的API'/><author><name>CYL</name><uri>http://www.blogger.com/profile/00715473123095660350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0R4PYFOo2XSKzQ2pCzsb33gG9nI8-JS-cURk98eWqM6iWxlBUuTMxAYhovvZFZmCkjhUbtIBTBGov1feeTOSedZNwXSQjQcN_YjW0nEYz7FOfBbqc0Gv22gHaOswDizg/s220/CIMG2441-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1946591117419939220.post-9013489858023781516</id><published>2011-04-19T01:11:00.000-07:00</published><updated>2011-04-19T01:11:42.118-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="android app"/><category scheme="http://www.blogger.com/atom/ns#" term="程式設計"/><title type='text'>android 將檔案放入程式在/data下的目錄中</title><content type='html'>在專案的res下面增加raw資料夾&lt;br /&gt;
將需要的檔案放進去(不要包含&quot;.&quot;)&lt;br /&gt;
&lt;br /&gt;
使用 &amp;nbsp;copyFile(&quot;XXX.sh&quot;, R.raw.XXX);&lt;br /&gt;
&lt;br /&gt;
存放進去的路徑可使用this.getFilesDir()取得&lt;br /&gt;
&lt;br /&gt;
目錄應該是/data/data/com.YYY.ZZZ/files&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private boolean copyFile(String fName, int rawId){&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;InputStream inS = null;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;OutputStream outS = null;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;byte [] buf = new byte[1024];&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;int readByte = 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;try {&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;inS = getApplicationContext().getResources().openRawResource(rawId);&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;outS = openFileOutput(fName,MODE_PRIVATE);&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;      &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;while((readByte = inS.read(buf, 0, 1024)) != -1){&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;outS.write(buf, 0, readByte);&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;}&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;inS.close();&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;outS.close();&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;} catch (Exception e) {&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;// TODO Auto-generated catch block&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;e.printStackTrace();&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;return true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://cyl-blog.blogspot.com/feeds/9013489858023781516/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1946591117419939220/9013489858023781516' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/9013489858023781516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/9013489858023781516'/><link rel='alternate' type='text/html' href='http://cyl-blog.blogspot.com/2011/04/android-data.html' title='android 將檔案放入程式在/data下的目錄中'/><author><name>CYL</name><uri>http://www.blogger.com/profile/00715473123095660350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0R4PYFOo2XSKzQ2pCzsb33gG9nI8-JS-cURk98eWqM6iWxlBUuTMxAYhovvZFZmCkjhUbtIBTBGov1feeTOSedZNwXSQjQcN_YjW0nEYz7FOfBbqc0Gv22gHaOswDizg/s220/CIMG2441-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1946591117419939220.post-1364923529906852923</id><published>2011-04-02T19:50:00.000-07:00</published><updated>2011-04-03T01:17:05.760-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="android app"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="shell script"/><title type='text'>android 使用proxy連接至網路</title><content type='html'>&lt;a href=&quot;http://forum.xda-developers.com/showthread.php?t=766569&quot;&gt;http://forum.xda-developers.com/showthread.php?t=766569&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://darkk.net.ru/redsocks/&quot;&gt;http://darkk.net.ru/redsocks/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
in nexus one(cyanogenmod 7):&lt;br /&gt;
&amp;nbsp;&amp;nbsp;eth0/wl0.1&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;wifi/softap(BCM4329)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;lo&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;loopback&lt;br /&gt;
&amp;nbsp;&amp;nbsp;rmnet0&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;3G&lt;br /&gt;
&lt;br /&gt;
in rooted and installed superuser phone, if run &quot;su root&quot;, the superuser program will ask user to confirm root access via UI.&lt;br /&gt;
&lt;br /&gt;
transproxy.apk&lt;br /&gt;
&amp;nbsp;&amp;nbsp;This program use redsock&amp;nbsp;internal&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; This tool allows you to redirect any TCP connection to SOCKS or HTTPS proxy using your firewall, so redirection is system-wide.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;after install this program, some file will be placed in data/data/com.hasbox.tproxy/, I found there are some scripts in &quot;files&quot;&amp;nbsp;directory&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;enable transproxy&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;sh&amp;nbsp;data/data/com.hasbox.tproxy/files/proxy.sh start /data/data/com.hasbox.tproxy/files type=http host= port= auth=false user= pass=&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;sh&amp;nbsp;data/data/com.hasbox.tproxy/files/redirect.sh start http&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;disable transproxy&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;sh&amp;nbsp;data/data/com.hasbox.tproxy/files/proxy.sh stop /data/data/com.hasbox.tproxy/files&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;sh&amp;nbsp;data/data/com.hasbox.tproxy/files/redirect.sh stop&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;when execution /data/data/com.hasbox.tproxy/files/redirect.sh，because android bionic libc not implement getprotobyname(), so there some warning messabe&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;in my environment, 3G need use proxy but wifi can direct access , so modify&amp;nbsp;redirect.sh, add &quot; -o rmnet0&quot; in each rule, only 3G access use proxy&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;bugs&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;android&#39;s netd will reset ipatbles when disable tethering(ether wifi or usb), so the setting by transproxy will gone.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;must set&amp;nbsp;transproxy.apk after disable tethering&lt;br /&gt;
&amp;nbsp;</content><link rel='replies' type='application/atom+xml' href='http://cyl-blog.blogspot.com/feeds/1364923529906852923/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1946591117419939220/1364923529906852923' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/1364923529906852923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/1364923529906852923'/><link rel='alternate' type='text/html' href='http://cyl-blog.blogspot.com/2011/04/android-proxy.html' title='android 使用proxy連接至網路'/><author><name>CYL</name><uri>http://www.blogger.com/profile/00715473123095660350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0R4PYFOo2XSKzQ2pCzsb33gG9nI8-JS-cURk98eWqM6iWxlBUuTMxAYhovvZFZmCkjhUbtIBTBGov1feeTOSedZNwXSQjQcN_YjW0nEYz7FOfBbqc0Gv22gHaOswDizg/s220/CIMG2441-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1946591117419939220.post-2833572852535722899</id><published>2011-03-29T06:44:00.000-07:00</published><updated>2011-03-30T23:34:14.463-07:00</updated><title type='text'>使用批次檔修改proxy與ip</title><content type='html'>&lt;a href=&quot;http://www.robvanderwoude.com/regedit.php&quot;&gt;http://www.robvanderwoude.com/regedit.php&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
登錄編輯程式:&amp;nbsp;regedit&lt;br /&gt;
&lt;br /&gt;
想要做一個修改某機碼的.reg檔案&lt;br /&gt;
可以先開啟登錄編輯程式找到要改的資料夾，匯出後再修改匯出的內容會比較快&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
============================&lt;br /&gt;
判斷目前proxy是否有開啟並反向設定&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@ECHO OFF&lt;br /&gt;
&lt;br /&gt;
FOR /F %%A IN (&#39;REG QUERY &quot;HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings&quot; /v ProxyEnable ^| grep ProxyEnable ^| awk &quot;{print $3}&quot;&#39; ) DO IF &quot;%%A&quot;==&quot;0x1&quot; (call:on) ELSE (call:off)&lt;br /&gt;
GOTO:EOF&lt;br /&gt;
&lt;br /&gt;
:on&lt;br /&gt;
ECHO =================&lt;br /&gt;
ECHO proxy狀態: 開啟&lt;br /&gt;
ECHO 關閉proxy中...&lt;br /&gt;
regedit /s proxy_off.reg&lt;br /&gt;
ECHO 完成&lt;br /&gt;
ECHO =================&lt;br /&gt;
pause&lt;br /&gt;
GOTO:EOF&lt;br /&gt;
&lt;br /&gt;
:off&lt;br /&gt;
ECHO =================&lt;br /&gt;
ECHO proxy狀態: 關閉&lt;br /&gt;
ECHO 開啟proxy中...&lt;br /&gt;
regedit /s proxy_on.reg&lt;br /&gt;
ECHO 完成&lt;br /&gt;
ECHO =================&lt;br /&gt;
pause&lt;br /&gt;
GOTO:EOF</content><link rel='replies' type='application/atom+xml' href='http://cyl-blog.blogspot.com/feeds/2833572852535722899/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1946591117419939220/2833572852535722899' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/2833572852535722899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/2833572852535722899'/><link rel='alternate' type='text/html' href='http://cyl-blog.blogspot.com/2011/03/proxyip.html' title='使用批次檔修改proxy與ip'/><author><name>CYL</name><uri>http://www.blogger.com/profile/00715473123095660350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0R4PYFOo2XSKzQ2pCzsb33gG9nI8-JS-cURk98eWqM6iWxlBUuTMxAYhovvZFZmCkjhUbtIBTBGov1feeTOSedZNwXSQjQcN_YjW0nEYz7FOfBbqc0Gv22gHaOswDizg/s220/CIMG2441-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1946591117419939220.post-3743183232677862956</id><published>2011-03-02T00:54:00.000-08:00</published><updated>2011-03-02T04:15:58.674-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C programming"/><title type='text'>避免編譯時產生錯誤 - error: void value not ignored as it ought to be</title><content type='html'>假設...&lt;br /&gt;
int aaa(){&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void bbb(){&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
若遇到下面這種寫法&lt;br /&gt;
ret=flag? aaa(): bbb();&lt;br /&gt;
編譯時會發生錯誤:&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Calibri;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;error: void value not ignored as it ought to be&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
因為此時若flag為0，則ret=bbb();&lt;br /&gt;
但是bbb()沒有回傳東西(void),&lt;br /&gt;
此時可以使用下面這種寫法:&lt;br /&gt;
ret=flag? aaa(): &lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;(bbb(),NULL)&lt;/span&gt;;&lt;br /&gt;
&lt;br /&gt;
其中&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;(bbb(),NULL)&lt;/span&gt;永遠回傳0(NULL)&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://en.wikipedia.org/wiki/Comma_operator&quot;&gt;http://en.wikipedia.org/wiki/Comma_operator&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://cyl-blog.blogspot.com/feeds/3743183232677862956/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1946591117419939220/3743183232677862956' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/3743183232677862956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/3743183232677862956'/><link rel='alternate' type='text/html' href='http://cyl-blog.blogspot.com/2011/03/c.html' title='避免編譯時產生錯誤 - error: void value not ignored as it ought to be'/><author><name>CYL</name><uri>http://www.blogger.com/profile/00715473123095660350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0R4PYFOo2XSKzQ2pCzsb33gG9nI8-JS-cURk98eWqM6iWxlBUuTMxAYhovvZFZmCkjhUbtIBTBGov1feeTOSedZNwXSQjQcN_YjW0nEYz7FOfBbqc0Gv22gHaOswDizg/s220/CIMG2441-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1946591117419939220.post-575719771431143669</id><published>2011-02-25T00:17:00.000-08:00</published><updated>2011-02-25T00:17:04.642-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="shell script"/><title type='text'>script內判斷cpu數量</title><content type='html'>CPUs=$(echo `cat /proc/cpuinfo | grep processor | tail -1 | awk&#39;{print $3}&#39;` +1 | bc)</content><link rel='replies' type='application/atom+xml' href='http://cyl-blog.blogspot.com/feeds/575719771431143669/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1946591117419939220/575719771431143669' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/575719771431143669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/575719771431143669'/><link rel='alternate' type='text/html' href='http://cyl-blog.blogspot.com/2011/02/scriptcpu.html' title='script內判斷cpu數量'/><author><name>CYL</name><uri>http://www.blogger.com/profile/00715473123095660350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0R4PYFOo2XSKzQ2pCzsb33gG9nI8-JS-cURk98eWqM6iWxlBUuTMxAYhovvZFZmCkjhUbtIBTBGov1feeTOSedZNwXSQjQcN_YjW0nEYz7FOfBbqc0Gv22gHaOswDizg/s220/CIMG2441-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1946591117419939220.post-3379382780689337741</id><published>2011-02-23T22:36:00.000-08:00</published><updated>2011-02-23T22:39:48.445-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="專有名詞"/><title type='text'>TCXO</title><content type='html'>TCXO (&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: arial, 宋体, sans-serif; font-size: 14px; line-height: 25px;&quot;&gt;Temperature Compensate X&#39;tal (crystal) Oscillator)&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: arial, 宋体, sans-serif; font-size: 14px; line-height: 25px;&quot;&gt;具有溫度補償的石英震盪器, 提供高精準度的頻率輸出(因為通常震盪頻率會因為溫度而改變)&lt;/span&gt;&lt;br /&gt;
&lt;a href=&quot;http://baike.baidu.com/view/1010371.htm&quot;&gt;http://baike.baidu.com/view/1010371.htm&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://cyl-blog.blogspot.com/feeds/3379382780689337741/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1946591117419939220/3379382780689337741' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/3379382780689337741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/3379382780689337741'/><link rel='alternate' type='text/html' href='http://cyl-blog.blogspot.com/2011/02/tcxo.html' title='TCXO'/><author><name>CYL</name><uri>http://www.blogger.com/profile/00715473123095660350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0R4PYFOo2XSKzQ2pCzsb33gG9nI8-JS-cURk98eWqM6iWxlBUuTMxAYhovvZFZmCkjhUbtIBTBGov1feeTOSedZNwXSQjQcN_YjW0nEYz7FOfBbqc0Gv22gHaOswDizg/s220/CIMG2441-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1946591117419939220.post-1135155524760083031</id><published>2011-02-15T20:14:00.000-08:00</published><updated>2011-02-15T20:14:42.339-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="windows"/><title type='text'>windows: 不允許使用多於一個使用者名稱的相同使用者有多個連線到一個伺服器或共用資源</title><content type='html'>架了一台samba server&lt;br /&gt;
不過在windows上面要登入時卻出現這個訊息&lt;br /&gt;
&quot;不允許使用多於一個使用者名稱的相同使用者有多個連線到一個伺服器或共用資源&quot;&lt;br /&gt;
&lt;br /&gt;
可以使用net use指令看是否有連線存在&lt;br /&gt;
再使用net use \\XXX.XXX.XXX.XXX\YYY /del 刪除此連線 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
參考&lt;br /&gt;
http://freetoad.pixnet.net/blog/post/23509679</content><link rel='replies' type='application/atom+xml' href='http://cyl-blog.blogspot.com/feeds/1135155524760083031/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1946591117419939220/1135155524760083031' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/1135155524760083031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/1135155524760083031'/><link rel='alternate' type='text/html' href='http://cyl-blog.blogspot.com/2011/02/windows.html' title='windows: 不允許使用多於一個使用者名稱的相同使用者有多個連線到一個伺服器或共用資源'/><author><name>CYL</name><uri>http://www.blogger.com/profile/00715473123095660350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0R4PYFOo2XSKzQ2pCzsb33gG9nI8-JS-cURk98eWqM6iWxlBUuTMxAYhovvZFZmCkjhUbtIBTBGov1feeTOSedZNwXSQjQcN_YjW0nEYz7FOfBbqc0Gv22gHaOswDizg/s220/CIMG2441-1.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1946591117419939220.post-2770403868125464817</id><published>2011-02-14T21:08:00.000-08:00</published><updated>2011-02-14T21:08:03.603-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="windows"/><title type='text'>製作win7 usb 安裝隨身碟</title><content type='html'>在eeepc 901上面,&lt;br /&gt;
使用微軟的工具製作的隨身碟無法開機（http://store.microsoft.com/help/iso-tool）&lt;br /&gt;
&lt;br /&gt;
後來發現使用HPUSBFW就可以使用&lt;br /&gt;
&lt;br /&gt;
參考&lt;br /&gt;
http://www.umpcfever.com/viewthread.php?tid=4409&lt;br /&gt;
&lt;br /&gt;
1.使用HPUSBFW格式化隨身碟, 並建立開機磁區&lt;br /&gt;
2.掛載win7 iso&lt;br /&gt;
3.複製cdrom內容至隨身碟&lt;br /&gt;
4.把Windows 7 開機檔灌入USB當中（ex:H:\boot\bootsect /nt60 F: ）</content><link rel='replies' type='application/atom+xml' href='http://cyl-blog.blogspot.com/feeds/2770403868125464817/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1946591117419939220/2770403868125464817' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/2770403868125464817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/2770403868125464817'/><link rel='alternate' type='text/html' href='http://cyl-blog.blogspot.com/2011/02/win7-usb.html' title='製作win7 usb 安裝隨身碟'/><author><name>CYL</name><uri>http://www.blogger.com/profile/00715473123095660350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0R4PYFOo2XSKzQ2pCzsb33gG9nI8-JS-cURk98eWqM6iWxlBUuTMxAYhovvZFZmCkjhUbtIBTBGov1feeTOSedZNwXSQjQcN_YjW0nEYz7FOfBbqc0Gv22gHaOswDizg/s220/CIMG2441-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1946591117419939220.post-1095961587920709724</id><published>2011-02-09T23:17:00.000-08:00</published><updated>2011-02-13T18:56:10.500-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><title type='text'>ubuntu 連接wep加密AP密碼編碼的問題</title><content type='html'>AP使用wep 64(40)bit 加密, 密碼設定為1234567890, 為hex格式&lt;br /&gt;不過ubuntu連線時卻無法成功&lt;br /&gt;&lt;br /&gt;原因可能是因為把1234567890轉成ascii時，第一個ascii &quot;12&quot;(18)為不可顯示字元，&lt;br /&gt;所以就直接把1234567890當成ascii所導致</content><link rel='replies' type='application/atom+xml' href='http://cyl-blog.blogspot.com/feeds/1095961587920709724/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1946591117419939220/1095961587920709724' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/1095961587920709724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/1095961587920709724'/><link rel='alternate' type='text/html' href='http://cyl-blog.blogspot.com/2011/02/ubuntu-wepap.html' title='ubuntu 連接wep加密AP密碼編碼的問題'/><author><name>CYL</name><uri>http://www.blogger.com/profile/00715473123095660350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0R4PYFOo2XSKzQ2pCzsb33gG9nI8-JS-cURk98eWqM6iWxlBUuTMxAYhovvZFZmCkjhUbtIBTBGov1feeTOSedZNwXSQjQcN_YjW0nEYz7FOfBbqc0Gv22gHaOswDizg/s220/CIMG2441-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1946591117419939220.post-7405025903151074035</id><published>2011-02-08T01:19:00.001-08:00</published><updated>2011-02-08T01:20:57.318-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="linux kernel"/><title type='text'>android kernel menuconfig</title><content type='html'>in BSP directory:&lt;br /&gt;&lt;br /&gt;source build/envsetup.sh&lt;br /&gt;make ONE_SHOT_MAKEFILE=`pwd`/kernel/AndroidKernel.mk kernelconfig</content><link rel='replies' type='application/atom+xml' href='http://cyl-blog.blogspot.com/feeds/7405025903151074035/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1946591117419939220/7405025903151074035' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/7405025903151074035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/7405025903151074035'/><link rel='alternate' type='text/html' href='http://cyl-blog.blogspot.com/2011/02/android-kernel-menuconfig.html' title='android kernel menuconfig'/><author><name>CYL</name><uri>http://www.blogger.com/profile/00715473123095660350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0R4PYFOo2XSKzQ2pCzsb33gG9nI8-JS-cURk98eWqM6iWxlBUuTMxAYhovvZFZmCkjhUbtIBTBGov1feeTOSedZNwXSQjQcN_YjW0nEYz7FOfBbqc0Gv22gHaOswDizg/s220/CIMG2441-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1946591117419939220.post-8745677381335342000</id><published>2011-01-19T02:36:00.000-08:00</published><updated>2011-01-19T02:41:58.892-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><title type='text'>修改android裝置的boot image</title><content type='html'>參考此網頁&lt;br /&gt;http://android-dls.com/wiki/index.php?title=HOWTO:_Unpack,_Edit,_and_Re-Pack_Boot_Images&lt;br /&gt;&lt;br /&gt;一開始要先有手機的root的權限,&lt;br /&gt;&lt;br /&gt;取得分割表名稱&lt;br /&gt;    cat /proc/mtd &lt;br /&gt;抓出boot.img&lt;br /&gt;    cat /device/mtdXX &gt; /data/boot.img&lt;br /&gt;&lt;br /&gt;使用上面網址提供的unpack-bootimg.pl來解開boot.img&lt;br /&gt;&lt;br /&gt;修改完root file system 需要重包成myboot.img&lt;br /&gt;    mkbootfs ./boot.img-ramdisk | minigzip  &gt; my-ramdisk.cpio.gz&lt;br /&gt;    mkbootimg  --kernel ./boot.img-kernel.gz --ramdisk my-ramdisk.cpio.gz --pagesize 2048 --cmdline &#39;mem=203M console=ttyMSM2 androidboot.hardware=qctmsm7x27surf&#39; --base 0x12c00000 --output myboot.img&lt;br /&gt;&lt;br /&gt;將device開到fastboot mode, 使用fastboot燒錄myboot.img&lt;br /&gt;    fastboot erase bot&lt;br /&gt;    fastboot flash boot myboot.img&lt;br /&gt;    fastboot reboot&lt;br /&gt;&lt;br /&gt;=================================================================&lt;br /&gt;若系統抓得到USB裝置,但fastboot無法抓到，可能是fastboot內沒有內建此裝置的vid, 隨便找一個android的source,到system/core/fastboot/fastboot.c加入自己的vid(可用lsusb查看vid/pid)再重編fastboot就可以了&lt;br /&gt;    source ../../../build/envsetup.sh; &lt;br /&gt;    mm;&lt;br /&gt;&lt;br /&gt;--base的參數可由原本取出的boot.img得知&lt;br /&gt;in bsp/system/core/mkbootimg/mkbootimg.c&lt;br /&gt;    kernel的offset為0x10008000&lt;br /&gt;    包成的myboot.img 最前面為一個struct boot_img_hdr&lt;br /&gt;in bsp/system/core/mkbootimg/bootimg.h&lt;br /&gt;    boot_img_hdr 的kernel_addr在12-16 byte&lt;br /&gt;    使用16進位編輯器去讀取boot.img的2-16 byte(little endian)減掉kernel的offset(0x10008000)即可算出--base所需的參數&lt;br /&gt;&lt;br /&gt;--cmdline內容也可經由16進位編輯器去讀取boot.img看到(boot_img_hdr.cmdline)&lt;br /&gt;&lt;br /&gt;要注意的是使用unpack-bootimg.pl切出來的kernel大小可能是錯的(後面有一些多餘資料?)&lt;br /&gt;實際大小須參考boot.img中的boot_img_hdr.kernel_size&lt;br /&gt;然後修改mkbootimg.c, 在讀取完kernel後將boot_img_hdr.kernel_size設成正確大小&lt;br /&gt;之後重編並使用此版本的mkbootimg才可正常開機</content><link rel='replies' type='application/atom+xml' href='http://cyl-blog.blogspot.com/feeds/8745677381335342000/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1946591117419939220/8745677381335342000' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/8745677381335342000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/8745677381335342000'/><link rel='alternate' type='text/html' href='http://cyl-blog.blogspot.com/2011/01/androidboot-imagetxt.html' title='修改android裝置的boot image'/><author><name>CYL</name><uri>http://www.blogger.com/profile/00715473123095660350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0R4PYFOo2XSKzQ2pCzsb33gG9nI8-JS-cURk98eWqM6iWxlBUuTMxAYhovvZFZmCkjhUbtIBTBGov1feeTOSedZNwXSQjQcN_YjW0nEYz7FOfBbqc0Gv22gHaOswDizg/s220/CIMG2441-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1946591117419939220.post-3201711333475924652</id><published>2011-01-14T03:26:00.000-08:00</published><updated>2011-01-14T03:31:06.564-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><title type='text'>android 模擬SD card裝上</title><content type='html'>mkdir /data/virtual_sdcard&lt;br /&gt;&lt;br /&gt;mount -o remount,rw /&lt;br /&gt;rm /sdcard&lt;br /&gt;ln -s /data/virtual_sdcard /sdcard&lt;br /&gt;setprop EXTERNAL_STORAGE_MOUNT /sdcard&lt;br /&gt;&lt;br /&gt;因為沒有sdcard&lt;br /&gt;這樣做homerun battle第一次啟動就可以下載資料檔了</content><link rel='replies' type='application/atom+xml' href='http://cyl-blog.blogspot.com/feeds/3201711333475924652/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1946591117419939220/3201711333475924652' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/3201711333475924652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/3201711333475924652'/><link rel='alternate' type='text/html' href='http://cyl-blog.blogspot.com/2011/01/android-sd-card.html' title='android 模擬SD card裝上'/><author><name>CYL</name><uri>http://www.blogger.com/profile/00715473123095660350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0R4PYFOo2XSKzQ2pCzsb33gG9nI8-JS-cURk98eWqM6iWxlBUuTMxAYhovvZFZmCkjhUbtIBTBGov1feeTOSedZNwXSQjQcN_YjW0nEYz7FOfBbqc0Gv22gHaOswDizg/s220/CIMG2441-1.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1946591117419939220.post-4386141205987141841</id><published>2011-01-14T03:09:00.000-08:00</published><updated>2011-01-14T03:12:07.515-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><title type='text'>android 定時執行script</title><content type='html'>可以使用phonePrioritizer:&lt;br /&gt;http://forum.xda-developers.com/showthread.php?t=558822&amp;highlight=phoneprioritizer&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;可以自己寫scritp放在/sdcard/phonePrioritizer/script.txt內&lt;br /&gt;然後使用UI設定執行時間間隔&lt;br /&gt;&lt;br /&gt;也可以設定定時關機與開機時要做什麼</content><link rel='replies' type='application/atom+xml' href='http://cyl-blog.blogspot.com/feeds/4386141205987141841/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1946591117419939220/4386141205987141841' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/4386141205987141841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/4386141205987141841'/><link rel='alternate' type='text/html' href='http://cyl-blog.blogspot.com/2011/01/android-script.html' title='android 定時執行script'/><author><name>CYL</name><uri>http://www.blogger.com/profile/00715473123095660350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0R4PYFOo2XSKzQ2pCzsb33gG9nI8-JS-cURk98eWqM6iWxlBUuTMxAYhovvZFZmCkjhUbtIBTBGov1feeTOSedZNwXSQjQcN_YjW0nEYz7FOfBbqc0Gv22gHaOswDizg/s220/CIMG2441-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1946591117419939220.post-9087628700082879700</id><published>2011-01-14T03:07:00.000-08:00</published><updated>2011-01-14T03:09:26.976-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><title type='text'>linux date指令顯示格式</title><content type='html'>使用date --help來查看用法&lt;br /&gt;&lt;br /&gt;command:&lt;br /&gt;date +&#39;%Y/%m/%d&#39;&lt;br /&gt;&lt;br /&gt;result:&lt;br /&gt;2011/01/14</content><link rel='replies' type='application/atom+xml' href='http://cyl-blog.blogspot.com/feeds/9087628700082879700/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1946591117419939220/9087628700082879700' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/9087628700082879700'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/9087628700082879700'/><link rel='alternate' type='text/html' href='http://cyl-blog.blogspot.com/2011/01/linux-date.html' title='linux date指令顯示格式'/><author><name>CYL</name><uri>http://www.blogger.com/profile/00715473123095660350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0R4PYFOo2XSKzQ2pCzsb33gG9nI8-JS-cURk98eWqM6iWxlBUuTMxAYhovvZFZmCkjhUbtIBTBGov1feeTOSedZNwXSQjQcN_YjW0nEYz7FOfBbqc0Gv22gHaOswDizg/s220/CIMG2441-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1946591117419939220.post-4329890065823080423</id><published>2011-01-13T21:27:00.001-08:00</published><updated>2011-01-13T21:27:41.901-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="linux kernel"/><title type='text'>linux dfs 參數</title><content type='html'>路徑為/sys/devices/system/cpu/cpu0/cpufreq/&lt;br /&gt;&lt;br /&gt;有下列檔案:&lt;br /&gt;./cpuinfo_min_freq(CPU最小頻率)&lt;br /&gt;./cpuinfo_max_freq(CPU最大頻率)&lt;br /&gt;./scaling_min_freq(DFS最小頻率)&lt;br /&gt;./scaling_max_freq(DFS最大頻率)&lt;br /&gt;./affected_cpus&lt;br /&gt;./related_cpus&lt;br /&gt;./scaling_governor(設定DFS方法)&lt;br /&gt;./scaling_driver&lt;br /&gt;./scaling_available_governors(顯示DFS方法)&lt;br /&gt;./scaling_setspeed(設定CPU頻率)&lt;br /&gt;./scaling_cur_freq(顯示目前CPU頻率)&lt;br /&gt;./stats&lt;br /&gt;./stats/total_trans&lt;br /&gt;./stats/time_in_state&lt;br /&gt;./stats/trans_table&lt;br /&gt;./ondemand(若scaling_governor設為ondemand則會用到此資料夾的參數)&lt;br /&gt;./ondemand/sampling_rate_max(最大取樣頻率)&lt;br /&gt;./ondemand/sampling_rate_min(最小取樣頻率)&lt;br /&gt;./ondemand/sampling_rate(設定取樣頻率)&lt;br /&gt;./ondemand/up_threshold(CPU使用率大於此值則升頻)&lt;br /&gt;./ondemand/down_differential(CPU使用率小於此值則降頻)&lt;br /&gt;./ondemand/ignore_nice_load&lt;br /&gt;./ondemand/powersave_bias(下面詳細解釋)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;==============================================================&lt;br /&gt;&lt;br /&gt;in /sys/devices/system/cpu/cpu0/cpufreq/ondemand/powersave_bias&lt;br /&gt;&lt;br /&gt;說明&lt;br /&gt;http://osdir.com/ml/kernel.cpufreq/2006-07/msg00137.html&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;這個值的範圍為0-1000，代表0.1%-100%&lt;br /&gt;&lt;br /&gt;假設現在系統要切到2GHz&lt;br /&gt;&lt;br /&gt;若powersave_bias設為100(10%)，&lt;br /&gt;則這次會先跳到1.8G(比預期目標少10%)</content><link rel='replies' type='application/atom+xml' href='http://cyl-blog.blogspot.com/feeds/4329890065823080423/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1946591117419939220/4329890065823080423' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/4329890065823080423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/4329890065823080423'/><link rel='alternate' type='text/html' href='http://cyl-blog.blogspot.com/2011/01/linux-dfs.html' title='linux dfs 參數'/><author><name>CYL</name><uri>http://www.blogger.com/profile/00715473123095660350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0R4PYFOo2XSKzQ2pCzsb33gG9nI8-JS-cURk98eWqM6iWxlBUuTMxAYhovvZFZmCkjhUbtIBTBGov1feeTOSedZNwXSQjQcN_YjW0nEYz7FOfBbqc0Gv22gHaOswDizg/s220/CIMG2441-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1946591117419939220.post-8453264120885462004</id><published>2011-01-06T23:50:00.000-08:00</published><updated>2011-01-06T23:52:35.351-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><title type='text'>解決adb連線問題</title><content type='html'>有時候明明device插上去，driver也有抓到，不過使用adb shell就是連不進去&lt;br /&gt;此時使用adb devices時發現到裝置名稱為???????????&lt;br /&gt;&lt;br /&gt;解決的方法為:&lt;br /&gt;sudo adb kill-server&lt;br /&gt;sudo adb devices&lt;br /&gt;&lt;br /&gt;如果device的名稱正確顯示就可以使用adb shell連進去</content><link rel='replies' type='application/atom+xml' href='http://cyl-blog.blogspot.com/feeds/8453264120885462004/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1946591117419939220/8453264120885462004' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/8453264120885462004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/8453264120885462004'/><link rel='alternate' type='text/html' href='http://cyl-blog.blogspot.com/2011/01/adb.html' title='解決adb連線問題'/><author><name>CYL</name><uri>http://www.blogger.com/profile/00715473123095660350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0R4PYFOo2XSKzQ2pCzsb33gG9nI8-JS-cURk98eWqM6iWxlBUuTMxAYhovvZFZmCkjhUbtIBTBGov1feeTOSedZNwXSQjQcN_YjW0nEYz7FOfBbqc0Gv22gHaOswDizg/s220/CIMG2441-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1946591117419939220.post-3227475175896370662</id><published>2011-01-04T22:47:00.000-08:00</published><updated>2011-01-05T18:21:22.227-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="C programming"/><title type='text'>使用adb對android device輸入鍵盤事件</title><content type='html'>&lt;div&gt;android 可以藉由adb shell input keyevent XXX來輸入鍵盤事件，&lt;/div&gt;&lt;div&gt;不過很多網路上查到的資料event只有到八十多號&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;可以從android developer取得最新的對應:&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://developer.android.com/reference/android/view/KeyEvent.html&quot;&gt;http://developer.android.com/reference/android/view/KeyEvent.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;也可以直接參考source code:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;檔案放在&lt;/div&gt;&lt;div&gt;&lt;div&gt;KeyEvent.java (\frameworks\base\core\java\android\view)&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Unknown key code. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_UNKNOWN         = 0;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Soft Left key.&lt;/blockquote&gt;&lt;blockquote&gt;     * Usually situated below the display on phones and used as a multi-function&lt;/blockquote&gt;&lt;blockquote&gt;     * feature key for selecting a software defined function shown on the bottom left&lt;/blockquote&gt;&lt;blockquote&gt;     * of the display. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_SOFT_LEFT       = 1;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Soft Right key.&lt;/blockquote&gt;&lt;blockquote&gt;     * Usually situated below the display on phones and used as a multi-function&lt;/blockquote&gt;&lt;blockquote&gt;     * feature key for selecting a software defined function shown on the bottom right&lt;/blockquote&gt;&lt;blockquote&gt;     * of the display. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_SOFT_RIGHT      = 2;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Home key.&lt;/blockquote&gt;&lt;blockquote&gt;     * This key is handled by the framework and is never delivered to applications. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_HOME            = 3;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Back key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_BACK            = 4;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Call key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_CALL            = 5;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: End Call key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_ENDCALL         = 6;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;0&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_0               = 7;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;1&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_1               = 8;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;2&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_2               = 9;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;3&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_3               = 10;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;4&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_4               = 11;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;5&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_5               = 12;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;6&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_6               = 13;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;7&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_7               = 14;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;8&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_8               = 15;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;9&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_9               = 16;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;*&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_STAR            = 17;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;#&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_POUND           = 18;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Directional Pad Up key.&lt;/blockquote&gt;&lt;blockquote&gt;     * May also be synthesized from trackball motions. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_DPAD_UP         = 19;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Directional Pad Down key.&lt;/blockquote&gt;&lt;blockquote&gt;     * May also be synthesized from trackball motions. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_DPAD_DOWN       = 20;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Directional Pad Left key.&lt;/blockquote&gt;&lt;blockquote&gt;     * May also be synthesized from trackball motions. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_DPAD_LEFT       = 21;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Directional Pad Right key.&lt;/blockquote&gt;&lt;blockquote&gt;     * May also be synthesized from trackball motions. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_DPAD_RIGHT      = 22;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Directional Pad Center key.&lt;/blockquote&gt;&lt;blockquote&gt;     * May also be synthesized from trackball motions. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_DPAD_CENTER     = 23;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Volume Up key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_VOLUME_UP       = 24;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Volume Down key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_VOLUME_DOWN     = 25;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Power key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_POWER           = 26;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Camera key.&lt;/blockquote&gt;&lt;blockquote&gt;     * Used to launch a camera application or take pictures. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_CAMERA          = 27;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Clear key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_CLEAR           = 28;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;A&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_A               = 29;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;B&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_B               = 30;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;C&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_C               = 31;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;D&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_D               = 32;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;E&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_E               = 33;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;F&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_F               = 34;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;G&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_G               = 35;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;H&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_H               = 36;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;I&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_I               = 37;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;J&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_J               = 38;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;K&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_K               = 39;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;L&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_L               = 40;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;M&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_M               = 41;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;N&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_N               = 42;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;O&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_O               = 43;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;P&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_P               = 44;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;Q&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_Q               = 45;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;R&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_R               = 46;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;S&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_S               = 47;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;T&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_T               = 48;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;U&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_U               = 49;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;V&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_V               = 50;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;W&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_W               = 51;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;X&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_X               = 52;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;Y&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_Y               = 53;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;Z&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_Z               = 54;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;,&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_COMMA           = 55;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;.&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_PERIOD          = 56;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Left Alt modifier key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_ALT_LEFT        = 57;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Right Alt modifier key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_ALT_RIGHT       = 58;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Left Shift modifier key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_SHIFT_LEFT      = 59;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Right Shift modifier key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_SHIFT_RIGHT     = 60;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Tab key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_TAB             = 61;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Space key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_SPACE           = 62;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Symbol modifier key.&lt;/blockquote&gt;&lt;blockquote&gt;     * Used to enter alternate symbols. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_SYM             = 63;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Explorer special function key.&lt;/blockquote&gt;&lt;blockquote&gt;     * Used to launch a browser application. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_EXPLORER        = 64;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Envelope special function key.&lt;/blockquote&gt;&lt;blockquote&gt;     * Used to launch a mail application. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_ENVELOPE        = 65;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Enter key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_ENTER           = 66;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Backspace key.&lt;/blockquote&gt;&lt;blockquote&gt;     * Deletes characters before the insertion point. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_DEL             = 67;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;`&#39; (backtick) key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_GRAVE           = 68;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;-&#39;. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_MINUS           = 69;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;=&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_EQUALS          = 70;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;[&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_LEFT_BRACKET    = 71;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;]&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_RIGHT_BRACKET   = 72;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;\&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_BACKSLASH       = 73;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;;&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_SEMICOLON       = 74;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;&#39;&#39; (apostrophe) key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_APOSTROPHE      = 75;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;/&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_SLASH           = 76;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;@&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_AT              = 77;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Number modifier key.&lt;/blockquote&gt;&lt;blockquote&gt;     * Used to enter numeric symbols.&lt;/blockquote&gt;&lt;blockquote&gt;     * This key is not Num Lock; it is more like {@link #KEYCODE_ALT_LEFT} and is&lt;/blockquote&gt;&lt;blockquote&gt;     * interpreted as an ALT key by {@link android.text.method.MetaKeyKeyListener}. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_NUM             = 78;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Headset Hook key.&lt;/blockquote&gt;&lt;blockquote&gt;     * Used to hang up calls and stop media. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_HEADSETHOOK     = 79;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Camera Focus key.&lt;/blockquote&gt;&lt;blockquote&gt;     * Used to focus the camera. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_FOCUS           = 80;   // *Camera* focus&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: &#39;+&#39; key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_PLUS            = 81;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Menu key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_MENU            = 82;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Notification key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_NOTIFICATION    = 83;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Search key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_SEARCH          = 84;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Play/Pause media key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_MEDIA_PLAY_PAUSE= 85;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Stop media key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_MEDIA_STOP      = 86;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Play Next media key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_MEDIA_NEXT      = 87;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Play Previous media key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_MEDIA_PREVIOUS  = 88;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Rewind media key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_MEDIA_REWIND    = 89;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Fast Forward media key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_MEDIA_FAST_FORWARD = 90;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Mute key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_MUTE            = 91;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Page Up key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_PAGE_UP         = 92;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Page Down key. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_PAGE_DOWN       = 93;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Picture Symbols modifier key.&lt;/blockquote&gt;&lt;blockquote&gt;     * Used to switch symbol sets (Emoji, Kao-moji). */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_PICTSYMBOLS     = 94;   // switch symbol-sets (Emoji,Kao-moji)&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Switch Charset modifier key.&lt;/blockquote&gt;&lt;blockquote&gt;     * Used to switch character sets (Kanji, Katakana). */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_SWITCH_CHARSET  = 95;   // switch char-sets (Kanji,Katakana)&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: A Button key.&lt;/blockquote&gt;&lt;blockquote&gt;     * On a game controller, the A button should be either the button labeled A&lt;/blockquote&gt;&lt;blockquote&gt;     * or the first button on the upper row of controller buttons. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_BUTTON_A        = 96;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: B Button key.&lt;/blockquote&gt;&lt;blockquote&gt;     * On a game controller, the B button should be either the button labeled B&lt;/blockquote&gt;&lt;blockquote&gt;     * or the second button on the upper row of controller buttons. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_BUTTON_B        = 97;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: C Button key.&lt;/blockquote&gt;&lt;blockquote&gt;     * On a game controller, the C button should be either the button labeled C&lt;/blockquote&gt;&lt;blockquote&gt;     * or the third button on the upper row of controller buttons. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_BUTTON_C        = 98;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: X Button key.&lt;/blockquote&gt;&lt;blockquote&gt;     * On a game controller, the X button should be either the button labeled X&lt;/blockquote&gt;&lt;blockquote&gt;     * or the first button on the lower row of controller buttons. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_BUTTON_X        = 99;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Y Button key.&lt;/blockquote&gt;&lt;blockquote&gt;     * On a game controller, the Y button should be either the button labeled Y&lt;/blockquote&gt;&lt;blockquote&gt;     * or the second button on the lower row of controller buttons. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_BUTTON_Y        = 100;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Z Button key.&lt;/blockquote&gt;&lt;blockquote&gt;     * On a game controller, the Z button should be either the button labeled Z&lt;/blockquote&gt;&lt;blockquote&gt;     * or the third button on the lower row of controller buttons. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_BUTTON_Z        = 101;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: L1 Button key.&lt;/blockquote&gt;&lt;blockquote&gt;     * On a game controller, the L1 button should be either the button labeled L1 (or L)&lt;/blockquote&gt;&lt;blockquote&gt;     * or the top left trigger button. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_BUTTON_L1       = 102;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: R1 Button key.&lt;/blockquote&gt;&lt;blockquote&gt;     * On a game controller, the R1 button should be either the button labeled R1 (or R)&lt;/blockquote&gt;&lt;blockquote&gt;     * or the top right trigger button. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_BUTTON_R1       = 103;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: L2 Button key.&lt;/blockquote&gt;&lt;blockquote&gt;     * On a game controller, the L2 button should be either the button labeled L2&lt;/blockquote&gt;&lt;blockquote&gt;     * or the bottom left trigger button. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_BUTTON_L2       = 104;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: R2 Button key.&lt;/blockquote&gt;&lt;blockquote&gt;     * On a game controller, the R2 button should be either the button labeled R2&lt;/blockquote&gt;&lt;blockquote&gt;     * or the bottom right trigger button. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_BUTTON_R2       = 105;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Left Thumb Button key.&lt;/blockquote&gt;&lt;blockquote&gt;     * On a game controller, the left thumb button indicates that the left (or only)&lt;/blockquote&gt;&lt;blockquote&gt;     * joystick is pressed. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_BUTTON_THUMBL   = 106;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Right Thumb Button key.&lt;/blockquote&gt;&lt;blockquote&gt;     * On a game controller, the right thumb button indicates that the right&lt;/blockquote&gt;&lt;blockquote&gt;     * joystick is pressed. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_BUTTON_THUMBR   = 107;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Start Button key.&lt;/blockquote&gt;&lt;blockquote&gt;     * On a game controller, the button labeled Start. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_BUTTON_START    = 108;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Select Button key.&lt;/blockquote&gt;&lt;blockquote&gt;     * On a game controller, the button labeled Select. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_BUTTON_SELECT   = 109;&lt;/blockquote&gt;&lt;blockquote&gt;    /** Key code constant: Mode Button key.&lt;/blockquote&gt;&lt;blockquote&gt;     * On a game controller, the button labeled Mode. */&lt;/blockquote&gt;&lt;blockquote&gt;    public static final int KEYCODE_BUTTON_MODE     = 110;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;範例:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;/* send android keyboard event via usb&lt;br /&gt; * 2010/1/5 by chihying&lt;br /&gt; *&lt;br /&gt; * release not:&lt;br /&gt; * 	v1.0 2010/1/5&lt;br /&gt; * 		first version, no &#39;&lt;&#39; and &#39;&gt;&#39;&lt;br /&gt; *&lt;br /&gt; *&lt;br /&gt; * */&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#include &lt;stdio.h&gt;&lt;br /&gt;#include &lt;termios.h&gt;&lt;br /&gt;#include &lt;stdlib.h&gt;&lt;br /&gt;#include &lt;unistd.h&gt;&lt;br /&gt;&lt;br /&gt;#define MAX_LENGTH 10&lt;br /&gt;&lt;br /&gt;int S;&lt;br /&gt;&lt;br /&gt;typedef struct _cmd{&lt;br /&gt;	int event[MAX_LENGTH];&lt;br /&gt;	int event_len;&lt;br /&gt;	int input_len;&lt;br /&gt;	int input[MAX_LENGTH];&lt;br /&gt;	int choice;&lt;br /&gt;}CMD;&lt;br /&gt;&lt;br /&gt;CMD cmd[]={&lt;br /&gt;&lt;br /&gt;//	{{0}	,1	,	,{}},&lt;br /&gt;//	{{1}	,1	,	,{}},&lt;br /&gt;//	{{2}	,1	,	,{}},&lt;br /&gt;	{{3}	,1	,5	,{27,91,49,53,126}},//KEYCODE_HOME&lt;br /&gt;	{{4}	,1	,5	,{27,91,49,56,126}},//KEYCODE_BACK&lt;br /&gt;//	{{5}	,1	,	,{}},//KEYCODE_CALL&lt;br /&gt;//	{{6}	,1	,	,{}},//KEYCODE_ENDCALL&lt;br /&gt;&lt;br /&gt;	{{7}	,1	,1	,{&#39;0&#39;}},&lt;br /&gt;	{{8}	,1	,1	,{&#39;1&#39;}},&lt;br /&gt;	{{9}	,1	,1	,{&#39;2&#39;}},&lt;br /&gt;	{{10}	,1	,1	,{&#39;3&#39;}},&lt;br /&gt;	{{11}	,1	,1	,{&#39;4&#39;}},&lt;br /&gt;	{{12}	,1	,1	,{&#39;5&#39;}},&lt;br /&gt;	{{13}	,1	,1	,{&#39;6&#39;}},&lt;br /&gt;	{{14}	,1	,1	,{&#39;7&#39;}},&lt;br /&gt;	{{15}	,1	,1	,{&#39;8&#39;}},&lt;br /&gt;	{{16}	,1	,1	,{&#39;9&#39;}},&lt;br /&gt;	{{59,7}	,2	,1	,{&#39;)&#39;}},&lt;br /&gt;	{{59,8}	,2	,1	,{&#39;!&#39;}},&lt;br /&gt;	{{59,11},2	,1	,{&#39;$&#39;}},&lt;br /&gt;	{{59,12},2	,1	,{&#39;%&#39;}},&lt;br /&gt;	{{59,13},2	,1	,{&#39;^&#39;}},&lt;br /&gt;	{{59,14},2	,1	,{&#39;&amp;&#39;}},&lt;br /&gt;	{{59,16},2	,1	,{&#39;(&#39;}},&lt;br /&gt;&lt;br /&gt;	{{17}	,1	,1	,{&#39;*&#39;}},&lt;br /&gt;	{{18}	,1	,1	,{&#39;#&#39;}},&lt;br /&gt;	{{19}	,1	,3	,{27,91,65}},//KEYCODE_DPAD_UP&lt;br /&gt;	{{20}	,1	,3	,{27,91,66}},//KEYCODE_DPAD_DOWN&lt;br /&gt;	{{21}	,1	,3	,{27,91,68}},//KEYCODE_DPAD_LEFT&lt;br /&gt;	{{22}	,1	,3	,{27,91,67}},//KEYCODE_DPAD_RIGHT&lt;br /&gt;//	{{23}	,1	,	,{}},//KEYCODE_DPAD_CENTER&lt;br /&gt;	{{24}	,1	,4	,{27,91,53,126}},//KEYCODE_VOLUME_UP&lt;br /&gt;	{{25}	,1	,4	,{27,91,54,126}},//KEYCODE_VOLUME_DOWN&lt;br /&gt;//	{{26}	,1	,	,{}},//KEYCODE_POWER&lt;br /&gt;//	{{27}	,1	,	,{}},//KEYCODE_CAMERA&lt;br /&gt;//	{{28}	,1	,	,{}},//KEYCODE_CLEAR&lt;br /&gt;&lt;br /&gt;	{{29}	,1	,1	,{&#39;a&#39;}},&lt;br /&gt;	{{30}	,1	,1	,{&#39;b&#39;}},&lt;br /&gt;	{{31}	,1	,1	,{&#39;c&#39;}},&lt;br /&gt;	{{32}	,1	,1	,{&#39;d&#39;}},&lt;br /&gt;	{{33}	,1	,1	,{&#39;e&#39;}},&lt;br /&gt;	{{34}	,1	,1	,{&#39;f&#39;}},&lt;br /&gt;	{{35}	,1	,1	,{&#39;g&#39;}},&lt;br /&gt;	{{36}	,1	,1	,{&#39;h&#39;}},&lt;br /&gt;	{{37}	,1	,1	,{&#39;i&#39;}},&lt;br /&gt;	{{38}	,1	,1	,{&#39;j&#39;}},&lt;br /&gt;	{{39}	,1	,1	,{&#39;k&#39;}},&lt;br /&gt;	{{40}	,1	,1	,{&#39;l&#39;}},&lt;br /&gt;	{{41}	,1	,1	,{&#39;m&#39;}},&lt;br /&gt;	{{42}	,1	,1	,{&#39;n&#39;}},&lt;br /&gt;	{{43}	,1	,1	,{&#39;o&#39;}},&lt;br /&gt;	{{44}	,1	,1	,{&#39;p&#39;}},&lt;br /&gt;	{{45}	,1	,1	,{&#39;q&#39;}},&lt;br /&gt;	{{46}	,1	,1	,{&#39;r&#39;}},&lt;br /&gt;	{{47}	,1	,1	,{&#39;s&#39;}},&lt;br /&gt;	{{48}	,1	,1	,{&#39;t&#39;}},&lt;br /&gt;	{{49}	,1	,1	,{&#39;u&#39;}},&lt;br /&gt;	{{50}	,1	,1	,{&#39;v&#39;}},&lt;br /&gt;	{{51}	,1	,1	,{&#39;w&#39;}},&lt;br /&gt;	{{52}	,1	,1	,{&#39;x&#39;}},&lt;br /&gt;	{{53}	,1	,1	,{&#39;y&#39;}},&lt;br /&gt;	{{54}	,1	,1	,{&#39;z&#39;}},&lt;br /&gt;&lt;br /&gt;	{{59,29},2	,1	,{&#39;A&#39;}},&lt;br /&gt;	{{59,30},2	,1	,{&#39;B&#39;}},&lt;br /&gt;	{{59,31},2	,1	,{&#39;C&#39;}},&lt;br /&gt;	{{59,32},2	,1	,{&#39;D&#39;}},&lt;br /&gt;	{{59,33},2	,1	,{&#39;E&#39;}},&lt;br /&gt;	{{59,34},2	,1	,{&#39;F&#39;}},&lt;br /&gt;	{{59,35},2	,1	,{&#39;G&#39;}},&lt;br /&gt;	{{59,36},2	,1	,{&#39;H&#39;}},&lt;br /&gt;	{{59,37},2	,1	,{&#39;I&#39;}},&lt;br /&gt;	{{59,38},2	,1	,{&#39;J&#39;}},&lt;br /&gt;	{{59,39},2	,1	,{&#39;K&#39;}},&lt;br /&gt;	{{59,40},2	,1	,{&#39;L&#39;}},&lt;br /&gt;	{{59,41},2	,1	,{&#39;M&#39;}},&lt;br /&gt;	{{59,42},2	,1	,{&#39;N&#39;}},&lt;br /&gt;	{{59,43},2	,1	,{&#39;O&#39;}},&lt;br /&gt;	{{59,44},2	,1	,{&#39;P&#39;}},&lt;br /&gt;	{{59,45},2	,1	,{&#39;Q&#39;}},&lt;br /&gt;	{{59,46},2	,1	,{&#39;R&#39;}},&lt;br /&gt;	{{59,47},2	,1	,{&#39;S&#39;}},&lt;br /&gt;	{{59,48},2	,1	,{&#39;T&#39;}},&lt;br /&gt;	{{59,49},2	,1	,{&#39;U&#39;}},&lt;br /&gt;	{{59,50},2	,1	,{&#39;V&#39;}},&lt;br /&gt;	{{59,51},2	,1	,{&#39;W&#39;}},&lt;br /&gt;	{{59,52},2	,1	,{&#39;X&#39;}},&lt;br /&gt;	{{59,53},2	,1	,{&#39;Y&#39;}},&lt;br /&gt;	{{59,54},2	,1	,{&#39;Z&#39;}},&lt;br /&gt;&lt;br /&gt;	{{55}	,1	,1	,{&#39;,&#39;}},&lt;br /&gt;	{{56}	,1	,1	,{&#39;.&#39;}},&lt;br /&gt;//	{{59,55},2	,1	,{&#39;&lt;&#39;}},&lt;br /&gt;//	{{59,56},2	,1	,{&#39;&gt;&#39;}},&lt;br /&gt;&lt;br /&gt;//	{{57}	,1	,	,{}},//KEYCODE_ALT_LEFT&lt;br /&gt;//	{{58}	,1	,	,{}},//KEYCODE_ALT_RIGHT&lt;br /&gt;//	{{59}	,1	,	,{}},//KEYCODE_SHIFT_LEFT&lt;br /&gt;//	{{60}	,1	,	,{}},//KEYCODE_SHIFT_RIGHT&lt;br /&gt;&lt;br /&gt;	{{61}	,1	,1	,{9}},//KEYCODE_TAB&lt;br /&gt;	{{62}	,1	,1	,{32}},//KEYCODE_SPACE&lt;br /&gt;//	{{63}	,1	,	,{}},//KEYCODE_SYM&lt;br /&gt;//	{{64}	,1	,	,{}},//KEYCODE_EXPLORER&lt;br /&gt;//	{{65}	,1	,	,{}},//KEYCODE_ENVELOPE&lt;br /&gt;	{{66}	,1	,1	,{10}},//KEYCODE_ENTER&lt;br /&gt;	{{67}	,1	,1	,{127}},//KEYCODE_DEL&lt;br /&gt;&lt;br /&gt;	{{68}	,1	,1	,{&#39;`&#39;}},&lt;br /&gt;	{{69}	,1	,1	,{&#39;-&#39;}},&lt;br /&gt;	{{70}	,1	,1	,{&#39;=&#39;}},&lt;br /&gt;	{{71}	,1	,1	,{&#39;[&#39;}},&lt;br /&gt;	{{72}	,1	,1	,{&#39;]&#39;}},&lt;br /&gt;	{{73}	,1	,1	,{92}},&lt;br /&gt;	{{74}	,1	,1	,{&#39;;&#39;}},&lt;br /&gt;	{{75}	,1	,1	,{39}},&lt;br /&gt;	{{76}	,1	,1	,{&#39;/&#39;}},&lt;br /&gt;	{{77}	,1	,1	,{&#39;@&#39;}},&lt;br /&gt;	{{59,68},2	,1	,{&#39;~&#39;}},&lt;br /&gt;	{{59,69},2	,1	,{&#39;_&#39;}},&lt;br /&gt;	{{59,71},2	,1	,{&#39;{&#39;}},&lt;br /&gt;	{{59,72},2	,1	,{&#39;}&#39;}},&lt;br /&gt;	{{59,73},2	,1	,{&#39;|&#39;}},&lt;br /&gt;	{{59,74},2	,1	,{&#39;:&#39;}},&lt;br /&gt;	{{59,75},2	,1	,{&#39;&quot;&#39;}},&lt;br /&gt;	{{59,76},2	,1	,{&#39;?&#39;}},&lt;br /&gt;&lt;br /&gt;//	{{78}	,1	,	,{}},//KEYCODE_NUM&lt;br /&gt;//	{{79}	,1	,	,{}},//KEYCODE_HEADSETHOOK&lt;br /&gt;//	{{80}	,1	,	,{}},//KEYCODE_FOCUS&lt;br /&gt;&lt;br /&gt;	{{81}	,1	,1	,{&#39;+&#39;}},&lt;br /&gt;&lt;br /&gt;	{{82}	,1	,5	,{27,91,49,55,126}},//KEYCODE_MENU&lt;br /&gt;//	{{83}	,1	,	,{}},//KEYCODE_NOTIFICATION&lt;br /&gt;	{{84}	,1	,5	,{27,91,49,57,126}},//KEYCODE_SEARCH&lt;br /&gt;//	{{85}	,1	,	,{}},//TAG_LAST_KEYCODE&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;void set_tty(){&lt;br /&gt;        struct termios old = {0};&lt;br /&gt;&lt;br /&gt;        if (tcgetattr(0, &amp;old) &lt; 0)&lt;br /&gt;                perror(&quot;tcsetattr()&quot;);&lt;br /&gt;&lt;br /&gt;        old.c_lflag &amp;= ~ICANON;&lt;br /&gt;        old.c_lflag &amp;= ~ECHO;&lt;br /&gt;        old.c_cc[VMIN] = 1;&lt;br /&gt;        old.c_cc[VTIME] = 0;&lt;br /&gt;&lt;br /&gt;        if (tcsetattr(0, TCSANOW, &amp;old) &lt; 0)&lt;br /&gt;                perror(&quot;tcsetattr ICANON&quot;);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;char getch(void) {&lt;br /&gt;        char buf = 0;&lt;br /&gt;&lt;br /&gt;        if (read(0, &amp;buf, 1) &lt; 0)&lt;br /&gt;                perror (&quot;read()&quot;);&lt;br /&gt;&lt;br /&gt;        return (buf);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void send_cmd(int n){&lt;br /&gt;	char command[100];&lt;br /&gt;	for(int i=0; i&lt;cmd[n].event_len; i++){&lt;br /&gt;		sprintf(command, &quot;adb shell input keyevent %d&quot;, cmd[n].event[i]);&lt;br /&gt;		system(command);&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void unknow(char key){&lt;br /&gt;	printf(&quot;error: unknow key %d\n&quot;, key);&lt;br /&gt;	S=1;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void print_cmd(int n){&lt;br /&gt;	for(int i=0;i&lt;cmd[n].event_len; i++){&lt;br /&gt;		printf(&quot;%d &quot;, cmd[n].event[i]);&lt;br /&gt;	}&lt;br /&gt;	printf(&quot;\n&quot;);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int main() {&lt;br /&gt;        char key;&lt;br /&gt;	int cmd_num=0, cmd_max_length=0, flag;&lt;br /&gt;	&lt;br /&gt;	cmd_num=sizeof(cmd)/sizeof(CMD);&lt;br /&gt;	for(int i=0; i&lt;cmd_num; i++){&lt;br /&gt;		if(cmd[1].input_len&gt;cmd_max_length)&lt;br /&gt;			cmd_max_length=cmd[1].input_len;&lt;br /&gt;	}&lt;br /&gt;//	printf(&quot;cmd_num=%d, cmd_max_length=%d\n&quot;, cmd_num, cmd_max_length);&lt;br /&gt;&lt;br /&gt;	set_tty();&lt;br /&gt;&lt;br /&gt;	S=0;&lt;br /&gt;        while((key=getch()) /*&amp;&amp; (key != 27)*//*ESC*/){&lt;br /&gt;//                printf (&quot;you pressed %d, state=%d\n&quot;, key, S);&lt;br /&gt;&lt;br /&gt;		//unknow state&lt;br /&gt;		if( S&lt;0 || S&gt;=cmd_max_length ){&lt;br /&gt;			printf(&quot;error: unknow state\n&quot;);&lt;br /&gt;			S=0;&lt;br /&gt;			continue;&lt;br /&gt;		}&lt;br /&gt;&lt;br /&gt;		//reset choice&lt;br /&gt;		if(S==0){&lt;br /&gt;			for(int i=0; i&lt;cmd_num; i++){&lt;br /&gt;				cmd[i].choice=1;&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;		&lt;br /&gt;		flag=0;&lt;br /&gt;		for(int i=0; i&lt;cmd_num; i++){&lt;br /&gt;			if(cmd[i].choice &amp;&amp; cmd[i].input_len&gt;S &amp;&amp; cmd[i].input[S]==key){&lt;br /&gt;//				printf(&quot;choice event: &quot;);print_cmd(i);&lt;br /&gt;	&lt;br /&gt;				flag=1;&lt;br /&gt;				if(cmd[i].input_len==S+1){&lt;br /&gt;//					printf(&quot;found keyevent: &quot;);print_cmd(i);&lt;br /&gt;&lt;br /&gt;					flag=2;&lt;br /&gt;					send_cmd(i);&lt;br /&gt;					break;&lt;br /&gt;				}&lt;br /&gt;			}else{&lt;br /&gt;				cmd[i].choice=0;&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;		&lt;br /&gt;		&lt;br /&gt;		if(flag==0){&lt;br /&gt;			printf(&quot;error: no match event\n&quot;);&lt;br /&gt;&lt;br /&gt;			S=0;&lt;br /&gt;			continue;&lt;br /&gt;		}	&lt;br /&gt;		&lt;br /&gt;		if(flag==1){&lt;br /&gt;			S++;&lt;br /&gt;			continue;&lt;br /&gt;		}&lt;br /&gt;&lt;br /&gt;		if(flag==2){&lt;br /&gt;			S=0;&lt;br /&gt;			continue;&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;        return(0);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://cyl-blog.blogspot.com/feeds/3227475175896370662/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1946591117419939220/3227475175896370662' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/3227475175896370662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/3227475175896370662'/><link rel='alternate' type='text/html' href='http://cyl-blog.blogspot.com/2011/01/adbandroid-device.html' title='使用adb對android device輸入鍵盤事件'/><author><name>CYL</name><uri>http://www.blogger.com/profile/00715473123095660350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0R4PYFOo2XSKzQ2pCzsb33gG9nI8-JS-cURk98eWqM6iWxlBUuTMxAYhovvZFZmCkjhUbtIBTBGov1feeTOSedZNwXSQjQcN_YjW0nEYz7FOfBbqc0Gv22gHaOswDizg/s220/CIMG2441-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1946591117419939220.post-1403151227585036938</id><published>2010-12-09T19:22:00.001-08:00</published><updated>2010-12-09T19:27:46.471-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="git"/><title type='text'>git 同時開發範例</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Verdana, sans-serif; font-size: 13px; line-height: 20px; &quot;&gt;&lt;h2 style=&quot;font-weight: normal; font-size: 1.6em; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;一開始有aaa與bbb目錄&lt;/span&gt;&lt;/h2&gt;&lt;div class=&quot;sites-codeblock sites-codesnippet-block&quot; style=&quot;background-color: rgb(239, 239, 239); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(211, 211, 211); border-right-color: rgb(211, 211, 211); border-bottom-color: rgb(211, 211, 211); border-left-color: rgb(211, 211, 211); display: block; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0.5em; padding-left: 1em; line-height: 13px; &quot;&gt;&lt;code&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;git-test/&lt;/span&gt;&lt;/code&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;br /&gt;&lt;code&gt;|-- aaa&lt;/code&gt;&lt;br /&gt;&lt;code&gt;`-- bbb&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;h2 style=&quot;font-weight: normal; font-size: 1.6em; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;a name=&quot;TOC-A-aaa-&quot; style=&quot;text-decoration: underline; &quot;&gt;&lt;/a&gt;A用aaa當作程式放置的目錄, 先對他做初始化&lt;/span&gt;&lt;/h2&gt;&lt;b&gt;&lt;i&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;cd git-test/aaa&lt;br /&gt;git init&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;h2 style=&quot;font-weight: normal; font-size: 1.6em; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;a name=&quot;TOC-1&quot; style=&quot;text-decoration: underline; &quot;&gt;&lt;/a&gt;複製以前寫的某一隻程式至此目錄&lt;/span&gt;&lt;/h2&gt;&lt;div class=&quot;sites-codeblock sites-codesnippet-block&quot; style=&quot;background-color: rgb(239, 239, 239); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(211, 211, 211); border-right-color: rgb(211, 211, 211); border-bottom-color: rgb(211, 211, 211); border-left-color: rgb(211, 211, 211); display: block; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0.5em; padding-left: 1em; line-height: 13px; &quot;&gt;&lt;code&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;git-test/&lt;/span&gt;&lt;/code&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;br /&gt;&lt;code&gt;|-- aaa&lt;/code&gt;&lt;br /&gt;&lt;code&gt;|   |-- main&lt;/code&gt;&lt;br /&gt;&lt;code&gt;|   `-- main.c&lt;/code&gt;&lt;br /&gt;&lt;code&gt;`-- bbb&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;h2 style=&quot;font-weight: normal; font-size: 1.6em; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;a name=&quot;TOC-git-&quot; style=&quot;text-decoration: underline; &quot;&gt;&lt;/a&gt;加入此目錄所有檔案給git管理&lt;/span&gt;&lt;/h2&gt;&lt;i&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;git add .&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;h2 style=&quot;font-weight: normal; font-size: 1.6em; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;a name=&quot;TOC-commit&quot; style=&quot;text-decoration: underline; &quot;&gt;&lt;/a&gt;第一次commit&lt;/span&gt;&lt;/h2&gt;&lt;i&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;git commit&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;br /&gt;(之後可以輸入這次commit的註解)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;h2 style=&quot;font-weight: normal; font-size: 1.6em; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;a name=&quot;TOC-2&quot; style=&quot;text-decoration: underline; &quot;&gt;&lt;/a&gt;發現有一個檔案是編譯出來的二進位檔, 不需要追蹤這個檔案&lt;/span&gt;&lt;/h2&gt;&lt;i&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;git rm main&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;div class=&quot;sites-codeblock sites-codesnippet-block&quot; style=&quot;background-color: rgb(239, 239, 239); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(211, 211, 211); border-right-color: rgb(211, 211, 211); border-bottom-color: rgb(211, 211, 211); border-left-color: rgb(211, 211, 211); display: block; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0.5em; padding-left: 1em; line-height: 13px; &quot;&gt;&lt;code&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;git-test/&lt;/span&gt;&lt;/code&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;br /&gt;&lt;code&gt;|-- aaa&lt;/code&gt;&lt;br /&gt;&lt;code&gt;|   `-- main.c&lt;/code&gt;&lt;br /&gt;&lt;code&gt;`-- bbb&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;br /&gt;&lt;/span&gt;&lt;h2 style=&quot;font-weight: normal; font-size: 1.6em; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;a name=&quot;TOC-commit1&quot; style=&quot;text-decoration: underline; &quot;&gt;&lt;/a&gt;要習慣做完一個階段之後就commit&lt;/span&gt;&lt;/h2&gt;&lt;i&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;git commit&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; &gt; -a&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;h2 style=&quot;font-weight: normal; font-size: 1.6em; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;a name=&quot;TOC-main-&quot; style=&quot;text-decoration: underline; &quot;&gt;&lt;/a&gt;假設臨時需要用到之前被砍掉的main, 可以切換回去過去的狀態&lt;/span&gt;&lt;/h2&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;先用&lt;i&gt;&lt;b&gt;git log&lt;/b&gt;&lt;/i&gt;看要回去的那次commit的編號&lt;br /&gt;&lt;/span&gt;&lt;div class=&quot;sites-codeblock sites-codesnippet-block&quot; style=&quot;background-color: rgb(239, 239, 239); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(211, 211, 211); border-right-color: rgb(211, 211, 211); border-bottom-color: rgb(211, 211, 211); border-left-color: rgb(211, 211, 211); display: block; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0.5em; padding-left: 1em; line-height: 13px; &quot;&gt;&lt;code&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;commit 93056170a2f98563ba13f1b4679a73655a64c2fb&lt;br /&gt;Author: chihying &lt;chihying_lin@asus.scom&gt;&lt;br /&gt;Date:   Tue Feb 23 20:29:55 2010 +0800&lt;br /&gt;&lt;br /&gt;    remove output files&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;commit 3ecb40595863e67b5b6f5ea06b8e75dfcad85848&lt;/span&gt;&lt;/code&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;br /&gt;&lt;code&gt;Author: chihying &lt;chihying_lin@asus.scom&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;Date:   Tue Feb 23 20:28:26 2010 +0800&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;    first add all files&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;h2 style=&quot;font-weight: normal; font-size: 1.6em; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;a name=&quot;TOC-commit-&quot; style=&quot;text-decoration: underline; &quot;&gt;&lt;/a&gt;切換回去一開始那次的commit, 整個資料夾就回復了&lt;/span&gt;&lt;/h2&gt;&lt;i&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;git checkout 3ecb40595863e67b5b6f5ea06b8e75dfcad85848&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;br /&gt;&lt;/span&gt;&lt;div class=&quot;sites-codeblock sites-codesnippet-block&quot; style=&quot;background-color: rgb(239, 239, 239); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(211, 211, 211); border-right-color: rgb(211, 211, 211); border-bottom-color: rgb(211, 211, 211); border-left-color: rgb(211, 211, 211); display: block; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0.5em; padding-left: 1em; line-height: 13px; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;br /&gt;&lt;code&gt;git-test/&lt;/code&gt;&lt;br /&gt;&lt;code&gt;|-- aaa&lt;/code&gt;&lt;br /&gt;&lt;code&gt;|   |-- main&lt;/code&gt;&lt;br /&gt;&lt;code&gt;|   `-- main.c&lt;/code&gt;&lt;br /&gt;&lt;code&gt;`-- bbb&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;br /&gt;&lt;/span&gt;&lt;h2 style=&quot;font-weight: normal; font-size: 1.6em; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;a name=&quot;TOC-Makefile&quot; style=&quot;text-decoration: underline; &quot;&gt;&lt;/a&gt;新增了一個Makefile&lt;/span&gt;&lt;/h2&gt;&lt;div class=&quot;sites-codeblock sites-codesnippet-block&quot; style=&quot;background-color: rgb(239, 239, 239); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(211, 211, 211); border-right-color: rgb(211, 211, 211); border-bottom-color: rgb(211, 211, 211); border-left-color: rgb(211, 211, 211); display: block; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0.5em; padding-left: 1em; line-height: 13px; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;br /&gt;&lt;code&gt;git-test/&lt;/code&gt;&lt;br /&gt;&lt;code&gt;|-- aaa&lt;/code&gt;&lt;br /&gt;&lt;code&gt;|   |-- Makefile&lt;/code&gt;&lt;br /&gt;&lt;code&gt;|   `-- main.c&lt;/code&gt;&lt;br /&gt;&lt;code&gt;`-- bbb&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;br /&gt;加入管理&lt;i&gt;&lt;b&gt;git add Makefile&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;git commit&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;h2 style=&quot;font-weight: normal; font-size: 1.6em; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;a name=&quot;TOC-B-bbb&quot; style=&quot;text-decoration: underline; &quot;&gt;&lt;/a&gt;若目前有另外一個人B也要一起開發這個程式, 他的工作目錄在bbb&lt;/span&gt;&lt;/h2&gt;&lt;i&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;cd&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;b&gt;&lt;i&gt;&lt;span class=&quot;Apple-style-span&quot; &gt; git-test/&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;i&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;bbb&lt;br /&gt;git clone [aaa的路徑]&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;br /&gt;這樣在B就也有一份程式了&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class=&quot;sites-codeblock sites-codesnippet-block&quot; style=&quot;background-color: rgb(239, 239, 239); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(211, 211, 211); border-right-color: rgb(211, 211, 211); border-bottom-color: rgb(211, 211, 211); border-left-color: rgb(211, 211, 211); display: block; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0.5em; padding-left: 1em; line-height: 13px; &quot;&gt;&lt;code&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;bbb&lt;/span&gt;&lt;/code&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;br /&gt;&lt;code&gt;`-- aaa&lt;/code&gt;&lt;br /&gt;&lt;code&gt;    |-- Makefile&lt;/code&gt;&lt;br /&gt;&lt;code&gt;    `-- main.c&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;h2 style=&quot;font-weight: normal; font-size: 1.6em; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;a name=&quot;TOC-A-B-&quot; style=&quot;text-decoration: underline; &quot;&gt;&lt;/a&gt;假設目前A有對程式做修改,B想取得最新的更動&lt;/span&gt;&lt;/h2&gt;&lt;i&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;git pull&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;h2 style=&quot;font-weight: normal; font-size: 1.6em; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;a name=&quot;TOC-B-branch&quot; style=&quot;text-decoration: underline; &quot;&gt;&lt;/a&gt;B要做一些修改, 先開一個branch&lt;/span&gt;&lt;/h2&gt;&lt;i&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;git branch B_modify&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;br /&gt;可用&lt;i&gt;&lt;b&gt;git branch&lt;/b&gt;&lt;/i&gt;查看&lt;br /&gt;&lt;/span&gt;&lt;div class=&quot;sites-codeblock sites-codesnippet-block&quot; style=&quot;background-color: rgb(239, 239, 239); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(211, 211, 211); border-right-color: rgb(211, 211, 211); border-bottom-color: rgb(211, 211, 211); border-left-color: rgb(211, 211, 211); display: block; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0.5em; padding-left: 1em; line-height: 13px; &quot;&gt;&lt;code&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;  B_modify&lt;/span&gt;&lt;/code&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;br /&gt;&lt;code&gt;* master&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;切換branch&lt;br /&gt;&lt;i&gt;&lt;b&gt;git checkout B_modify&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class=&quot;sites-codeblock sites-codesnippet-block&quot; style=&quot;background-color: rgb(239, 239, 239); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(211, 211, 211); border-right-color: rgb(211, 211, 211); border-bottom-color: rgb(211, 211, 211); border-left-color: rgb(211, 211, 211); display: block; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0.5em; padding-left: 1em; line-height: 13px; &quot;&gt;&lt;code&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;* B_modify&lt;/span&gt;&lt;/code&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;br /&gt;&lt;code&gt;  master&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;br /&gt;&lt;/span&gt;&lt;h2 style=&quot;font-weight: normal; font-size: 1.6em; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;&lt;a name=&quot;TOC-A-B-commit-B-B_modify-merge-&quot; style=&quot;text-decoration: underline; &quot;&gt;&lt;/a&gt;A B都修改/commit了一些東西之後，B要把他在B_modify的修改merge回去&lt;/span&gt;&lt;/h2&gt;&lt;span class=&quot;Apple-style-span&quot; &gt;先跳回master&lt;br /&gt;&lt;i&gt;&lt;b&gt;git branch master&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;從aaa抓最新的修改&lt;br /&gt;&lt;i&gt;&lt;b&gt;git pull ../../aaa&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;把B_modify的修改合併到master上面&lt;br /&gt;&lt;i&gt;&lt;b&gt;git merge B_master&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;把更新上傳至aaa&lt;br /&gt;&lt;i&gt;&lt;b&gt;git push&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://cyl-blog.blogspot.com/feeds/1403151227585036938/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1946591117419939220/1403151227585036938' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/1403151227585036938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/1403151227585036938'/><link rel='alternate' type='text/html' href='http://cyl-blog.blogspot.com/2010/12/git.html' title='git 同時開發範例'/><author><name>CYL</name><uri>http://www.blogger.com/profile/00715473123095660350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0R4PYFOo2XSKzQ2pCzsb33gG9nI8-JS-cURk98eWqM6iWxlBUuTMxAYhovvZFZmCkjhUbtIBTBGov1feeTOSedZNwXSQjQcN_YjW0nEYz7FOfBbqc0Gv22gHaOswDizg/s220/CIMG2441-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1946591117419939220.post-7667253700180071130</id><published>2010-12-05T18:00:00.000-08:00</published><updated>2010-12-05T18:14:17.465-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="shell script"/><title type='text'>找尋程式中使用哪些define的flag做判斷</title><content type='html'>&lt;div&gt;一般程式會在編譯時定義一些flag來決定是否啟動某功能的支援，&lt;/div&gt;&lt;div&gt;而在程式內的實作會使用ifdef XXX來判斷，&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;可以用以下的script找出所有用ifdef判斷的flag，&lt;/div&gt;&lt;div&gt;來確認所需的功能是否在編譯時有加入&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. 搜尋所有ifdef&lt;/div&gt;&lt;div&gt;2. 取得第二個欄位的資料&lt;/div&gt;&lt;div&gt;3. 排序(刪去重複)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;grep -rns ifdef * | awk &#39;{FS=&quot; &quot;} {print $2}&#39; |  sort -u&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cyl-blog.blogspot.com/feeds/7667253700180071130/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1946591117419939220/7667253700180071130' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/7667253700180071130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1946591117419939220/posts/default/7667253700180071130'/><link rel='alternate' type='text/html' href='http://cyl-blog.blogspot.com/2010/12/defineflag.html' title='找尋程式中使用哪些define的flag做判斷'/><author><name>CYL</name><uri>http://www.blogger.com/profile/00715473123095660350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0R4PYFOo2XSKzQ2pCzsb33gG9nI8-JS-cURk98eWqM6iWxlBUuTMxAYhovvZFZmCkjhUbtIBTBGov1feeTOSedZNwXSQjQcN_YjW0nEYz7FOfBbqc0Gv22gHaOswDizg/s220/CIMG2441-1.jpg'/></author><thr:total>0</thr:total></entry></feed>