lazarus缺臨門一腳(中文輸入問題) [論壇 - Ubuntu 程式設計]


正在瀏覽:   1 名遊客


 到底部   前一個主題   下一個主題  [無發表權] 請登錄或者註冊

« 1 2 (3)


回覆: lazarus缺臨門一腳(中文輸入問題)
會員三級
註冊日期:
2009/1/10 10:33
所屬群組:
已註冊使用者
等級: 14
HP : 0 / 340
MP : 81 / 14293
EXP: 60
離線
這個問題終於在Lazarus 2.2.2 得到令人滿意的解決方案。
有中國網友深入原始碼,終於找出需要修改的相關檔案,
並寫出一次性修改的sh 指令(如附),
將所有相關檔案做修補,
然後重新編譯 Lazarus IDE 就可以了。

目前測試確定 fcitx 與 ibus 都可用,
但是gcin 可能是結構不容 還是不行

2022/9/8 12:55
應用擴展 工具箱
回覆: lazarus缺臨門一腳(中文輸入問題)
會員三級
註冊日期:
2009/1/10 10:33
所屬群組:
已註冊使用者
等級: 14
HP : 0 / 340
MP : 81 / 14293
EXP: 60
離線
#!/bin/bash

get_char()
{
SAVEDSTTY=`stty -g`
stty -echo
stty cbreak
dd if=/dev/tty bs=1 count=1 2> /dev/null
stty -raw
stty echo
stty $SAVEDSTTY
}

pause()
{
# 啟用功能的開關 1開啟|其它不開啟
enable_pause=1

# 判斷第一個參數是否為空,約定俗成的寫法
if [ "x$1" != "x" ]; then
echo $1
fi
if [ $enable_pause -eq 1 ]; then
# echo "Press any key to continue!"
echo "按任意鍵繼續..."
char=`get_char`
fi
}


echo ===============================================================
echo =
echo = 本腳本給運行於Linux上的Lazarus(現有版本為2.2.2)代碼編輯器增加中文輸入功能
echo =
echo = 用法:
echo =
echo = 把該腳本保存在lazarus所在同層目錄(目錄名稱就是2.2.2),然后執行
echo =
echo = sh ./add_chinese_input_to_lazarus.sh
echo =
echo = ---------------------------------------------------------------
echo =
echo = 請注意:
echo =
echo = 該腳本不能重復執行,在執行前請先確認是首次執行
echo =
echo = 如果中止執行請按 Ctrl + C 退出
echo =
echo = 而且最好在執行此腳本前 事先做過Lazarus 重新編譯之所有設定 並成功做過重新編譯
echo =
echo ===============================================================


pause


sed -i 's/{$mode objfpc}{$H+}/{$mode objfpc}{$H+}\n\n{$ifdef linux}\n {$define WITH_GTK2_IM}\n{$endif}/g' 2.2.2/components/synedit/lazsyngtk2imm.pas

sed -i 's/{$mode objfpc}{$H+}/{$mode objfpc}{$H+}\n\n{$ifdef linux}\n {$define WITH_GTK2_IM}\n{$endif}/g' 2.2.2/lcl/interfaces/gtk2/gtk2globals.pp

sed -i 's/{$IFNDEF USE_GTK_MAIN_OLD_ITERATION}/{$ifdef linux}\n {$define WITH_GTK2_IM}\n{$endif}\n\n{$IFNDEF USE_GTK_MAIN_OLD_ITERATION}/g' 2.2.2/lcl/interfaces/gtk2/gtk2widgetset.inc

sed -i 's/{off $DEFINE VerboseUpdateSysColorMap}/{off $DEFINE VerboseUpdateSysColorMap}\n\n{$ifdef linux}\n {$define WITH_GTK2_IM}\n{$endif}/g' 2.2.2/lcl/interfaces/gtk2/gtk2proc.inc

sed -i 's/{$DEFINE SYNEDIT_INCLUDE}/{$ifdef linux}\n {$define Gtk2IME}\n{$endif}\n\n{$DEFINE SYNEDIT_INCLUDE}/g' 2.2.2/components/synedit/synedit.inc

echo
echo
echo "代碼更改完畢,請啟動lazarus,然後從功能選項 Tools --> Build Lazarus with Profile: Normal IDE 重新編譯Lazarus,以使修改生效。"
echo

2022/9/8 13:00
應用擴展 工具箱

« 1 2 (3)

 [無發表權] 請登錄或者註冊


可以查看帖子.
不可發帖.
不可回覆.
不可編輯自己的帖子.
不可刪除自己的帖子.
不可發起投票調查.
不可在投票調查中投票.
不可上傳附件.
不可不經審核直接發帖.