像使用盒子/LibreELEC一樣使用PVE直裝的Kodi身笤,實(shí)現(xiàn)遙控器啟停

本文為《PVE安裝Kodi》系列文章的一部分。

本文同步發(fā)表在我的個(gè)人博客https://evine.win貌笨。

前言

在《PVE 直接安裝最新版 Kodi》一文的評論中诬像,有網(wǎng)友提出能不能像操控電視盒子/LibreELEC/CoreELCE一樣用遙控器操控PVE中直裝的Kodi屋群,實(shí)現(xiàn)打開和關(guān)閉Kodi,這是個(gè)好想法坏挠,我也認(rèn)為這樣會(huì)大方便PVE中直裝的Kodi的使用芍躏,所以學(xué)習(xí)了相關(guān)udev、udevadm癞揉、evtest纸肉、input溺欧、input remap相關(guān)知識(shí),終于實(shí)現(xiàn)了這個(gè)非常便于使用的功能柏肪。

參考資料

udev, udevadm, evtest, input_remap_utilities, evsieve

思路

用遙控器操控PVE中直裝的Kodi姐刁,實(shí)現(xiàn)打開和關(guān)閉Kodi,這個(gè)場景需要在無桌面環(huán)境下烦味,脅持遙控器的電源鍵聂使,讓它的作用變更為打開/關(guān)閉Kodi,所以只是將電源鍵映射為其他鍵是不行的谬俄,而是需要脅持遙控器的電源鍵柏靶,讓它變更為運(yùn)行某個(gè)腳本,然后由腳本實(shí)現(xiàn)打開/關(guān)閉Kodi溃论。

根據(jù) input_remap_utilities 列出的幾個(gè)按鍵映射工具屎蜓,只有 evsieve 可以在無桌面環(huán)境下脅持按鍵并運(yùn)行指定腳本,實(shí)現(xiàn)上述場景钥勋。

準(zhǔn)備工作

以下相關(guān)命令均為root用戶執(zhí)行的炬转。

如果需要新建文件,請直接在Linux環(huán)境中使用nano XXXX創(chuàng)建算灸,請不要在Windows環(huán)境中創(chuàng)建后再上傳扼劈。

所有的輸入設(shè)備都由udev程序識(shí)別并保存在/dev/input下,通過輸入ls -l /dev/input可以查看到許多eventX的設(shè)備菲驴。設(shè)備的編號(hào)會(huì)隨著外設(shè)的插入或卸載以及開關(guān)機(jī)的變化而變化荐吵,也就是說電源鍵所在的輸入設(shè)備的eventXX這個(gè)編號(hào)不是固定的,所以我們不能直接使用/dev/input/eventX來作為后續(xù)要脅持的輸入設(shè)備赊瞬。運(yùn)行ls -l /dev/input/by-id先煎,udev會(huì)在這個(gè)目錄下創(chuàng)建易于識(shí)別的、唯一的森逮、不隨外設(shè)的插入卸載或開關(guān)機(jī)而變化的軟連接榨婆,無論X如何變化磁携,它們都將指向正確的設(shè)備褒侧。

我的遙控器是自帶接收器的2.4G無線遙控器,插上接收器谊迄,通過evtest程序先找出遙控器電源鍵在什么設(shè)備上闷供。

# 安裝evtest
apt install evtest

# 運(yùn)行evtest
evtest --grab

# evtest會(huì)列出所有可用的輸入設(shè)備,可以看到我的遙控器有event5-event8共4個(gè)設(shè)備
# 你可以選擇具體的編號(hào)來進(jìn)行測試统诺,找到每個(gè)設(shè)備分別能控制哪些按鍵
# 經(jīng)過測試歪脏,我發(fā)現(xiàn)我遙控器的電源鍵在event8,也就是2.4G Composite Devic System Control這個(gè)設(shè)備
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:      Power Button
/dev/input/event1:      AT Translated Set 2 keyboard
/dev/input/event2:      VirtualPS/2 VMware VMMouse
/dev/input/event3:      VirtualPS/2 VMware VMMouse
/dev/input/event4:      QEMU QEMU USB Tablet
/dev/input/event5:      2.4G Composite Devic
/dev/input/event6:      2.4G Composite Devic Mouse
/dev/input/event7:      2.4G Composite Devic Consumer Control
/dev/input/event8:      2.4G Composite Devic System Control
/dev/input/event9:      PC Speaker
Select the device event number [0-9]:8   # 手動(dòng)輸入要測試的設(shè)備編號(hào)粮呢,如果不清楚電源鍵在什么設(shè)備上婿失,你可以一個(gè)一個(gè)試出來
Input device ID: bus 0x3 vendor 0x627 product 0x697d version 0x110
Input device name: "2.4G Composite Devic System Control"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 116 (KEY_POWER)
    Event code 142 (KEY_SLEEP)
    Event code 143 (KEY_WAKEUP)
  Event type 4 (EV_MSC)
    Event code 4 (MSC_SCAN)
