[Mac] 초기 마우스/키보드 설정

마우스

마우스 스크롤 방향 바꾸기

  • “시스템 환경설정” / “마우스” / “스크롤 방향: 자연스럽게” 체크 해제

Logitech Options 설치 (Logitech MX Master 2s, MX Vertical, Craft 키보드 사용 시)

키보드

키보드 지연 시간 설정

  1. “시스템 환경 설정” / “키보드” / “키보드”
  2. “키 반복”을 가장 오른쪽 “빠르게”
  3. “반복 지연 시간”을 가장 오른쪽 “짧게”

Karabiner-Element 설치

  1. Karabiner-Element 사이트에서 다운로드 받아 설치
  2. “시스템 환경 설정” / “보안 및 개인 정보 보호” / “개인 정보 보호” / “입력 모니터링”에 karabiner_grabber와 karabiner_observer 둘 모두 체크

Caps Lock으로 한영 전환 시 지연 없애기

  1. “Karabiner Element Preferences” / “Simple Modifications” / “For all devices” 에서 “Add Item”, 왼쪽 “—-” 를 누른 후, “Modifier keys” / “caps_lock”, 오른쪽 “—-” 를 누른 후, “To key”에 “Function keys” / “f19”
  2. “시스템 환경 설정” / “키보드” / “단축키” / “입력 소스”에서 “입력 메뉴에서 다음 소스 선택”의 오른쪽에 있는 단축키를 선택하고 Caps Lock 키를 눌러 “F19″로 설정.

외부 키보드 사용 시 Command 키와 Option 키 바꾸기

  1. “Karabiner Element Preferences” / “Simple Modifications” 에서 외부 키보드, 예를 들면 “REALFORCE_1 (Topre Coperation)” 을 선택
  2. “From key”에 “Modifier keys” / “left_option”, “To key”에 “Modifier keys” / “left_command”
  3. “From key”에 “Modifier keys” / “left_command”, “To key”에 “Modifier keys” / “left_option”

외부 키보드 사용 시 오른쪽 Alt(Option)키를 한영 전환키로 바꾸기

  1. “Karabiner Element Preferences” / “Simple Modifications” 에서 외부 키보드, 예를 들면 “REALFORCE_1 (Topre Coperation)” 을 선택
  2. “From key”에 “Modifier keys” / “right_option”, “To key”에 “Function keys” / “f19”

외부 키보드에 한영키가 있는 경우

  1. “Karabiner Element Preferences” / “Simple Modifications” 에서 외부 키보드, 예를 들면 “REALFORCE_1 (Topre Coperation)” 을 선택
  2. “From key”에 “International keys” / “lang1”, “To key”에 “Function keys” / “f19”

PC-Style Home / End 키 동작

  1. “Karabiner Element Preferences” / “Complex Modifications” / “Add rule”을 선택
  2. “Import more rules from the Internet (Open a web browser)”
  3. “pc style Shortcuts”를 입력
  4. “PC-Style Shortcuts”의 오른쪽 “Import” 버튼을 누른 후 “Import”
  5. 추가된 “PC-Style Shortcuts”의 rule 중 “Home key to the beginning of the line (Control + a)” 옆 “+ Enable”
  6. 추가된 “PC-Style Shortcuts”의 rule 중 “End key to the end of the line (Control + e)” 옆 “+ Enable”
  7. 추가된 “PC-Style Shortcuts”의 rule 중 “Home key to the beginning of the sentence (Command + Left). Doesnt work in terminal” 옆 “+ Enable”
  8. 추가된 “PC-Style Shortcuts”의 rule 중 “End key to the end of the sentence (Command + Right). Doesnt work in terminal” 옆 “+ Enable”
  9. 추가된 “PC-Style Shortcuts”의 rule 중 “PC-Style Home/End” 옆 “+ Enable”
  10. 위의 Enable 순서가 바뀌지 않도록 한다.

[Python] Selenium 사용법

webdriver 다운로드

Selenium 사용전 사용하는 브라우저에 맞는 webdriver를 다운로드받아서 해당 파일이 있는 곳을 PATH에 추가해두는 것이 좋다. https://pypi.org/project/selenium/ 의 Drivers 섹션을 참고.

특정 페이지를 열기

from selenium import webdriver

driver = webdriver.Firefox()
driver.get("blog.dasomoli.org")

페이지를 열고 난 후 기다리기

어느 페이지를 열고 난 후 동작을 시작하려면 해당 페이지가 열렸을 때 나타나는 element를 기다려서 동작을 시작해야 한다. link text라면 다음과 같은 식으로 기다릴 수 있다. 아래에서 20은 20초를 의미한다. 첫번째 인자가 괄호로 둘러싸여 있음에 유의하라.

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.LINK_TEXT, "Ult-Build-1")))

다음처럼 어느 태그가 나타나길 기다릴 수도 있다.

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

element = WebDriverWait(driver, 10).until(EC.text_to_be_present_in_element((By.TAG_NAME, "h1"), "Project INTEGRATED_BUILD_SYSTEM_TOOL"))

페이지 내의 특정 element 찾기

element = driver.find_element_by_name("userName")

element가 찾기 쉽게 id나, class name 등으로 되어 있다면 find_element_by_id() 혹은 find_element_by_class_name() 등으로 쉽게 찾을 수 있다. 아니라면 tag name 등으로 찾은 후 돌리면서 찾아본다. 함수명이 element가 아닌 elements 임에 유의하라.

import re

ultp = re.compile('^Ult-Build-[12].*')
ult_req = { }

