2026-06-30

AI、股市、台灣

 上個世紀,台灣股市大多圍繞在傳統產業,包括製造業、金融業、運輸業……等等,大家依景氣輪流起起落落。

 而上個世紀的東亞四小龍,香港淪落於共產黨之手後,經濟、政治差不多已經死了,新加坡則成為一個一切以「錢」為中心,擁有約六百萬員工的私人公司。也可以說新加坡只是「有錢」的北韓,在世界仍在「全球化」浪頭上時,新加坡的確很吸引人,但當世界漸漸走向「去全球化」的現在,新加坡過去所引以為傲的表徵「錢」底下所掩蓋掉的問題也逐一浮現,小龍的風采漸漸剝去。

 反倒是台灣、南韓今年以來重新發爐,失落30年的日本也重新點火,以近一年來全世界股市漲幅排名來看,南韓、台灣、日本都進入前幾名成為經濟發展的資優生。

 這三個國家股市爆發目前主要歸因於AI,而AI相關股的高漲甚至翻倍,已經跟以往的「景氣循環」不太一樣,因此有一種觀點認為AI這一波所帶來的股市爆發,是「產業革命式」的,而非景氣輪流的產業循環模式,也就是說AI相關股的股價並不是已達高點,而是才剛起步。

 當然也有人說「啊!這只是泡沫還未爆,好日子不多了!」

 至於這兩個說法誰才是對的?最終只能等待時間來證明!

 這裡(2026/6/30)拿兩個「含積量最高」的國民ETF收盤價來看
0050:107.8元
0052:63.35元

 身為台灣人當然希望台灣能繼續保有俱生產力、又有創新力的各種產業,而不要淪落成一切向錢看的商業算計。

2026-05-31

什麼樣的鍵盤最好用?

 去年曾經提到60%鍵盤最好用,不過經過將近十個月之後,那個觀點修正為「附有音量旋鈕的65%鍵盤最好用」,或者說「附有音量旋鈕的68鍵鍵盤」最好用!

 65%的比60%的基本上多了上、下、左、右以及像是Del、PgUp、PgDn等等。

 68鍵鍵盤是怎樣的概念?
就是將104鍵的鍵盤拿掉最上面那排F1……F12,以及拿掉右邊九宮格數字盤,剩下幾個NumLock、ScrollLock、PrintScreen、Pause、Insert、Home、End這些也都不要,所剩下的簡約鍵盤。

 然後要加一個「音量旋鈕」,這可以讓我們有如使用實體音響器材般的感受。那是很直覺的轉動旋鈕來調整大小聲,而不是用老鼠不斷的按「+」或「-」的圖樣,或者不斷按實體鍵盤上的某兩個「音量+」或「音量-」鍵,操作旋鈕來改變音量真的直覺、簡單好用得多。

 加了音量旋鈕的65%鍵盤有哪些好處:
➀調整音量大小時很直覺,只需兩支手指轉動旋鈕
➁經由軔體或軟體定義後,手指移動範圍變很小,眼睛不必看鍵盤
➂鍵盤體積小,只佔用桌子上小小的面積
➃清理鍵盤灰塵、掉降物時,省掉很多麻煩事

 這是我在用了好幾個機械鍵盤之後的最終心得。

 至於用來定義鍵盤的軟體,強力推薦kanata!
 https://github.com/jtroo/kanata

2026-04-30

語音轉文字的小工具

https://github.com/peteonrails/voxtype

自訂一個開關鍵,設成 toggle 的話,按一下開始收音,再按一下停止收音,並輸出文字。先試著在 terminal 下直接執行 voxtype -v 
不借由其他程式來輸出,當停止收音後,就可以看到螢幕上出現你唸的語音內容,把它 copy/paste 到任何你要的地方。

設定檔在
~/.config/voxtype/config.toml

 [hotkey]
#key = "SCROLLLOCK"
# 在 notebook 上沒有 Scrolllock 鍵,所以改成 F24, 然後再借由 window manager
# 來定義 F24 到任何組合,例如 Win + F12 來當控制鍵,按一下開始收音,再按一下停止
key = "F24"
mode = "toggle" 

這個小工具可以聽你說的話轉成文字,以內定的 base.en 語言模式來說只有142MB,隨便唸一段英語給它聽,轉出來的文字效果相當不錯,先簡單介紹至此,有空再來試中文。

2026-03-05

在手機上安裝完整的Linux

 termux出來很多年了,之前曾經用了一下,覺得沒什麼特別,就沒再用了。最近在網路上看到它已經能跑『完整』的Linux環境,於是再裝來玩玩看。termux標榜的是它直接使用手機的硬體,不是建構的虛擬環境裡或是透過vnc來達成。

 可以抓現成的binary apk,再透過USB(或走TCPIP)用adb把它安裝到Android手機裡,不需root你的手機。

 直接到github下載apk(以下是目前的穩定版)
https://github.com/termux/termux-app/releases/tag/v0.118.3

 把手機用USB連到電腦上,執行安裝
adb install termux-app_v0.118.3+github-debug_arm64-v8a.apk

 安裝後打開termux APP,先執行以下幾個命令
termux-setup-storage
apt update
apt upgrade

 接下來就能用apt(或用pkg指令,如果apt沒有你要的程式時)指令來安裝你想要的程式,例如
apt install wget
apt install vim
apt install vifm
apt install mpv
apt install python
apt install openssh
順便裝一下yt-dlp,從這裡抓能在linux環境直接跑的"yt-dlp"
https://github.com/yt-dlp/yt-dlp/releases
把"yt-dlp"放在你的termux下任何地方,並設定PATH到".bashrc"

 試一下執行mpv收聽網路上的串流音樂的指令,例如:
mpv http://213.141.131.10:8002/clarinet 
mpv http://serpent0.duckdns.org:8088/kbsfm.pls
mpv https://stream.classic.nl/classicnl-soundtracks.mp3
mpv https://tunein.cdnstream1.com/3519_96.aac
mpv http://tsfjazz.ice.infomaniak.ch:80/tsfjazz-high
mpv https://stream.epic-piano.com/chopin

 如果手機連上藍牙喇叭或耳機,這樣就能從藍牙喇叭聽mpv播放的串流音樂了。