Properties:
Testing ... (interrupt to exit)  # 按下電源鍵钞艇,evtest輸出以下結(jié)果,沒有反應(yīng)表示設(shè)備擇取不對
Event: time 1669209045.421999, type 4 (EV_MSC), code 4 (MSC_SCAN), value 10081
Event: time 1669209045.421999, type 1 (EV_KEY), code 116 (KEY_POWER), value 1
Event: time 1669209045.421999, -------------- SYN_REPORT ------------
Event: time 1669209045.422021, type 1 (EV_KEY), code 116 (KEY_POWER), value 0
Event: time 1669209045.422021, -------------- SYN_REPORT ------------

# Ctrl+C退出

通過測試豪硅,我知道了我遙控器的電源鍵的鍵碼為116哩照,鍵名為KEY_POWER,去掉KEY_懒浮,鍵值轉(zhuǎn)換為小寫power這個(gè)值在后面會(huì)用到飘弧。不出意外,一般遙控器的電源鍵的鍵值都是power砚著。

現(xiàn)在來找一下event8這個(gè)設(shè)備在/dev/input/by-id下的軟連接叫什么次伶,運(yùn)行ls -l /dev/input/by-id/

total 0
lrwxrwxrwx 1 root root 9 Nov 23 22:40 usb-0627_2.4G_Composite_Devic-event-if01 -> ../event7
lrwxrwxrwx 1 root root 9 Nov 23 22:40 usb-0627_2.4G_Composite_Devic-event-kbd -> ../event5
lrwxrwxrwx 1 root root 9 Nov 23 22:40 usb-0627_2.4G_Composite_Devic-if01-event-mouse -> ../event6
lrwxrwxrwx 1 root root 9 Nov 23 22:40 usb-0627_2.4G_Composite_Devic-if01-mouse -> ../mouse3
lrwxrwxrwx 1 root root 9 Nov 23 22:40 usb-QEMU_QEMU_USB_Tablet_28754-0000:00:01.2-1-event-mouse -> ../event4
lrwxrwxrwx 1 root root 9 Nov 23 22:40 usb-QEMU_QEMU_USB_Tablet_28754-0000:00:01.2-1-mouse -> ../mouse2

這......udev沒有識(shí)別出來......準(zhǔn)確的講,是因?yàn)?code>udev的默認(rèn)規(guī)則/usr/lib/udev/rules.d/60-persistent-input.rules無法區(qū)分2.4G Composite Devic Consumer Control2.4G Composite Devic System Control這兩個(gè)設(shè)備稽穆,現(xiàn)象是每次關(guān)機(jī)再開機(jī)或每次卸載再插入接收器后冠王,usb-0627_2.4G_Composite_Devic-event-if01這個(gè)設(shè)備一會(huì)兒指向2.4G Composite Devic Consumer Control,一會(huì)兒指向2.4G Composite Devic System Control舌镶,所以我需要修改一下udev的規(guī)則版确,讓它能夠準(zhǔn)確識(shí)別出2.4G Composite Devic System Control『跽郏可能其他遙控器不存在此問題绒疗,需要你自行測試一下此問題存在不存在。

現(xiàn)在來讓udev能準(zhǔn)確識(shí)別2.4G Composite Devic System Control骂澄,運(yùn)行udevadm info --attribute-walk --name=/dev/input/event8(其中event8是根據(jù)上面evtest測試后知道的)吓蘑,輸出內(nèi)容:

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

looking at device '/devices/pci0000:00/0000:00:1e.0/0000:01:1b.0/usb2/2-1/2-1:1.1/0003:0627:697D.0003/input/input9/event8':
    KERNEL=="event8"
    SUBSYSTEM=="input"
    DRIVER==""
    ATTR{power/async}=="disabled"
    ATTR{power/control}=="auto"
    ATTR{power/runtime_active_kids}=="0"
    ATTR{power/runtime_active_time}=="0"
    ATTR{power/runtime_enabled}=="disabled"
    ATTR{power/runtime_status}=="unsupported"
    ATTR{power/runtime_suspended_time}=="0"
    ATTR{power/runtime_usage}=="0"