elements = driver.find_elements_by_tag_name("tbody")
for tag in elements:
    if ultp.match(tag.text):
        wordlist = tag.text.split()
        if len(wordlist) >= 2:
            ult_req[wordlist[0]] = wordlist[1]

키 입력이나 클릭하기

찾은 element가 input과 같은 입력이 가능한 element라면 바로 send_keys()로 입력이 가능하다.

from selenium.webdriver.common.keys import Keys

element = driver.find_element_by_id("j_username")
element.send_keys("dasomoli")

element = driver.find_element_by_name("j_password")
element.send_keys("password", Keys.ENTER)

직접 element를 찾기 어렵다면 근처 element를 찾은 후 click한 후 key를 입력할 수도 있다.

from selenium.webdriver.common.action_chains import ActionChains

elements = driver.find_elements_by_class_name("setting-name")
for element in elements:
    if element.text == "P4_Shelve_CLs":
        shelve_element = element

actions = ActionChains(driver)
actions.move_to_element_with_offset(shelve_element, shelve_element.rect['width'] + 5, shelve_element.rect['height'] / 2).click().send_keys("12345678", Keys.ENTER)
actions.perform()

send_keys() 대신 click() 을 이용하면 마우스 클릭이 가능하다. 마우스 클릭 지점을 찾기 힘들 때는 context_click()을 사용하면 우클릭되는데, 이 때 나타나는 context menu로 클릭 지점을 대충 파악할 수 있다.

마우스 클릭 등으로 선택된 element를 얻기

actions = ActionChains(driver)
actions.move_to_element_with_offset(workspace_element, workspace_element.rect['width'] + 23, workspace_element.rect['height'] / 2).click()
actions.perform()
element = driver.switch_to.active_element

select form에서 값 선택

from selenium.webdriver.support.ui import Select

select = Select(element)
if value != "":
    select.select_by_visible_text(value)
else:
    select.select_by_index(0)

참고

  1. Selenium with Python – Read the Docs
  2. Selenium Documentation
  3. Selenium Browser Automation Project (한글 버전도 있다)

Logitech G1과 G403 wireless 마우스 크기 비교

딜레이 없는 괜찮은 무선 마우스가 하나 갖고 싶다고 생각하던 중에 Black Friday를 맞아 로지텍 G403과 G900을 싸게 팔길래 고민고민하던 중에 원래 쓰던 G1과 크기 비교를 하고 싶은데, 찾아봐도 없길래 내가 올린다. 결국 내가 산 건 G403.

G1에 비해 좀 크고, 묵직하다.  손이 작은 나도 G1을 잡으면 마우스 등이 손바닥 안쪽의 상단까지만 닿는데, G403은 조금 더 깊이 닿고, 마우스 등이 손바닥 안쪽의 상단 3/4이 닿는다. 모양이 달라서 쥐는 방법이 좀 달라진다.

G1과 G403의 크기 비교

G1과 G403의 크기 비교

G1과 G403의 크기 비교

G1과 G403의 크기 비교

StrokesPlus

네이버 툴바 같은 AddIn을 쓸 수 없을 때, 데스크탑 내 Global하게 사용할 수 있는 Mouse gestures 프로그램.
제스처 없이 웹서핑을 못하게 되어 버렸다….
L 모양일 때, Close Window/Tab을 하려면, 설치 후 설정을 바꾸어야 한다.

다운로드는 요즘은 https://www.strokesplus.net/ 에서 하는 것 같다.

KVM 스위치 ATEN CS692 사용법

HDMI/USB/Keyboard/Audio 를 두개 연결해서 전환할 수 있는 KVM 스위치 ATEN CS692를 퇴사한 동료가 쓰던 것을 물려받아(?) 쓰고 있는데,

이상하게 특정 마우스만 꽂으면 이상하게 튀고, 웨이브 모양을 그리며 움직이는 거다;; 상하로 움직이는데 좌우로 움직이고 막… 다른 마우스 꽂으면 잘 되고.. -_-;;

그래서 접지나 호환성 문제가 있나 하고 넘어갔다가, 오늘 매뉴얼을 찾아 읽어보니 Mouse Emulation mode가 켜져 있으면 그렇더라. 끄니까 잘된다.

KVM에 핫키 설정이 있었다는 사실을 모르고, 스위치로만 눌렀더니…

어쩐지 컨트롤키랑 여러개 막 치다보면 키보드 램프가 돌아가며 깜박깜박하고, 어떨 땐 막 제멋대로 화면 전환이 되더라니… 램프 깜박거릴 때 ESC 누르기 귀찮았는데… 어쩐지… 어쩐지…

원래는 Scroll lock 두번 누르는 것으로 시작되는 명령 모드가, Scroll lock을 Ctrl로 변경할 수도 있어서, 이게 Ctrl로 변경되어 있어서.. Ctrl키를 많이 쓰다보면 막 제멋대로….

[Scroll lock], [Scroll lock], [Enter] 하면 다른 화면 전환.

[Scroll lock], [Scroll lock], m, [Enter] 하면 Mouse emulation mode Enable / Disable.

[Scroll lock], [Scroll lock], w, [Enter] 하면 Switching mouse-port 라던가. 암튼, 휠 버튼 더블클릭으로 마우스 전환. 이건 Mouse emulation mode가 켜져 있어야 동작한다고 한다. 누르면 근데 아마 저절로 Mouse emulation mode가 On되는 듯.

[Scroll lock], [Scroll lock], x, [Enter] 하면 Scroll lock 두번 누를 때 Scroll lock 대신 Ctrl키를 사용할 수 있다.


모르거나 이상하면 매뉴얼을 읽어보자.