요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
Macro, light와 host command
sysfs-driver-hid-roccat-isku:91-153configuration timestamp, profile별 backlight, 최대 500 keystroke macro, device reset, read selector, EasyShift와 temporary color scheme command의 payload contract를 정의합니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/isku/roccatisku<minor>/actual_profile
Date: June 2011
Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
Description: The integer value of this attribute ranges from 0-4.
When read, this attribute returns the number of the actual
profile. This value is persistent, so its equivalent to the
profile that's active when the device is powered on next time.
When written, this file sets the number of the startup profile
and the device activates this profile immediately.
Users: http://roccat.sourceforge.net
What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/isku/roccatisku<minor>/info
Date: June 2011
Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
Description: When read, this file returns general data like firmware version.
The data is 6 bytes long.
This file is readonly.
Users: http://roccat.sourceforge.net
What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/isku/roccatisku<minor>/key_mask
Date: June 2011
Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
Description: When written, this file lets one deactivate certain keys like
windows and application keys, to prevent accidental presses.
Profile number for which this settings occur is included in
written data. The data has to be 6 bytes long.
Before reading this file, control has to be written to select
which profile to read.
Users: http://roccat.sourceforge.net
What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/isku/roccatisku<minor>/keys_capslock
Date: June 2011
Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
Description: When written, this file lets one set the function of the
capslock key for a specific profile. Profile number is included
in written data. The data has to be 6 bytes long.
Before reading this file, control has to be written to select
which profile to read.
Users: http://roccat.sourceforge.net
What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/isku/roccatisku<minor>/keys_easyzone
Date: June 2011
Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
Description: When written, this file lets one set the function of the
easyzone keys for a specific profile. Profile number is included
in written data. The data has to be 65 bytes long.
Before reading this file, control has to be written to select
which profile to read.
Users: http://roccat.sourceforge.net
What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/isku/roccatisku<minor>/keys_function
Date: June 2011
Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
Description: When written, this file lets one set the function of the
function keys for a specific profile. Profile number is included
in written data. The data has to be 41 bytes long.
Before reading this file, control has to be written to select
which profile to read.
Users: http://roccat.sourceforge.net
What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/isku/roccatisku<minor>/keys_macro
Date: June 2011
Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
Description: When written, this file lets one set the function of the macro
keys for a specific profile. Profile number is included in
written data. The data has to be 35 bytes long.
Before reading this file, control has to be written to select
which profile to read.
Users: http://roccat.sourceforge.net
What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/isku/roccatisku<minor>/keys_media
Date: June 2011
Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
Description: When written, this file lets one set the function of the media
keys for a specific profile. Profile number is included in
written data. The data has to be 29 bytes long.
Before reading this file, control has to be written to select
which profile to read.
Users: http://roccat.sourceforge.net
What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/isku/roccatisku<minor>/keys_thumbster
Date: June 2011
Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
Description: When written, this file lets one set the function of the
thumbster keys for a specific profile. Profile number is included
in written data. The data has to be 23 bytes long.
Before reading this file, control has to be written to select
which profile to read.
Users: http://roccat.sourceforge.net
What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/isku/roccatisku<minor>/last_set
Date: June 2011
Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
Description: When written, this file lets one set the time in secs since
epoch in which the last configuration took place.
The data has to be 20 bytes long.
Users: http://roccat.sourceforge.net
What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/isku/roccatisku<minor>/light
Date: June 2011
Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
Description: When written, this file lets one set the backlight intensity for
a specific profile. Profile number is included in written data.
The data has to be 10 bytes long for Isku, IskuFX needs 16 bytes
of data.
Before reading this file, control has to be written to select
which profile to read.
Users: http://roccat.sourceforge.net
What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/isku/roccatisku<minor>/macro
Date: June 2011
Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
Description: When written, this file lets one store macros with max 500
keystrokes for a specific button for a specific profile.
Button and profile numbers are included in written data.
The data has to be 2083 bytes long.
Before reading this file, control has to be written to select
which profile and key to read.
Users: http://roccat.sourceforge.net
What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/isku/roccatisku<minor>/reset
Date: November 2012
Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
Description: When written, this file lets one reset the device.
The data has to be 3 bytes long.
This file is writeonly.
Users: http://roccat.sourceforge.net
What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/isku/roccatisku<minor>/control
Date: June 2011
Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
Description: When written, this file lets one select which data from which
profile will be read next. The data has to be 3 bytes long.
This file is writeonly.
Users: http://roccat.sourceforge.net
What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/isku/roccatisku<minor>/talk
Date: June 2011
Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
Description: When written, this file lets one trigger easyshift functionality
from the host.
The data has to be 16 bytes long.
This file is writeonly.
Users: http://roccat.sourceforge.net
What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/isku/roccatisku<minor>/talkfx
Date: February 2013
Contact: Stefan Achatz <erazor_de@users.sourceforge.net>
Description: When written, this file lets one trigger temporary color schemes
from the host.
The data has to be 16 bytes long.
This file is writeonly.
Users: http://roccat.sourceforge.net
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
공통 경로, actual_profile과 info
1-18BASE=/sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/isku/roccatisku<minor>
이 문서의 모든 attribute는 위 BASE 바로 아래에 있다. Date는 별도 표시가 없는 한 2011년 6월, contact는 Stefan Achatz <erazor_de@users.sourceforge.net>, user는 http://roccat.sourceforge.net다.
$BASE/actual_profile
$BASE/info
| attribute | 값·길이 | access | 의미 |
|---|---|---|---|
| actual_profile | integer 0-4 | read/write | 현재 profile과 다음 power-on 때 사용할 startup profile |
| info | 6 byte | read-only | firmware version을 포함한 일반 device data |
actual_profile을 읽으면 현재 profile 번호를 반환한다. 값은 persistent하므로 다음에 device power를 켤 때 활성화될 profile과 같다. 값을 쓰면 startup profile 번호를 저장하고 device가 그 profile을 즉시 활성화한다.
info를 읽으면 firmware version 같은 일반 data 6 byte를 반환한다.
Profile별 key 설정
20-89$BASE/key_mask
$BASE/keys_capslock
$BASE/keys_easyzone
$BASE/keys_function
$BASE/keys_macro
$BASE/keys_media
$BASE/keys_thumbster
| attribute | payload | 설정 대상 |
|---|---|---|
| key_mask | 6 byte | Windows·application key 같은 특정 key 비활성화 |
| keys_capslock | 6 byte | Caps Lock key 기능 |
| keys_easyzone | 65 byte | EasyZone key 기능 |
| keys_function | 41 byte | function key 기능 |
| keys_macro | 35 byte | macro key 기능 |
| keys_media | 29 byte | media key 기능 |
| keys_thumbster | 23 byte | thumbster key 기능 |
key_mask를 쓰면 Windows key와 application key처럼 실수로 눌렀을 때 방해가 되는 특정 key를 비활성화한다. 적용할 profile 번호는 6-byte write data에 포함된다.
keys_capslock, keys_easyzone, keys_function, keys_macro, keys_media, keys_thumbster를 쓰면 각각 특정 profile의 해당 key group 기능을 설정한다. 모든 payload에는 profile 번호가 포함된다.
이 일곱 file을 읽기 전에는 control에 먼저 값을 써서 어느 profile data를 읽을지 선택해야 한다.
last_set, light와 macro
91-119$BASE/last_set
$BASE/light
$BASE/macro
| attribute | payload | profile 선택 | 의미 |
|---|---|---|---|
| last_set | 20 byte | payload contract에 따름 | 마지막 configuration 시각의 epoch seconds |
| light | Isku 10 byte / IskuFX 16 byte | payload에 profile 번호 포함 | profile별 backlight intensity |
| macro | 2083 byte | payload에 profile·button 번호 포함 | 특정 button에 최대 500 keystroke macro 저장 |
last_set에 쓰면 마지막 configuration이 수행된 시각을 Unix epoch 이후 seconds 값으로 설정한다. write data 길이는 20 byte여야 한다.
light에 쓰면 특정 profile의 backlight intensity를 설정한다. profile 번호는 payload에 포함된다. Isku payload는 10 byte이고 IskuFX는 16 byte다. 읽기 전에는 control에 써서 profile을 선택해야 한다.
macro에 쓰면 특정 profile의 특정 button에 최대 500 keystroke의 macro를 저장한다. button 번호와 profile 번호가 2083-byte payload에 포함된다. 읽기 전에는 control을 통해 읽을 profile과 key를 모두 선택해야 한다.
reset, control, talk와 talkfx
121-153$BASE/reset
$BASE/control
$BASE/talk
$BASE/talkfx
| attribute | Date | payload | access | 동작 |
|---|---|---|---|---|
| reset | 2012년 11월 | 3 byte | write-only | device reset |
| control | 2011년 6월 | 3 byte | write-only | 다음 read가 가져올 profile과 data 선택 |
| talk | 2011년 6월 | 16 byte | write-only | host에서 EasyShift 기능 trigger |
| talkfx | 2013년 2월 | 16 byte | write-only | host에서 temporary color scheme trigger |
reset에 정확히 3 byte를 쓰면 device를 reset한다.
control에 3 byte를 쓰면 다음 read에서 어느 profile의 어떤 data를 가져올지 선택한다. profile별 file을 읽기 전에 사용하는 selector다.
talk에 16 byte를 쓰면 host가 EasyShift 기능을 trigger한다. talkfx에 16 byte를 쓰면 host가 임시 color scheme을 trigger한다.
Persistent profile과 profile별 key map
sysfs-driver-hid-roccat-isku:1-890-4 profile을 device에 영구 저장하고 key mask, Caps Lock, EasyZone, function, macro, media, thumbster key assignment를 고정 길이 binary payload로 읽고 씁니다.