looking at parent device '/devices/pci0000:00/0000:00:1e.0/0000:01:1b.0/usb2/2-1/2-1:1.1/0003:0627:697D.0003/input/input9':
    KERNELS=="input9"
    SUBSYSTEMS=="input"
    DRIVERS==""
    ATTRS{capabilities/abs}=="0"
    ATTRS{capabilities/ev}=="13"
    ATTRS{capabilities/ff}=="0"
    ATTRS{capabilities/key}=="c000 10000000000000 0"
    ATTRS{capabilities/led}=="0"
    ATTRS{capabilities/msc}=="10"
    ATTRS{capabilities/rel}=="0"
    ATTRS{capabilities/snd}=="0"
    ATTRS{capabilities/sw}=="0"
    ATTRS{id/bustype}=="0003"
    ATTRS{id/product}=="697d"
    ATTRS{id/vendor}=="0627"
    ATTRS{id/version}=="0110"
    ATTRS{inhibited}=="0"
    ATTRS{name}=="2.4G Composite Devic System Control"
    ATTRS{phys}=="usb-0000:01:1b.0-1/input1"
    ATTRS{power/async}=="disabled"
    ATTRS{power/control}=="auto"
    ATTRS{power/runtime_active_kids}=="0"
    ATTRS{power/runtime_active_time}=="0"
    ATTRS{power/runtime_enabled}=="disabled"
    ATTRS{power/runtime_status}=="unsupported"
    ATTRS{power/runtime_suspended_time}=="0"
    ATTRS{power/runtime_usage}=="0"
    ATTRS{properties}=="0"
    ATTRS{uniq}==""

...下面其他信息此處略去

通過多次運(yùn)行udevadm info --attribute-walk --name=/dev/input/eventX(X更換為不同的設(shè)備編號(hào))可知,我的設(shè)備2.4G Composite Devic System Control可以通過ATTRS{name}這個(gè)屬性即可以進(jìn)行唯一識(shí)別坟冲。參考 udev 這個(gè)鏈接磨镶,新建/etc/udev/rules.d/01-system-control.rules,內(nèi)容如下:

ATTRS{name}=="2.4G Composite Devic System Control", SYMLINK+="input/by-id/usb-0627_2.4G_Composite_Devic-System-Control"

這種方式是寫死的健提,只針對這一個(gè)遙控器有效琳猫,復(fù)雜的規(guī)則咱也寫不來...當(dāng)然如果你想采用更智能的識(shí)別方式,可以參考 Writing udev rules編寫udev規(guī)則私痹。

其中SYMLINK+="input/by-id/usb-0627_2.4G_Composite_Devic-System-Control"是指讓udev/dev/input/by-id下自動(dòng)創(chuàng)建usb-0627_2.4G_Composite_Devic-System-Control脐嫂,其指向2.4G Composite Devic System Control這個(gè)設(shè)備。軟連接名稱你可以自行定義紊遵。

現(xiàn)在重啟下或者重插一下接收器账千,終于可以識(shí)別出來了:

ls -l /dev/input/by-id

## 生成了`usb-0627_2.4G_Composite_Devic-System-Control`這個(gè)軟連接
total 0
lrwxrwxrwx 1 root root 9 Nov 23 22:40 usb-0627_2.4G_Composite_Devic-event-if01 -> ../event7
lrwxrwxrwx 1 root root 9 Nov 23 22:40 usb-0627_2.4G_Composite_Devic-event-kbd -> ../event5
lrwxrwxrwx 1 root root 9 Nov 23 22:40 usb-0627_2.4G_Composite_Devic-System-Control -> ../event8
lrwxrwxrwx 1 root root 9 Nov 23 22:40 usb-0627_2.4G_Composite_Devic-if01-event-mouse -> ../event6
lrwxrwxrwx 1 root root 9 Nov 23 22:40 usb-0627_2.4G_Composite_Devic-if01-mouse -> ../mouse3
lrwxrwxrwx 1 root root 9 Nov 23 22:40 usb-QEMU_QEMU_USB_Tablet_28754-0000:00:01.2-1-event-mouse -> ../event4
lrwxrwxrwx 1 root root 9 Nov 23 22:40 usb-QEMU_QEMU_USB_Tablet_28754-0000:00:01.2-1-mouse -> ../mouse2

設(shè)置按鍵脅持

以下相關(guān)命令均為root用戶執(zhí)行的。