可以寫個python程式,把上面的收聽串流的指令整合起來方便操作。

 也可以讀寫Android手機裡的其他APP所使用的檔案
cd ~/storage
ls -l 
看一下有哪些目錄

 vifm <--執行它來管理檔案

 在手機上跑cli程式已能滿足我目前的需要,至於在手機上跑完整Linux Desktop感覺沒什麼需要,畢竟手機螢幕就那麼小,之後再來試試termux-x11跑GUI。

 有興趣跑termux-x11然後安裝Linux完整桌面環境的人,可以試試以下幾個安裝script,都很新,有的才幾天前,也有兩三個月前,應該很容易完成。
https://github.com/orailnoor/termux-linux-setup
https://github.com/jarvesusaram99/termux-hacklab
https://github.com/jarvesusaram99/ubuntu-on-android

2026-02-28

「信就對了」是一種反智

 台灣人繼承了華人普遍的反智傳統,在宗教上特別明顯,「信就對了!」。
所以台灣各種廟裡擺置了不同的神、佛,因為台灣人有著「信就對了、拜就對了、有拜有保庇」的根深蒂固觀念。

 以佛教來說,雖然分成禪宗、淨土宗、密宗、律宗……,大概除了藏傳佛教的信徒之外,大多數台灣自稱佛教徒的人是沒有宗派觀念,或者說繼承了反智傳統裡的「既要、又要」,既要唸咒、又要唸佛、又要禪修,反正唸越多、修越多越好!跟聚集財富的觀念一樣。

 日本的佛教就宗派分明了,不只是宗,更分了派別,禪分為臨濟宗、曹洞宗,淨土分為淨土宗、淨土真宗,密(真言)分為東密、台密,日本自創的日蓮宗也分為日蓮宗、日蓮正宗,信徒對自己的宗派分明,信仰也相對明確。或許這也日本知識份子認真求是,成為明治維新一代人覺得別再跟亞洲文化鬼混,進入「脫亞入歐」的方向,日本人的思辯能力確實帶來百年文明與進步。

 再來看台灣的基督教,除了Roman Catholic(天主教)跟台灣長老教會之外,大部份教徒只會說自己是信耶穌,並不在意自己的教會是什麼「宗派」,只知道自己是哪個「堂」,不管是XX堂、XX教會,反正都是「信耶穌」,到哪個堂會都一樣。

 對屬於「新教(Protestant)」的「基督教」,在橫向可以分類成「福音派」、「靈恩派(包括泛靈恩派)」,靈恩派最明顯的特徵就是跟台灣市井神壇、宮廟的「神明附身」、「起乩」、「講神明話」很像,不過宮廟、神壇會有懂神明話的「桌頭」在場翻譯,相對於靈恩派在禮拜時,會眾有「起乩」、講人聽不懂的「靈語」,大都沒有專職的翻譯人員。

 相似的行為在福音派偶而也有,但靈恩派很注重那樣的「聖靈充滿」以及「講方言」,沒有這些現象的人就「不屬靈」(白話可以翻成「不及格」、「不夠資格」)。

 而福音派跟傳統佛教的「講經」、「禪修」比較類似,著重在「講道」、「靈修」,也就是講解聖經、神學、靈修禱告(meditation)。

 基督教(Christian)還有縱向的分類,就是高教派(high church)、低教派(low church)的分別,這裡的「高、低」並沒有價值上的判斷意義,而是在「儀式」、「神學」方面的多寡,高教派有較多的傳統儀式和傳統神學觀,低教派較少。

 最「高」的教派可以頒給「正教(Orthodox)」或叫「東正教(Eastern Orthodox)」,其次是「公教(Catholic)」或叫「羅馬天主教(Roman Catholic)」,例如在儀式方面,這兩者都會在禮拜(彌撒)中用到「提爐(就是提著搖幌的香爐)」,以及教堂裡各種「聖像」,不管是「正教」所用的平面圖像或「公教」所用的立體聖像。

 再來是「聖公會(Anglican, 或Eposcopal)」,跟「天主教」一樣在教堂裡有「耶穌苦像(十字架上有耶穌像)」以及一些聖徒的像、相類似的禮拜「儀式」,例如「進堂禮儀」。

 然後是「信義會(也稱為路德會Lutheran)」以及「長老會(Presbyterian)」,到這裡為止以上的基督教都有「嬰兒洗禮」以及誦讀「信經(Creed,不論是『使徒信經』或『尼西亞信經』)」,在禮拜儀式中有認罪、赦罪,以及主禮的牧師會穿牧師袍、帶上聖帶(Stole)。

 再來是「浸信會(Baptist)」,他們不對嬰兒施予洗禮、不誦讀「信經」、牧師不戴白色領圈(Clerical collar, 或叫「羅馬領」),主張各教會「獨立」、「自主」,相對於以上的宗派,他們的組織較為鬆散。

 而最「低」的教派是「無宗派基督教」,在禮儀、組織方面大都學「浸信會」,但多數時候唱的「聖歌」卻不是傳統的Hymn(十六世紀以來所累積的聖詩、聖詠),而採用近年來新創作的唱唱跳跳「詩歌」,因為它更像流行歌曲、更吸引年輕人。

 越「高」的教派越注重千餘年來的基督教會傳統禮儀、神學,越「低」的教派越反對教會傳統禮儀、神學,強調「人人皆祭師」、「唯獨(唯讀)聖經」,這固然有容易經營的優點,但也容易讓隨便阿貓阿狗都可以像開手搖飲、咖啡店一樣,自己開個「教會」。

 「低」教派教會數目越來越多,在拋棄傳統的同時,也讓各種亂源趁虛而入,例如「成功神學」,強調來信就能讓你得到財富、各種好康,成功才是神所愛的。另外像是韓國人自己發明的各種奇怪基督教,例如「攝理教」,他們一樣打著「基督教」的旗號,一樣自稱「信耶穌」,專門進入校園狩獵小綿羊。

 只要是「信耶穌就對了」,如此心態單純的信徒可能很幸福,但真的對了嗎?本質上跟拜媽祖、拜恩主公……的信仰者有什麼差異呢?除了神的名字?

