- vừa được xem lúc

[Linux Trick] Tự động tắt bàn phím laptop khi gắn bàn phím rời trên Linux

0 0 11

Người đăng: Thang Bui

Theo Viblo Asia

Có ai như mình không, đặc biệt rất thích mang laptop ra cafe ngồi gõ, không những thế mà lại còn thích dùng cả phím cơ nữa chứ. Thế nhưng đời không như là mơ, có những quán cà phê với bàn và diện tích rất nhỏ, thế nên việc để phím cơ lên laptop sẽ gây ra một tình trạng muôn thuở đó là...

Câu chuyện cấn phím 😵‍💫

Dẫn nhập

Và bài viết này, với một trick nhỏ sẽ giúp mọi người dứt điểm được tình trạng đó, bằng cách chạy script với duy nhất 1 logic đơn giản là:

  • Tắt phím internal của laptop khi phát hiện keyboard cần tìm được gắn vào
  • Bật lại phím internal của laptop khi keyboard cần tìm bị rút ra

Setup script theo logic đã đề cập

1. Tìm tên bàn phím

Trước tiên thì gõ lệnh đơn giản sau để tìm tên bàn phím của các bạn trước đã:

xinput list

Đây là mẫu output của laptop mình:

image.png

Okay bây giờ thì ta sẽ chỉ cần quan tâm đến cái nhánh có tên là Virtual core keyboard thôi nha:

  • Thằng XTEST thì không cần quan tâm tới
  • bàn phím internal của laptop sẽ có tên kiểu kiểu như đây: (thường là giống y chang)

AT Translated Set 2 keyboard

  • Tiếp đến, là bàn phím rời thường ở dưới cùng của mục, như của mình là Evision AKKO Keyboard, nhưng của các bạn sẽ là một cái tên khác, thường thì ta sẽ nhận qua brand bàn phím là nhanh nhất, như của mình là kit AKKO thì thấy có AKKO là xúc thôi.

Nếu không chắc chắn về tên phím rời của mình lắm thì các bạn có thể làm cái trò là: ngắt kết nối với phím rời, gõ xinput list lần 1, sau đó kết nối rồi gõ xinput list lần thứ 2 để check sự khác biệt ở hai output

Chúng ta note những cái tên này lại nha 😀

2. Tạo script thôi

Đầu tiên thì mình tạo file script tên tùy thích:

touch disable_laptop_keyboard.sh
chmod +x disable_laptop_keyboard.sh # để cấp quyền execute cho em nó

Thêm nội dung sau vào file disable_laptop_keyboard.sh:

Thay đổi giá trị tên bàn phím rời đã note ở bước 1 trong function check_external_keyboard. Check lại xem của AT_KEYBOARD_ID có trùng khớp với giá trị bên trên không, không thì mình chủ động đổi nhé.

#!/bin/bash # check xem ban phim roi co duoc ket noi khong
check_external_keyboard() { xinput list | grep -q 'Evision AKKO Keyboard'
} # id cua ban phim internal trong laptop
AT_KEYBOARD_ID='AT Translated Set 2 keyboard' while true; do if check_external_keyboard; then xinput disable "$AT_KEYBOARD_ID" else xinput enable "$AT_KEYBOARD_ID" fi sleep 1
done

Giải thích từng bước:

  • Đầu tiên mình check tên phím đã noted ở bước 1 có tồn tại trong xinput list không bằng cách đơn giản sau:
    • Mình đóng function cho lệnh này để check xem output có là empty hay không
xinput list | grep -q 'Evision AKKO Keyboard'
  • Gán biến internal laptop vào trong script

Thường thì chỉ khi giá trị mà bạn đã check khác thì mới cần thay đổi bước này

AT_KEYBOARD_ID='AT Translated Set 2 keyboard'
  • Sau đó thì ta tiến hành thực hiện logic đã đề cập ở phần dẫn nhập:
  1. Tắt phím internal của laptop khi phát hiện keyboard cần tìm được gắn vào, tức là if check_external_keyboard; then thực hiện tắt phím bằng lệnh sau:
if check_external_keyboard; then xinput disable "$AT_KEYBOARD_ID"
  1. Bật lại phím internal của laptop khi keyboard cần tìm bị rút ra, tức là else thực hiện bật phím bằng lệnh sau:
else xinput enable "$AT_KEYBOARD_ID"
  • Thực hiện việc check như này liên tục mỗi giây 1 lần, hoặc realtime thì bạn bỏ sleep 1 trong script nhé.

3. Thêm vào startup script

  1. Move file script đã tạo vào /etc/init.d/:
sudo mv ./disable_internal_keyboard.sh /etc/init.d/disable_internal_keyboard

Lưu ý là khi move vào mình bỏ cái đuôi sh cho tiện gọi nha

  1. Update cho script này chạy startup (dùng cái tên script đã bỏ đuôi .sh ban nãy:
sudo update-rc.d disable_internal_keyboard defaults 100

Nếu cần thay đổi, thì con số 100 tức là thứ tự chạy script startup của mình thôi, mình hay dùng 100, 101, 102,....

  1. Reboot lại test thử thôi
sudo reboot

Chúc các bạn thành công nhé 🎉

Bình luận

Bài viết tương tự

- vừa được xem lúc

Docker: Chưa biết gì đến biết dùng (Phần 3: Docker-compose)

1. Mở đầu. . .

0 0 127

- vừa được xem lúc

Các command trên ubuntu (chiếm 80%) - phần 5

Hello 500 ae, sau 4 số trong seri này mình thấy có vẻ ae có hứng thú đọc chủ đề này ghê. Hi vọng những gì mình tìm hiểu được sẽ giúp ích được cho nhiều bạn hơn.

0 0 53

- vừa được xem lúc

Những lệnh command shell linux cơ bản có thể bạn chưa biết - Phần 1

Bài viết này sẽ liệt kê một số command cơ bản thường được dùng trong linux, tiện dụng cho các bạn khi sử dụng linux mà có thể bạn chưa biết. Tôi là ai, câu lệnh này sẽ cho bạn biết bạn đang sử dụng linux bằng tài khoản người dùng nào.

0 0 56

- vừa được xem lúc

Cách sử dụng lệnh SCP để truyền tệp an toàn

SCP (secure copy) là một tiện ích dòng lệnh cho phép bạn sao chép an toàn các tệp và thư mục giữa hai vị trí. . From your local system to a remote system. Between two remote systems from your local system.

0 0 57

- vừa được xem lúc

Người ta làm cách nào để backup thường xuyên thư mục rất lớn?

. Vấn đề về sao lưu thư mục lớn. Mình có lưu "sương sương" 300GB các tệp tin của người dùng upload lên, như hình ảnh hay các tệp đính kèm.

0 0 50

- vừa được xem lúc

Các command trên ubuntu (chiếm 80%) - phần 4

Sau một kì nghỉ tết trong thời buổi đại dịch vừa qua. Không còn những buổi dong chơi đi chúc tết nữa. Ở nhà ra số tiếp theo cho anh em đây. Dưới đây sẽ là 2 command được sử dụng nhiều nhất khi sử dụng file.

0 0 54