如果需要新建文件暗膜,請直接在Linux環(huán)境中使用nano XXXX創(chuàng)建匀奏,請不要在Windows環(huán)境中創(chuàng)建后再上傳。

  1. 下載我為PVE 7.X預(yù)編譯好的 evsieve学搜,其他版本不保證可用娃善,如果下載不了论衍,可以按照官方教程自己編譯。我會(huì)隨著Debian和evsieve版本的升級(jí)一直更新該文件聚磺,請及時(shí)在這個(gè)倉庫查看更新情況:devome/files@github

    wget https://raw.githubusercontent.com/devome/files/master/evsieve/evsieve -O /usr/local/bin/evsieve
    chmod +x /usr/local/bin/evsieve
    
    ## 安裝evsieve的運(yùn)行依賴
    apt install libevdev2
    
  2. 按照《PVE 直接安裝最新版 Kodi》安裝好Kodi饲齐,建議按非root用戶設(shè)置好/etc/systemd/system/kodi.service,注意含有ExecStartExecStop這兩行咧最。如果你不需要Kodi開機(jī)自動(dòng)啟動(dòng)捂人,那么創(chuàng)建好這個(gè)文件就好了,不需要運(yùn)行systemctl enable --now kodi.service矢沿。

  3. 新建一個(gè)用來自動(dòng)判斷是啟動(dòng)Kodi還是關(guān)閉Kodi的腳本/usr/local/bin/kodi-power.sh滥搭,后續(xù)由evsieve來使用,內(nèi)容如下:

    #!/usr/bin/env bash
    
    export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    
    if [[ -z $(ps -ef | grep "kodi.bin" | grep -v "grep") ]]; then   ## 如果kodi還沒有啟動(dòng)捣鲸,那么就啟動(dòng)它
        systemctl start kodi.service
    else   ## 如果kodi已經(jīng)啟動(dòng)了瑟匆,那么就停止它
        systemctl stop kodi.service
    fi
    

    注:停止Kodi這一行,相比使用systemctl stop kodi.service栽惶,更推薦使用kodi-send愁溜,詳見:kodi-send使用相關(guān)說明

    注意增加可執(zhí)行權(quán)限:chmod +x /usr/local/bin/kodi-power.sh外厂。

  4. 根據(jù) evsieve 的說明冕象,在運(yùn)行evsieve時(shí),它所要脅持的設(shè)備必須已經(jīng)插入了汁蝶,但是我又希望evsieve能夠開機(jī)自動(dòng)運(yùn)行渐扮,所以我需要在正式運(yùn)行前先確保2.4G Composite Devic System Control這個(gè)設(shè)備已經(jīng)插入。這項(xiàng)工作就交給腳本來判斷吧掖棉,新建/usr/local/bin/evsieve.sh墓律,內(nèi)容如下(注意按照注釋修改target_hijack_input_devicetarget_hijack_button):

    #!/usr/bin/env bash
    
    export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    
    ## 要脅持的目標(biāo)設(shè)備的絕對路徑,請注意修改成自己的
    ## 不要直接寫/dev/input/eventX幔亥,而要寫/dev/input/by-id下的設(shè)備
    target_hijack_input_device="/dev/input/by-id/usb-0627_2.4G_Composite_Devic-System-Control"
    
    ## 要脅持的按鍵的鍵名耻讽,請注意修改成你獲取到的,不出意外帕棉,一般遙控器的電源鍵的鍵值都是power
    target_hijack_button="power"
    
    ###### 以下無需修改 ######
    ## 先檢測 target_hijack_input_device 是否已經(jīng)存在
    while :; do
        if [[ -L "$target_hijack_input_device" ]]; then
            break
        else
            echo "The '$target_hijack_input_device' is not inserted, wait 2 seconds..."
            sleep 2
        fi
    done
    
    ## 執(zhí)行電源鍵脅持针肥,當(dāng)按下指定鍵時(shí),轉(zhuǎn)換為運(yùn)行腳本/usr/local/bin/kodi-power.sh笤昨,詳細(xì)用法請見:https://github.com/KarsMulder/evsieve
    exec evsieve \
        --input "$target_hijack_input_device" grab persist=reopen \
        --hook key:$target_hijack_button exec-shell="/usr/local/bin/kodi-power.sh" \
        --block key:$target_hijack_button
    

    該腳本同樣需要可執(zhí)行權(quán)限:chmod +x /usr/local/bin/evsieve.sh祖驱。

  5. 新建/etc/systemd/system/evsieve.service,內(nèi)容如下:

    [Unit]
    Description = Run evsieve
    Requires = systemd-udevd.service
    After = systemd-udevd.service
    Wants = systemd-udevd.service
    
    [Service]
    User = root
    Group = root
    ExecStart = /usr/local/bin/evsieve.sh
    ExecStop = /usr/bin/killall --user root --exact --wait evsieve
    TimeoutStartSec = infinity
    Restart = on-abort
    
    [Install]
    WantedBy = multi-user.target
    
  6. evsieve.service開機(jī)啟動(dòng)啟動(dòng)瞒窒。這個(gè)必須得開機(jī)自動(dòng)啟動(dòng),要不然脅持不了乡洼。運(yùn)行并確保evsieve.service已經(jīng)運(yùn)行好后崇裁,按一下遙控器的電源鍵來試一試效果吧匕坯。

    注意:因?yàn)镵odi程序比較大,無論是啟動(dòng)Kodi拔稳,還是關(guān)閉Kodi葛峻,系統(tǒng)都需要一定時(shí)間來處理,所以不要連續(xù)按電源鍵巴比,這樣只會(huì)讓系統(tǒng)混亂术奖。

    注意:如果evsieve.service沒有正常啟動(dòng),可能按下電源鍵會(huì)讓PVE關(guān)機(jī)轻绞。

    ## 設(shè)置開機(jī)自動(dòng)啟動(dòng)采记,并立即運(yùn)行起來
    systemctl enable --now evsieve.service
    
    ## 再看看是不是evsieve.service是不是啟動(dòng)好了
    systemctl status evsieve.service
    
    ## 如果像這樣就表示啟動(dòng)好啦
     evsieve.service - Run evsieve
         Loaded: loaded (/etc/systemd/system/evsieve.service; enabled; vendor preset: enabled)
         Active: active (running) since Thu 2022-11-24 18:11:27 CST; 36min ago
       Main PID: 1249 (evsieve)
          Tasks: 2 (limit: 72123)
         Memory: 1.8M
            CPU: 59ms
         CGroup: /system.slice/evsieve.service
                 └─1249 evsieve --input /dev/input/by-id/usb-0627_2.4G_Composite_Devic-System-Control grab persist=reopen --hook key:power exec-shell=/usr/local/bin/kodi-power.sh --block key:power
    11月 24 18:11:27 pve systemd[1]: Started Run evsieve.
    
  7. 有些遙控器的返回鍵不是真正的返回鍵,而是退出鍵政勃,會(huì)直接退出到主菜單唧龄,而不是返回到上一層。如果不習(xí)慣這樣的操作方式奸远,那么我們可以仍然借助evsieve這個(gè)工具來實(shí)現(xiàn)按鍵的轉(zhuǎn)換既棺。詳見 轉(zhuǎn)換遙控器的退出鍵為返回鍵