2026-01-28

「基督教」不在身體劃十字,不做合十手勢

 除了Roman Catholic(天主教)以及Orthodox(『東』正教)之外,Protestant(新教、中文稱為『 基督教』)也有「劃十字架」和「合十」的手勢動作。其實從英文來看,不管「天主教、東正教、新教」通通都是「基督教(Christian)」,這才是正確的稱呼啊!

有些中文自稱為「基督徒」的新教信徒經常把天主教視為外邦人,甚至認為是異端!自以為是跟他們不同的「另一種宗教」,認為「新教」就是要反對、推翻所有Roman Catholic的一切,反對所有跟舊教有關的事物以及知識。 

這是一個大誤區,眾所周知,對羅馬天主教的抗議是始於馬丁路德,他主要反對的是16世紀時代羅馬教會裡腐敗的事務以及濫權,而不是推翻「舊教」的一切。

否則自稱「基督教(Protestant、新教)」的人,應該把「聖經」也丟掉,因為你現在讀的「聖經(舊約39卷、新約27卷)」也是千餘年來由「天主教」彙編所留下來的文書,你的聖經完全繼承自天主教無誤。(除了馬丁路德在把舊教聖經譯成德文時,因為找不到對應的希伯來文,而刪掉的七個書卷)。

 無論是在台灣或美國甚至歐洲,新教的「聖公會(Anglican church)」、「信義會(路德會)(Lutheran church)」都有在自己身上劃十字架的行為。馬丁路德並不是全盤否定千餘年來教會所留下的豐富智慧,包括禮儀以及傳統神學,在「Luther's Small Catechism(馬丁路德信仰小問答) 裡的每日禱告(Daily Prayers) 中提到
「在早上起床後」「晚上就寢前」都應該先 "make the sign of the holy cross and say ...." (劃十字架) 再進行禱告。

https://catechism.cph.org/en/daily-prayers.html

 有些新教徒會以「聖經沒說XX」為由,來否定千餘年來的某些基督徒傳統,例如否定「劃十字架」這個動作,但是劃十字架的這個動作在還沒有你所讀的那本「聖經」之前,就已經存在基督徒之間,甚至從之後的聖經裡,也可以找到支持「在身上做記」,用來記念耶穌以及他的教導。

 在自己身上劃十字架的做法始於第三世紀初,也就是當時這些劃十字架的人,他的阿公可能都見過耶穌、甚至還跟著耶穌一起吃東西聊天!

 不過劃十字的手勢在不同宗派有些不同,(東)正教會將姆指、食指、中指並在一起,順序為「頭、腹、右肩、左肩」來劃十字架,而羅馬公教(天主教)、聖公會(宗)是五指並攏,順序為「頭、腹、左肩、右肩(方向與東正教相反)」,而信義會(路德宗)是姆指、食指、中指伸直,順序為頭、腹前、左肩、右肩(也有牧師說先左或先右都可以)。

 再來說Christian(基督徒)禱告時一定是十指相扣抱拳嗎?這也是個誤區,不論雙手合十(類似其他宗教,或見名畫「祈禱的手」
https://en.wikipedia.org/wiki/Praying_Hands_(D%C3%BCrer)
),或雙手合十,且右姆指按在左姆指上,或是十指相扣抱拳都是可以的,因為禱告用的是「心」,手的姿式只是幫助心不要亂跑。

 如果有人要辯的話,那麼請想想看「聖經有沒有規定禱告時,手要用什麼姿式?」,如果聖經沒規定,那麼是不是連「十指互扣抱拳」都不該使用?

 

2025-12-31

編輯HTML檔案來自製epub檔案

 以下是用來轉換成epub的最簡單HTML檔案,把它存成延伸檔名為html,再用瀏覽器來閱讀會比較容易懂我的意思。