總結(jié)

通過本教程懒叛,PVE直接安裝Kodi也變得很好用了丸冕,就像使用電視盒子/LibreELEC/CoreELEC一樣,實(shí)現(xiàn)遙控器啟動(dòng)/停止薛窥。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末晨仑,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子拆檬,更是在濱河造成了極大的恐慌洪己,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件竟贯,死亡現(xiàn)場離奇詭異答捕,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)屑那,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門拱镐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人持际,你說我怎么就攤上這事沃琅。” “怎么了蜘欲?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵益眉,是天一觀的道長。 經(jīng)常有香客問我,道長郭脂,這世上最難降的妖魔是什么年碘? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮展鸡,結(jié)果婚禮上屿衅,老公的妹妹穿的比我還像新娘。我一直安慰自己莹弊,他們只是感情好涤久,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著忍弛,像睡著了一般响迂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上剧罩,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天栓拜,我揣著相機(jī)與錄音,去河邊找鬼惠昔。 笑死幕与,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的镇防。 我是一名探鬼主播啦鸣,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼来氧!你這毒婦竟也來了诫给?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤啦扬,失蹤者是張志新(化名)和其女友劉穎中狂,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體扑毡,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡胃榕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瞄摊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片勋又。...
    茶點(diǎn)故事閱讀 38,018評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖换帜,靈堂內(nèi)的尸體忽然破棺而出楔壤,到底是詐尸還是另有隱情,我是刑警寧澤惯驼,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布蹲嚣,位于F島的核電站递瑰,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏端铛。R本人自食惡果不足惜泣矛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一疲眷、第九天 我趴在偏房一處隱蔽的房頂上張望禾蚕。 院中可真熱鬧,春花似錦狂丝、人聲如沸换淆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽倍试。三九已至,卻和暖如春蛋哭,著一層夾襖步出監(jiān)牢的瞬間县习,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工谆趾, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留躁愿,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓沪蓬,卻偏偏與公主長得像彤钟,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子跷叉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容