(請用瀏覽器的View Page Source 來看以下內文的HTML格式語法

-------從這一行以下開始

 

編輯HTML檔案來產出epub檔案

使用Calibre把HTML轉成epub電子書格式.

目錄

前言
簡介
第一章 這是什麼?
第二章 什麼時候做?
第三章 怎麼做?

前言

"epub"格式檔案在諸多電子書閱讀器都能看,我們來自製"epub"檔案給閱讀器用。

因為"epub"格式的檔案在你調整字體大小之後,它會重新排列段落,方便閱讀,不像"PDF"檔的段落格式是固定不變,一旦調整字體大小,需要移動整個頁面才能讀到所有文字。


簡介

做法簡介:

編輯你的HTML檔案
你需要懂一些基本的HTML語法,才能有效的編排文字。
你需要"zip"程式工具或相同功用的程式。

你可以用任何文字編輯程式來編寫HTML檔案,這個檔案裡有一些基本需要用到的HTML控制語。

用zip來壓縮html檔案,並把壓縮後檔案的延伸名稱改成htmlz
在Linux作業系統裡,用這個指令"zip myfile.htmlz myfile.html"


第一章
這裡要說明以下事項

下載Calibre,可以選用AppImage格式,它的使用最方便。

到這裡下載Calibre

https://github.com/KushagraKarira/calibre-appimage/releases/
或是這裡
https://github.com/ivan-hc/Calibre-appimage/releases

授權給它,變成可執行檔,"chmod 755 Calibre-xxyyzz-x86_64.AppImage"


第二章
進行檔案轉換

執行Calibre(AppImage)
按一下"Add books"然後選你的htmlz檔案"myfile.htmlz"
按一下來編輯"Author name(作者名字)"

按一下"Convert books(轉換電子書)"然後選擇"epub"格式。

產出的"epub"檔案會自動存到$HOME/Calibre Library/ 下面的作者名之下


第三章
隨便舉例的一些內容

"這是第一行
然後是第二行
打一些斜體字,外加一些字
這是另外一行字"
這個有個註釋說明一些什麼

甲乙丙丁日月星

小蜜蜂轟轟轟


附註: 關於作者

-- 本書結束 --

-------到這一行以上為止

2025-11-30

華人教會與反智主義

 最近讀了「中國教會的反智主義」一書,其實書中所謂「中國教會」應該是泛指「華人教會」,不管是中國境內、美洲、台灣。

 我比較關心的當然是台灣教會,除了幾個來自英、美、北歐國家宣教的主流宗派,其他很多是源自中國教派,前幾年的「反同、恐同」運動,不外也是根基於「反智」,因為「反智」的思考,讓一些教會不願意和現實社會對話,寧願固守著他們自以為是的「真理」來與社會對抗,既不願意拿出「愛」給這個社會,也不願跟社會對話、更不願去理解現代社會。

 該書作者「葛牧之」現居溫哥華,書中第一章第三節舉出「反智主義」的幾個主要特徵,這裡用我自己的話來解讀:

 ➀反對、排斥神學:神學是基督徒對信仰進行理性的反思與澄清,這是神學的基本功用,確保信仰能走在對的道路上。但是反智主義者最排斥的就是對信仰的理性反思。最基本、最直接的反應便是對神學的敵視。我認為這是從清末民初之後,中國人普遍喪失民族自尊心,這是一體兩面,因為自卑演變成自大,凡是西方的思想都是低劣的,都要堅定的拒絕,所以神學也必需排斥掉,他們只需翻一翻聖經,就說『哈!這個我也會嘛!』就自創俱有中國特色的基督教來了。

 ➁封閉獨斷的信仰:以個人片面的理解,擴大成聖經的絕對真理,還不容他人質疑。專斷的以字面解經、靈意解經,根本脫離聖經事件的時空、人文背景。抓住新教的『唯獨聖經』變成『唯讀聖經』,不讀歷史、不讀哲學、不讀人文,認為只要一字一句的讀聖經,就能理解其中奧義,簡單的可以憑直覺、靈動來理解聖經。

 ➂二元對立的思維方式:這個最容易發現,當你接觸到的教徒一天到晚把「魔鬼」「撒旦」掛在嘴邊,「這個是魔鬼」、「那個是撒旦」,就可以確定他們就是「反智主義」的信徒而非耶穌基督的信徒。當年甚至有個教派反智反到禁止信徒閱讀「哈利波特」小說,說這是魔鬼的魔法書,碰不得。二元對立的思考方式很簡單,非白即黑,不必花腦筋、時間去思考對錯,只要遵照上面有權勢的人交待的去行,日子簡單易過。

 台灣的教會到現在還是普遍存在這樣的反智主義現象,希望這本書能給有思考能力的人帶來反思,能帶領台灣的教會走出反智主義的困境,成為真正耶穌基督的門徒。

2025-10-28

簡單打出數學、物理常用符號

 網路上查詢怎麼打出一些非英文符號,看到的都是叫你按住Ctrl+Shift+U然後再按一些鍵值,這樣其實很不方便。所以自己動手定義幾個常用符號,然後自己記得怎麼按,這樣最方便!

 如果想要打出除了「中文和英文」以外的文字,可以很簡單的用setxkbmap來達成。
指令為 setxkbmap -layout XY
XY 就是位於 /usr/share/X11/xkb/symbols/ 目錄下的各種語言檔名。

 setxkbmap -layout gr 就能打出希臘字母(Q、A、Z三排)
;ςερτυθιοπ
ασδφγηξκλ 
ζχψωβνμ

執行 setxkbmap -layout us 就回到大家常用的英文模式

 但是要在希臘式鍵盤裡再找出少數常用符號,似乎不是很愉快,所以乾脆把幾個常用符號定義在我們自己認為好記的位置,應該會更容易使用。

 像是一些常用的數學、物理符號,自己把它定義到英文模式下,來進行切換使用,而不必切換到希臘文模式。

 可以copy一個 /usr/share/X11/xkb/symbols/ 目錄下的檔,自己修改成別的鍵值,例如
sudo cp us myus

 再把「myus」裡面的 9, 0, -, = 四個鍵改成希臘文一些物理、數學常用的符號 πλ, °÷, θΩ, ≠±

 原本是:
    key <AE09>  {[       9,      parenleft      ]};
    key <AE10>  {[       0,      parenright     ]};
    key <AE11>  {[   minus,      underscore     ]};
    key <AE12>  {[   equal,      plus           ]};
修改成:
    key <AE09>  {[ Greek_pi,     Greek_lambda   ]};
    key <AE10>  {[ degree,       division       ]};
    key <AE11>  {[ Greek_theta,     Greek_OMEGA ]};
    key <AE12>  {[   notequal,    plusminus     ]};

 然後存成別的檔名「myus」,然後執行
setxkbmap -layout myus 就能直接打物理、數學符號,再執行
setxkbmap -layout us   又切換回正常英文鍵盤模式。

 這裡是隨便舉「9,0,-,=」四個鍵來修改,你可以定義到任何你認為好用好記的鍵位,只要你在寫程式或文章時沒用到「9,0,-,=」就不需切換回標準英文鍵模式。

 比較好用的方式是把setxkbmap -layout myus(或us) 定義到某個快捷鍵,例如Ctrl+Win+F9,並且讓它「toggle」us/myus,這樣兩種模式的切換就只需「按一下」這個組合鍵就能在純英文鍵盤和自己定義的英文鍵盤之間瞬間切換。

2025-09-23

把Linux桌面投射到其他電腦的螢幕

 最近剛好用到透過AirPlay去連一台三爽螢幕,不過是使用MacOS連上去的,也就是讓MacOS的機器不需實體就能連上外接的三爽螢幕。查了一下有人寫了給Linux用的Java based程式,所以來試試看能不能用。

 從這個github clone程式:
https://github.com/openairplay/open-airplay
以及下載預先compile好的aprplay.jar
https://github.com/openairplay/open-airplay/releases/tag/0.1.1

 安裝相關程式並執行compile:
apt-get install -y default-jdk
apt-get install -y maven
cd open-airplay-master/Java
ant

 產生jmdns.jar

接著執行:
java -cp "build/airplay.jar:lib/jmdns.jar" com.jameslow.AirPlay

它開始搜尋目前LAN裡的AirPlay,找不到的話當然沒有任何可連上的目標,如果有,就會顯示它的名稱、IP,點下去之後,可以選解析度。

然後,就沒有然後了!

 換用MacOS的機器去連的話,找到AirPlay所提供的螢幕之後點下去,會有一組4位數顯示在對方的螢幕(這要看AirPlay怎麼設定條件,一般是這樣),這時就打在你所操作MacOS這台機器,然後就連上了,等同一個外接螢幕。證明給Linux用的這個Java程式無法如預期的工作。

畢竟AirPlay用的是阿婆公司私有的protocol,並沒有open source,所有試圖連接AirPlay的辦法應該都是走reverse engineering得到的,沒有預期的結果也很正常,不必失望。 

 這時發現另一個螢幕投射程式
https://github.com/pavlobu/deskreen
可以下載它compile好的可執行程式,包括Linux, Mac, Windows都有,不過已經三年沒再更新。

 執行 deskreen 之後它會產生一串位置的 link(例如:http://192.168.1.100:3131/123456), 任何在你同一個 LAN 裡的電腦都可以用瀏覽器打開這個連接字串,然後你在本身電腦上面按下允許,你的螢幕就能投射到對方那一台電腦的螢幕上了(它單純就是投影過去,對方不能操作你的電腦),好像很簡單。

 馬上來試,立即成功使用。不過這跟阿婆的AirPlay無關。

也就是只要有瀏覽器的電腦(包括手機、平板、一般電腦)都能被執行deskreen的電腦投影過去,當成另一台外接螢幕。 

2025-08-28

LINE公司將要停止Chrome版Extension的服務

 LINE目前只提供Android、iPhone、Windows、MacOS環境的軟體,從來就沒提供Linux版LINE,在Linux環境唯一的辦法是使用Chrome延伸(Extension)LINE,這是一個閹割版的LINE,它不能用來講話、不能閱讀筆記本、不能刪除群組裡個別留言。

 以另一個通訊軟體Telegram來看,它除了有Android、iPhone、Windows、MacOS環境的軟體之外,還有Linux環境用的獨立軟體,此外它更有網頁版,就是只要用瀏覽器登入https://web.telegram.org之後,不必安裝任何額外軟體或Extension就能使用Telegram,真的是考慮到所有使用者的方便。

 反觀LINE,日前LINE母公司韓國Naver公司公告,即將停止LINE軟體Chrome版的服務,也就是除了Android手機、iPhone手機、MacOS電腦、Windows電腦安裝LINE軟體之外,完全沒有辦法使用LINE來通訊。

 從新聞報導上看到,這個決策首先影響到的是視障者,固然LINE有手機版軟體,手機對視力正常人而言沒有什麼問題,但對視障者來說只能靠手機的語音提示來操作,因為手機的鍵盤是虛擬的,它是一整個平面,而非實體鍵盤可以靠觸摸操作,所以在手機上打字有相當的困難。

 視障者唯有使用Chrome加LINE延伸(Extension),因為使用實體鍵盤,對視障者而言較方便操作實體鍵盤。

 以目前電腦版LINE軟體(Windows或MacOS)來說,它的介面完全不考慮視障者的使用,於是無法被電腦上語音輔助軟體有效讀取,讓視障者無法操作。唯有依附Chrome的LINE延伸軟體因為它的介面是瀏覽器本身,才能跟電腦本身的語音輔助軟體順利互動,讓視障者方便聽取使用。

 其次LINE取消Chrome延伸軟體影響到的,就是『不用Windows不用MacOS』而是用Linux的人。因為LINE不願意提供Linux環境的軟體,因此目前Linux的LINE用戶最多人用的就是Chrome的延伸LINE軟體。

 既然是閹割版,就是只有對話、貼圖等幾個最基本的功能,一旦沒有了Chrome延伸LINE,等同不能用LINE了。

 使用scrcpy成了使Linux電腦環境下,使用LINE的最後一條生路!

 scrcpy並不是針對使用LINE而設計的,它是把Android手機整個畫面『投影』到Linux電腦,在電腦上用滑鼠、鍵盤來操作手機上的任何軟體,藉此來操作LINE。

 首先移除Linux裡原有的scrcpy以及adb,下載最新版scrcpy(因為在個別distro裡的scrcpy有些bug,而3.3.1目前使用上沒發現問題)

 https://github.com/Genymobile/scrcpy/releases/tag/v3.3.1

 解開後把adb, scrcpy, scrcpy-server放在你的$PATH路徑

➀Android手機連上跟Linux電腦同一個LAN裡的Wifi,然後看它的IP(例如192.168.8.8)
➁Android用USB連到Linux電腦
➂指令: adb devices (確認Android手機已連接好)
➃指令: adb tcpip 5555 (設定電腦端走TCP/IP協定並透過port 5555)
➄把Android手機的USB拔除(斷開與Linux電腦的實體連接,從此之後Android手機不必再次透過USB連到Linux電腦,只需透過Wifi即可操作) 
➅指令: adb connect 192.168.8.8:5555
這時會顯示: connected to 192.168.8.8:5555
➆指令: scrcpy --tcpip=192.168.19.31 或只用scrcpy --tcpip
也可以加 -S(大寫) 讓電腦與手機連線後,手機螢幕不亮
scrcpy --tcpip -S --shortcut-mod=lalt <-- 最後這個參數是指定『左Alt』使為操作鍵
加參數 --screen-off-timeout=90 指定90秒後螢幕關閉、中斷跟電腦連線
手機螢幕暗掉之後,用滑鼠右鍵按一下可以重新點亮

 連接後要輸入密碼,先按住滑鼠右鍵把手機螢幕往上拉,露出輸入密碼的欄位,輸入密碼後連線會斷開,然後重新執行一次scrcpy --tcpip -S --shortcut-mod=lalt,這時就不必再打密碼。
左Alt+→ 螢幕順時針轉
左Alt+← 螢幕道時針轉
左Alt+↑ 音量加大
左Alt+↓ 音量減少
左Alt+r 把螢幕顯示由垂直轉成橫向

 把Android手機文字拷備到Linux電腦
➀用滑鼠在Android手機上長按,標示一個區域
➁按Ctrl-c
➂滑鼠回到Linux電腦,按Ctrl-v,把剛才的標示區文字貼到Linux電腦

 從Linux電腦把文字拷備到Android手機
➀在Linux電腦把文字拷備(不同軟體裡有不同的按鍵方式)
➁把滑鼠移到Android螢幕上,按Ctrl-v

 在Linux電腦查詢Android手機裡的目錄
adb shell ls -l
查詢OpenCamera所拍攝的照片
adb shell ls -l /storage/sdcard0/DCIM/OpenCamera/
把某一張照片從手機上抓到Linux電腦裡
adb pull /storage/sdcard0/DCIM/OpenCamera/IMG_20250808_085918.jpg
把Telegram.apk上傳到Android手機
adb push Telegram.apk /storage/sdcard0/Download/

 LINE推新聞給你、叫你用LINE Pay買東西、LINE Music、LINE Game、……LINE包山包海,口袋賺滿賺翻,不提供Linux版軟體也就算了,還要終止Chrome這個閹割版LINE的服務,真的是貪得無厭的廠商!

 LINE公司的經營者心裡持的大概是『給你用Chrome延伸版LINE是施捨,老子現在連施捨都不願意了,怎樣?咬我啊!』這樣的心態吧?!

 

2025-07-10

60%鍵盤最好用

自從使用鍵盤定義軟體keyd加上home row概念之後,改變了以前一直認為要用全幅鍵盤的想法。回顧鍵盤實際使用的經驗,全幅鍵盤確實有很多鍵幾乎從來不會去按。

註:home row指的是「ASDF JKL;」這一排鍵位,手指平常會停放在這個基準位。

全幅鍵盤指又稱為100%鍵盤,或是叫做108鍵,右邊九宮數字以及Prtscr/Scroll/Pause從來不用,82鍵或叫75%鍵盤,最上面12個Fx鍵也幾乎用不到。

68鍵鍵盤也叫做65%鍵盤,61鍵比起68鍵少了「上、下、左、右、Home、End、Del」七個鍵,又叫做60%鍵盤。

鍵盤經由keyd或kanata的軟體自行定義後,要用什麼鍵就有什麼鍵,像常用的上、下、左、右、Home、End、PgUp、PgDn、Del、Backspace、Esc這幾個鍵都可以藉由軟體定義安排到更方便按的位置。

在使用全幅鍵盤(108鍵)時,常常要用眼睛去看右手右邊的那些鍵,確定位置才按。但61鍵經過自行定義把一些常用鍵安排到home row之後,根本不必用眼睛去看位置,手指可以一直保持在home row的範圍,就能操控所有鍵的效果,不但不必跨越長距離去按,更是可以關燈操作,所以是最好用的鍵盤。

筆記型電腦受到物理上的限制,會把一些鍵做得比較小,或是做得位置不好按,或是必需按複合鍵「Fn」加上某個鍵來達到其他功能,但「Fn」鍵位置往往不好搭配要按的某個鍵位、距離,手的移動有諸多不便。

在OS裡安裝keyd或kanata,操作習慣之後可以讓各種電腦鍵盤,包括筆記型電腦或外接式機械鍵盤有統一的操作方式之外,更可以讓鍵盤的操作變得很方便、快速。

註:某些61鍵的鍵盤在不使用keyd或kanata情況下,「上、下、左、右」鍵可以先按住Fn再按按一次W,放開之後A=左、S=下、W=上、D=右,按住Fn再按一次W,便取消A,S,W,D的上下左右功能,但還是不如用keyd或kanata自行定義來得好用。

再來談到Alice佈局鍵盤,其實在Alice名稱佈局的鍵盤出現之前,十幾年前就已經有這種左右手鍵位分開的鍵盤在販售,以前稱為「人體工學鍵盤」。我一直有個迷思,認為這樣的佈局才符合人體工學。直到最近使用鍵盤定義軟體搭配61鍵的鍵盤,才破除這個迷思。

其實整齊排式式(非左右分離、非Alice)的傳統型鍵盤,我們在打字時的手腕角度其實沒有很大的彎曲,並不違反手腕、手指的使用。

因為基本上手指擺放位置會是
A: 左小指
W: 左無名指
E: 左中指
F: 左食指
space: 左拇指、左拇指
J: 右食指
I: 右中指
O: 右無名指
;: 右小指
所以手腕仍然近乎伸直,不致於彎曲不舒服。

這樣的位置適合把兩鍵組合起來(一起按)當某一個功能使用。
W+E
E+F
I+J
I+O

以及稍微移動就能按到的各種延伸變化:
U+H
H+B
R+G
G+B
2+3
9+0
X+C
C+V
,+.
,+M
E+R
U+I

總計有16個組合位置,可供定義出我們最常用的功能。而61+16=77鍵,已經非常夠用了。

這樣的組合鍵盤佈局,按的時候完全不用眼睛看一下,就包括了Home, End, PgUp, PgDn, Del, Backspace, Insert, Up, Down, Left, Right 11個鍵功能,16-11=5,還剩五個空位,可以重複定義,例如定義兩個Home, 兩個PgUp, 兩個Esc……等等。

總之經由鍵盤定義軟體(如keyd, kanata)設定後,61鍵的鍵盤不但夠用而且操作方便,讓桌面有更多空間。

2025-06-24

給kanata更多滑鼠的控制項目

增加一個滑鼠layer "mmouse" 啟動按鍵為"e"

按住 "e" 不放,加按以下各鍵,達到跟用滑鼠一樣的作用

  i = 往上移動
  j = 往左移動
  k = 往下移動
  l = 往右移動
  (同時按 i+l = 往右上移動,其餘類推)

  在移動游標的同時,左手加按
  t = 加速
  f = 減速
  s = 最慢速

  w = 壓下滑鼠左鍵不放
  r = 壓下滑鼠右鍵不放

  y = 滾輪向前
  h = 滾輪向後
  u = 滾輪向左
  o = 滾輪向右

(defcfg
;; You can set the value below to no if you only use the keys defined in defsrc.
  process-unmapped-keys yes
;;  danger-enable-cmd yes
)

(defsrc
  grv  1    2    3    4    5    6    7    8    9    0    -    =    bspc
  tab  q    w    e    r    t    y    u    i    o    p    [    ]    \
  caps a    s    d    f    g    h    j    k    l    ;    '    ret
  lsft z    x    c    v    b    n    m    ,    .    /    rsft up
  lctl lmet lalt          spc          ralt rmet rctl    left down right
)

(defvar
  streak-count 3
  streak-time 325
  tap-timeout 200
  hold-timeout 500
  hold-time-slow 300
  chord-timeout 50
)

(deftemplate charmod (char mod)
  (switch 
    ((key-timing $streak-count less-than $streak-time)) $char break
    () (tap-hold-release-timeout $tap-timeout $hold-timeout $char $mod $char) break
  )
)

(defchords piano $chord-timeout
  ( 2 ) 2
  ( 3 ) 3
  ( q ) q
  ( w ) (tap-hold 200 200 w (layer-while-held himep))
  ( e ) (tap-hold 200 200 e (layer-while-held mmouse))
  ( r ) r
  ( f ) (t! charmod f lmet)
  ( g ) g
  ( 2 3 ) esc
  ( w e ) A-left
  ( e f ) home
  ( r g ) C-S--
  ( x ) x
  ( c ) c
  ( v ) v
  ( b ) b
  ( 9 ) 9
  ( 0 ) 0
  ( - ) -
  ( u ) u
  ( i ) i
  ( o ) o
  ( p ) p
  ( h ) h
  ( j ) (t! charmod j rmet)
  ( m ) m
  ( , ) ,
  ( . ) .
  ( x c ) A-tab
  ( c v ) mmid
  ( v b ) enter
  ( i o ) A-right
  ( i j ) end
  ( u h ) pgup
  ( h b ) pgdn
  ( 9 0 ) bspc
  ( m , ) C-f12
  ( , . ) C-tab
)

(deflayermap (main)
  #| for some Notebook combine up/down/left/right with pgup/pgdn/home/end |#
  ;; KEY (tap-hold tap-time hold-time ACTION (layer-while-held LAYER))
  ;; KEY (tap-dance timeout ACTIONa ACTIONb ACTIONc)
  up (tap-dance 170 (up pgup))
  down (tap-dance 170 (down pgdn))
  home (tap-dance 200 (home end))
  lsft (tap-hold 200 200 (tap-dance 180 ((macro M-a 60 lctl) (macro M-f 60 lctl))) lsft)
  rsft (tap-hold 200 200 (tap-dance 180 ((macro M-f 60 lctl) (macro M-a 60 lctl))) rsft)
  caps (tap-hold 200 200 C-spc (layer-while-held capc))
  2 (chord piano 2)
  3 (chord piano 3)
  q (chord piano q)
  w (chord piano w)
  e (chord piano e)
  r (chord piano r)
  a (t! charmod a lalt)
  s (t! charmod s lsft)
  d (t! charmod d lctl)
  f (chord piano f)
  g (chord piano g)
  x (chord piano x)
  c (chord piano c)
  v (chord piano v)
  b (chord piano b)
  9 (chord piano 9)
  0 (chord piano 0)
  - (chord piano -)
  u (chord piano u)
  i (chord piano i)
  o (chord piano o)
  p (chord piano p)
  h (chord piano h)
  j (chord piano j)
  k (t! charmod k rctl)
  l (t! charmod l rsft)
  ; (t! charmod ; ralt)
  m (chord piano m)
  , (chord piano ,)
  . (chord piano .)
  rctl (tap-hold 200 200 C-f12 rctl)
  spc  (tap-hold 200 200 spc (layer-while-held nav))
)

(deflayermap (nav)
  i up
  j left
  k down
  l right
  h home
  ; end
  y bspc
  u del
  g `
  f esc
  m mute
  , vold
  . volu
  q 1 ;; kp1
  w 2 ;; kp2
  e 3 ;; kp3
  a 4 ;; kp4
  s 5
  d 6
  z 7
  x 8
  c 9
  v 0
)

(deflayermap (capc)
  g `
  f esc
  i (mwheel-up 50 120)
  j mltp
  k mmtp
  l mrtp
  , (mwheel-down 50 120)
  u (mwheel-left 50 120)
  o (mwheel-right 50 120)
)

(deflayermap (himep)
  o (macro . o spc)
  k (macro . k spc)
  i (macro . i spc)
  y (macro . y spc)
  p (macro . p spc)
  h (macro . h spc)
  j (macro . j spc)
  . (macro . spc)
  f (macro . f spc)
  g (macro . g spc)
)

(deflayermap (mmouse)
  t (movemouse-speed 200)
  f (movemouse-speed 50)
  s (movemouse-speed 25)

  w mlft 
  r mrgt

  y (mwheel-up 50 120)
  h (mwheel-down 50 120)
  u (mwheel-left 50 120)
  o (mwheel-right 50 120)

  i (movemouse-up 4 3)
  j (movemouse-left 4 3)
  k (movemouse-down 4 3)
  l (movemouse-right 4 3)
)

2025-06-18

kanata鍵盤程式可以在三種OS使用

用了一陣子keyd之後,覺得可惜的是它只能在Linux用,沒辦法推薦給更多非Linux使用者。所以換用kanata看看,一開始被它的設定檔搞得一頭霧水,慢慢摸索終於把keyd用的default.conf 轉換過來,在kanata也能使用相同於keyd的操作方式。

https://github.com/jtroo/kanata
這裡有compile好的可執行檔可以下載來用
https://github.com/jtroo/kanata/releases/tag/v1.8.1

kanata 最大優點是能跨三種OS使用,Linux, Windows, MacOS(某些功能受限)。兩者的設定檔不同,不過有了keyd的設定概念,轉來kanata用也不會太難懂。

kanata 有一項keyd沒有的功能,就是tap-dance

可以定義某個鍵按幾下是什麼功能,例如

Home按一下是Home
Home按兩下是End
Left按一下是Left
Left按兩下是Home
當然不止能按兩下,也可以定義Home按三下=up、按四下=down……,不過按那麼多下其實也不是很好用。

(上面說的「按幾下」是說快速連續按)
以下是我的kanata.kdb 裡面的功能跟我在keyd 定義方式一樣。


(defcfg
  process-unmapped-keys yes
)

(defsrc
  grv  1    2    3    4    5    6    7    8    9    0    -    =    bspc
  tab  q    w    e    r    t    y    u    i    o    p    [    ]    \
  caps a    s    d    f    g    h    j    k    l    ;    '    ret
  lsft z    x    c    v    b    n    m    ,    .    /    rsft
  lctl lmet lalt          spc          ralt rmet rctl
)

(defvar
  streak-count 3
  streak-time 325
  tap-timeout 200
  hold-timeout 500
  hold-time-slow 300
  chord-timeout 50
)

(deftemplate charmod (char mod)
  (switch 
    ((key-timing $streak-count less-than $streak-time)) $char break
    () (tap-hold-release-timeout $tap-timeout $hold-timeout $char $mod $char) break
  )
)

(defchords piano $chord-timeout
  ( 2 ) 2
  ( 3 ) 3
  ( q ) q
  ( w ) (tap-hold 200 200 w (layer-while-held himep))
  ( e ) (tap-hold 200 200 e (layer-while-held mmouse))
  ( r ) r
  ( f ) (t! charmod f lmet)
  ( g ) g
  ( 2 3 ) esc
  ( w e ) A-left
  ( e f ) home
  ( r g ) C-S--
  ( x ) x
  ( c ) c
  ( v ) v
  ( b ) b
  ( 9 ) 9
  ( 0 ) 0
  ( - ) -
  ( u ) u
  ( i ) i
  ( o ) o
  ( p ) p
  ( h ) h
  ( j ) (t! charmod j rmet)
  ( m ) m
  ( , ) ,
  ( . ) .
  ( x c ) A-tab
  ( c v ) mmid
  ( v b ) enter
  ( i o ) A-right
  ( i j ) end
  ( u h ) pgup
  ( h b ) pgdn
  ( 9 0 ) bspc
  ( m , ) C-f12
  ( , . ) C-tab
)

(deflayermap (main)
  ;; for some Notebook combine up/down/left/right with pgup/pgdn/home/end
  ;; use tap-dance to set one key with multiple functions by tapping more than once
  ;; KEY (tap-dance timeout ACTIONa ACTIONb ACTIONc)
  up (tap-dance 170 (up pgup))
  down (tap-dance 170 (down pgdn))
  home (tap-dance 200 (home end))
  lsft (tap-hold 200 200 (tap-dance 180 ((macro M-a lctl) (macro M-f lctl))) lsft)
  rsft (tap-hold 200 200 (tap-dance 180 ((macro M-f lctl) (macro M-a lctl))) rsft)
  caps (tap-hold 200 200 C-spc (layer-while-held capc))
  2 (chord piano 2)
  3 (chord piano 3)
  q (chord piano q)
  w (chord piano w)
  e (chord piano e)
  r (chord piano r)
  a (t! charmod a lalt)
  s (t! charmod s lsft)
  d (t! charmod d lctl)
  f (chord piano f)
  g (chord piano g)
  x (chord piano x)
  c (chord piano c)
  v (chord piano v)
  b (chord piano b)
  9 (chord piano 9)
  0 (chord piano 0)
  - (chord piano -)
  u (chord piano u)
  i (chord piano i)
  o (chord piano o)
  p (chord piano p)
  h (chord piano h)
  j (chord piano j)
  k (t! charmod k rctl)
  l (t! charmod l rsft)
  ; (t! charmod ; ralt)
  m (chord piano m)
  , (chord piano ,)
  . (chord piano .)
  rctl (tap-hold 200 200 C-f12 rctl)
  spc  (tap-hold 200 200 spc (layer-while-held nav))
)

(deflayermap (nav)
  i up
  j left
  k down
  l right
  h home
  ; end
  y bspc
  u del
  g `
  f esc
  m mute
  , vold
  . volu
  q 1 ;; kp1
  w 2 ;; kp2
  e 3 ;; kp3
  a 4 ;; kp4
  s 5
  d 6
  z 7
  x 8
  c 9
  v 0
)

(deflayermap (capc)
  g `
  f esc
  i (mwheel-up 50 120)
  j mlft
  k mmid
  l mrtp ;; mrgt
  , (mwheel-down 50 120)
  u (mwheel-left 50 120)
  o (mwheel-right 50 120)
)

(deflayermap (himep)
  o (macro . o spc)
  k (macro . k spc)
  i (macro . i spc)
  y (macro . y spc)
  p (macro . p spc)
  h (macro . h spc)
  j (macro . j spc)
  . (macro . spc)
  f (macro . f spc)
  g (macro . g spc)
)

2025-05-22

沒辦法回報google地圖上的錯誤

發現這個地方絕對不是google地圖標示的「田寮河」。

這裡是荒郊野外一條小溪。

田寮河南側是東明路接仁一路,北側是東信路接信一路,流經基隆女中前面,向西直到文化中心進入基隆港的一條至少20公尺寬的河流。

按照說明,點了地圖進入,一一填寫,最後按「提交」卻完全沒反應。
為什麼不讓使用著很簡單的就能貼個圖、寫幾行字說明,簡單就能回報錯誤?
算了,貼在這裡就好了。